QnapとかSynologyの中級以上のモデルのNASだと単体でクラウドに転送してバックアップしたり出来るけど、ちょっと古いモデルとか低価格モデルでは機能提供されていなかったり、パフォーマンス不足でまともに動かず利用できない。
我が家でもSynologyの最新Atomモデルは普通にスタンドアローンで出来るけど、ちょっと型の古いQnapだと動くけど数百KB/sしかでないとかで使い物にならないので、さくらのVPSに主導させてやることにした。
基本構成としては、さくらのVPSと自宅のIX2215にIPSec VPNを張って、その上でNASをVPSにマウントして、rcloneでGoogleDriveに同期してしまうと言う方法。 安価なIX2025とかでも同じ設定でVPN張れるし、別記事を参考にすればRTX1000系でもOK。
まず、先の記事通り、VPSとIX2215までIPSecを張ってしまって、rcloneを導入する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
wget http://downloads.rclone.org/rclone-v1.26-linux-amd64.zip unzip rclone-v1.26-linux-amd64.zip cp ./rclone-v1.26-linux-amd64/rclone /usr/sbin/ rclone config #ここから対話形式 No remotes found - make a new one n) New remote q) Quit config n/q> n #新規接続先を作成 name> googledrive #接続先の識別名 What type of source is it? Choose a number from below 1) amazon cloud drive 2) b2 3) drive 4) dropbox 5) google cloud storage 6) swift 7) hubic 8) local 9) onedrive 10) s3 11) yandex type> 3 #driveがGoogleDriveの事 Google Application Client Id - leave blank normally. client_id> #不要 Google Application Client Secret - leave blank normally. client_secret> #不要 Remote config Use auto config? * Say Y if not sure * Say N if you are working on a remote or headless machine or Y didn't work y) Yes n) No y/n> n #Yだとローカル(VPS上)でブラウザを開いて認証、通常はクライアント側で操作するのでN If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?~秘密のコード~ Log in and authorize rclone for access Enter verification code> #上のリンクをローカルのブラウザにコピペして開いて、Googleの認証画面でDriveを使うアカウントで認証許可し、発行された認証コードをここにコピペする。 #あとは確認でOKして保存 |
これでrcloneの導入が完了。
このrcloneはユーザ単位で設定される(~/.rclone.confに保存)
1 2 3 4 |
mkdir /mnt/smb mount -t cifs //192.168.0.100/share /mnt/smb -o ro,user=user,password=password rclone mkdir googledrive:/nasbackup rclone copy /mnt/smb/ googledrive:/nasbackup/ --drive-chunk-size=2M --bwlimit=2M |
SambaでNASの共有をマウントして、rcloneコマンドでバックアップ用ディレクトリをGoogleDrive上に作って、共有ディレクトリを丸ごとコピーしてしまう。
drive-chunk-sizeは転送単位設定で、デフォルトだと細切れ過ぎてスピードが出ないので1M以上の値を設定する。 bwlimitで帯域を制限する(共有サービスだから他のユーザを圧迫しないようにするのと、家のアクセス回線の帯域も圧迫しないようにするため)
適当に自動バックアップスクリプトを書くなら・・・
1 2 3 4 5 6 7 8 9 10 |
SHARE="//192.168.0.100/share" CREDENTIAL="~/.smbcredential" MOUNTED=`mount | grep $SHARE | wc -l` if [ $MOUNTED -eq 1 ]; then echo "target mounted." else mount -t cifs $SHARE /mnt/smb -o ro,credentials=$CREDENTIAL rclone copy /mnt/smb googledrive:/nasbackup/ --drive-chunk-size=2M --bwlimit=2M umount $SHARE fi |
こんな感じだろうか。
当該の共有がマウント済みなら前回のバックアップが終わっていないと判定して終了させる扱いをいれて、あとは普通にマウント、バックアップ、アンマウントを行うだけ。
~/.smbcredentialの中身は
username=nas user
password=nas password
みたいに、NASのSMBユーザとパスワードを書いておく(マウントオプションでuser/passwordを書くと他のユーザがmountコマンドを打ったときに丸見えになるので、他のユーザが見えないパーミッションのcredentialsファイルに設定する)
(730)