rcloneによるファイル同期

rcloneはgoogle driveやdropboxとファイル同期することができるツール。 Linuxのコマンドラインからも利用できるのでとてもありがたい。

いろいろな機能があるが、今回は自分が使う機能についてだけメモしておく。主にバックアップに活用し、定期的にバックアップする感じで使う。

準備

まず、ストレージを設定する。確か下記のようなコマンドで対話的に設定できる。

$ rclone config

単なるコピー

上のように設定して、例えば"remote-storage"というNameのストレージを設定したとする。このとき、リモート上にファイルをコピーするにはこんな感じ。

$ rclone copy target remote-storage:/dir/path

これで、相対パスtargetをremote-storageの/dir/path以下にアップロードしてくれる。 targetはディレクトリを指定すると、配下のサブディレクトリやファイルを含めてアップロードしてくれる。

暗号化してコピー

rcloneには暗号化する機能もついており、cryptと言われる。

crypt機能はcopy時のオプションなどではなく、remote設定の1つとして扱われるようなので、前と同様にconfigから設定をする必要がある。

$ rclone config

新しい設定を追加する。

> n

cryptを選択する。

Storage> crypt

暗号化ファイルのアップロード先のストレージを設定する。下記の例は、remote-storageの/backup/encryptedをアップロード先に指定している。

このとき注意したいのは、cryptではアップロードするファイルやディレクトリ名も暗号化できるが、例えば、/backup/ecryptedストレージ内に後から/backup/encrypted/dir1みたいな場所の中にアップロードしたいと思って、 “rclone copy … remote-encrypted:/dir1"みたいにすると、ディレクトリ暗号化している場合はdir1部分も暗号化されてしまうので、意図したとおりdir1の中にはアップロードされない。

remote> remote-storage:/backup/encrypted

ファイル名の暗号化方式を選べる。デフォルトではstandardになっている。

  / Encrypt the filenames.
1 | See the docs for the details.
  \ (standard)
2 / Very simple filename obfuscation.
  \ (obfuscate)
  / Don't encrypt the file names.
3 | Adds a ".bin", or "suffix" extension only.
  \ (off)

次にディレクトリ名の暗号化についても聞かれるので、一旦trueを選択する。

> true

パスワードの設定は、1つまたは2つ設定できる。2つ目はoptionalのようだが、推奨とのこと。手動入力か自動生成かを選べる。今回は両方を手動入力する。

advanced configは不要なので、そのままNoを選択する。

> no

最後に設定を保存して終了する。

y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

設定完了したら、下記のようにしてcopyでアップロードできる。

$ rclone copy target remote-encrypted:/

ダウンロードはこう。

$ rclone copy remote-encrypted:/ .

このとき暗号化は自動的に解除される。