標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

SAKURA Pocket を FTP over tls/rclone/restic 経由でバックアップストレージにする

コストパフォーマンス

100GB あたり

プラン 金額 月額
OneDrive(月契約) ¥260-/月 ¥260-
OneDrive(年契約) 2,440/年 ¥204
さくらのレンタルサーバ
(ライトプラン)
¥1,571-/年 ¥131

なので、FTP しか使わないなら十分安い。

自分の場合、CGIサーバを一つ維持しなければいけなかったが、ディスク容量100GBがほぼ無駄になっていたので、それを活用する意味もある。ただし、さくらのレンタルサーバーは昔からあるプランであるため、ファイル名文字コードEUC-JP だったり仕様に古いところがある

FTP over tls を使う

素のFTPだと、転送量がGBクラスのダウンロード時にエラーが発生しがちになる。信頼性確保のため、FTP over tls 接続を使う

rclone に登録する

  1. $ rclone config
  2. メニュー: Current remotes: e/n/d/r/c/s/q>n (接続先を新規作成)
  3. name> → 接続先の名前(なんでもよい。例: sakura)
  4. Storage>16 (FTP)
  5. host> → サーバ名 (*.sakura.ne.jp の方)
  6. port> → Enterのみでよい
  7. FTP username. → ユーザ名
  8. FTP password. → パスワード
  9. Use Implicit FTPS tls>false
  10. explicit_tls>true
  11. Edit advanced config? y/n>n
  12. Keep this "sakura" remote? y/e/d>y
  13. メニュー: Current remotes: e/n/d/r/c/s/q>q

適当なファイルをローカルにコピーしてテスト

$ rclone copy sakura:sakura_pocket/foo/bar .

sakura_pocket は、さくらのウェブツール さくらぽけっと で参照できるエリア。他でもよいが、こちらだとウェブブラウザでのチェックもしやすい。

restic を設定する

バックアップツールの restic から SAKURA Pocket を rclone 経由で使うには、

set "RESTIC_REPOSITORY=rclone:sakura:sakura_pocket/(さくらポケットのディレクトリ)"
set "RESTIC_PASSWORD=(restic を初期化した時のパスワード:SAKURAではない)"

と設定する。nyagos を使っている場合は .nyagos で次のように設定すればよい。

nyagos.env.RESTIC_REPOSITORY="rclone:sakura:sakura_pocket/(さくらポケットのディレクトリ)"
nyagos.env.RESTIC_PASSWORD="(restic のパスワード)"

動作確認

pushd "%APPDATA%"
restic backup .minecraft
restic check   --read-data

check サブコマンドの --read-data オプションは全データをダウンロードしてくるので、指定は初回のみにしておいた方が無難 (毎回やると転送量が大きいので迷惑になる)

check snapshots, trees and blobs
[0:04] 100.00%  5 / 5 snapshots
read all data
[34:21] 100.00%  518 / 518 packs
no errors were found

よかった。tls なしの FTP でやってたとき、ここでエラーが表示されてしまっていたのだ。--upload-limit--download-limit などで転送速度を落してもダメだったので、一時はバックアップ先を OneDrive に変更していたのだが… tls を指定することで解決してよかった。あきらめきれず、未練がましくマニュアルをグダグダ見るのも無駄ではなかった。