Pogoplugに続きAmazonCloudDriveの無制限プランも終了を宣告されたため、自宅のNASの外部バックアップをどうしようか、昨年の秋頃から悩んでまして、忙しさにかまけている間にAmazonCloudDriveが2/26で契約満了してしまいました orz…
ただ、預けているファイルは180日間は保管してくれるようなので、昨日まで悠々と後釜を探してました。そこで見つけたラストサムライが「hubiC」でした。50ユーロ(6,500円程度)で1年間10TB貸してくれるので、うちのNASのバックアップには十分です。即契約。
その1 hubicfuse+rsync 編 (失敗しました)
事前準備
hubiCにログインして「My account」→「Developers」→「Add an application」を実行。「Last name」にアプリ名など「Redirection domain」に何かURLを入力して、生成されたIDとシークレットキーを保管しておく。(RedirectionDomainは具体的に何に使うのか分からなかった)
ReadyNAS102にhubicfuseをインストールする
SSHでログインしてインストール。ReadyNASはDebian系のOSなので
# apt-get install hubicfuse
configurationファイルの作成
/usr/share/doc/hubicfuse/README.Debianに説明によると下記内容のファイルを「$HOME/.cloudfuse」として作成するらしい。今回は「/root/.cloudfuse」とする。
username=[Hubic user e-mail] password=[Hubic password] client_id=[Hubic client id for the registered application] client_secret=[Hubic client secret for the registered application] redirect_uri=[Hubic redirect uri as registered for the application]
マウントしてみる
README.Debianによると下記のコマンドでマウントするらしい。
# hubicfuse /mnt/hubic -o noauto_cache,sync_read,allow_other
コピー速度
試しに307,345KBのzipファイルをコピーしてみたところ216秒程度かかったので、毎秒1.4MB程度の速度のようです。
rsyncでBroken pipe (32)
よし、あとはrsyncでバックアップしようと、試しに実行してみたところ、5GBを超える7zファイルをコピー中にどうしてもエラー終了する。–bwlimitや–timeoutオプションも色々試しても、早ければ30MB程度の進捗でエラー終了する。成功する場合も稀にあるが、次の大容量ファイルで結局エラーが出る。なぜだろう。ちょっと分からなかった。
はまってる時間も無いので方向転換
「rsync cloud backup」というキーワードでググると「rsync for cloud storage」というコンセプトのrcloneが出てきた。自分が今、やりたいことがそのままソフトウェアになっていました。最初からこれを使えば良かった orz… でも、ありがとう。作者さん。
その2 rclone 編 (成功しました)
事前準備
hubiCにログインして「My account」→「Developers」→「Add an application」を実行。「Last name」にアプリ名など「Redirection domain」にhttp://localhost:53682/を入力して、生成されたIDとシークレットキーを保管しておく。
rcloneのインストール
このときは1.39が最新だった。早速インストール。
wget https://downloads.rclone.org/rclone-v1.39-linux-arm.zip unzip rclone-v1.39-linux-arm.zip cp rclone-v1.39-linux-arm/rclone /usr/local/bin/
設定ファイルを作成
「rclone config」コマンドで対話形式で作成するのだが、Webブラウザが必須なので、SSHでログインしている状態では設定が完了できない。自分のWindowsパソコンで作業して、できたrclone.confをReadyNASにコピーすることにした。
※rclone.confの場所
Windows→ C:\Users\user_name\.config\rclone\rclone.conf
Debian→ /home/user_name/.config/rclone/rclone.conf
rclone config 2018/03/02 14:39:05 NOTICE: Config file "C:\\Users\\user_name\\.config\\rclone\\rclone.conf" not found - using defaults No remotes found - make a new one n) New remote s) Set configuration password q) Quit config n/s/q> n name> hubic Type of storage to configure. Choose a number from below, or type in your own value 1 / Amazon Drive \ "amazon cloud drive" 2 / Amazon S3 (also Dreamhost, Ceph, Minio) \ "s3" 3 / Backblaze B2 \ "b2" 4 / Box \ "box" 5 / Cache a remote \ "cache" 6 / Dropbox \ "dropbox" 7 / Encrypt/Decrypt a remote \ "crypt" 8 / FTP Connection \ "ftp" 9 / Google Cloud Storage (this is not Google Drive) \ "google cloud storage" 10 / Google Drive \ "drive" 11 / Hubic \ "hubic" 12 / Local Disk \ "local" 13 / Microsoft Azure Blob Storage \ "azureblob" 14 / Microsoft OneDrive \ "onedrive" 15 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH) \ "swift" 16 / Pcloud \ "pcloud" 17 / QingCloud Object Storage \ "qingstor" 18 / SSH/SFTP Connection \ "sftp" 19 / Webdav \ "webdav" 20 / Yandex Disk \ "yandex" 21 / http Connection \ "http" Storage> 11 Hubic Client Id - leave blank normally. client_id> xxxxxxxxxxxxxxx Hubic Client Secret - leave blank normally. client_secret> xxxxxxxxxxxxxxxxxxxxxxxx Remote config Make sure your Redirect URL is set to "http://localhost:53682/" in your custom config. Use auto config? * Say Y if not sure * Say N if you are working on a remote or headless machine y) Yes n) No y/n> y If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth Log in and authorize rclone for access Waiting for code... Got code -------------------- [hubic] client_id = xxxxxxxxxxxxxxx client_secret = xxxxxxxxxxxxxxxxxxxxxxxx token = {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxx","token_type":"Bearer","refresh_token":"xxxxxxxxxxxxxxx","expiry":"2018-03-02T20:39:46.0624465+09:00"} -------------------- y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> y
試しにhubiC上のディレクトリを一覧表示してみる
設定がちゃんとしていれば表示されるはず。
rclone lsd hubic:
試しにコピー
試しに先程の5GBの7zファイルが入ったディレクトリを同期してみたところ、1時間ちょっとで同期完了した。あれ、速い。マルチスレッドなのか、仕組みは良く分からないが、完了が早くて素晴らしい。思わぬ副産物。
rclone sync -v /data/public/test/ hubic:test/
シェルスクリプトの作成
viで/root/sh/backup.shを作成。cronで実行するのでフルパスで記述。うちのNASには “[作業用]” というテンポラリディレクトリがあるので、それは除外。あと隠しファイルも。
ちなみに-cオプションつけるとチェックサムによる差分比較になるらしい。
/usr/bin/rclone sync -v --exclude "\[作業用\]/**" --exclude ".**" /data/public/ hubic:BACKUP/
フルバックアップ
初回のフルバックアップは半月程度かかる計算になるので、増分バックアップのジョブを登録する前に実施する。
cronにジョブを登録
フルバックアップが完了したら、トラフィックの少なそうな毎朝3時の増分バックアップジョブを登録する。ログっぽいのも残す。
# crontab -e -u root
00 03 * * * /bin/sh /root/sh/backup.sh 2>&1 | tee /root/sh/backup.log