名古屋出身ソフトウェアエンジニアのブログ

Rclone で個人的によく使うコマンドまとめ

公開:
更新:

Rclone 本体の更新

Rclone を自己更新します。

ポータブルバイナリ版を使っている場合に便利です。パッケージマネージャーでインストールしている場合は使用非推奨です。

rclone selfupdate

設定ファイルの置き場所を確認

rclone config file

lsd

そのパスにあるディレクトリのみを列挙します。リモートの接続確認に便利です。

rclone lsd REMOTE:PATH

ハッシュリストの作成

対象ディレクトリのハッシュリストを作成します。ファイルと一緒に保管しておけば、後で完全性と欠落を検証できます。

例では SUM ファイルを対象ディレクトリの外に作成しています。

rclone hashsum sha1 ./ARCHIVE_DIR --output-file ARCHIVE-SHA1SUM.txt

ローカルならその場で計算されます。リモートが SHA-1 に対応していない場合は --download が必要です。

ハッシュリストから検証

ハッシュリストから、内容の完全性とファイルが揃っているかを検証できます。ファイルは書き換えません。

rclone checksum sha1 ARCHIVE-SHA1SUM.txt ./ARCHIVE_DIR

グローバルオプション1

いくつか使いたくなるであろうグローバルオプションがあります。

rclone sync SRC DEST --progress --delete-excluded \
  --local-encoding Raw \
  --no-unicode-normalization \
  --fix-case

--local-encoding は、ローカル側で扱えない文字を全角文字などに置き換える変換ルールです。デフォルトは OS ごとに異なり、Windows では * が * に全角化されたりします。Raw にすると変換せず、ファイル名をそのまま扱います。

OS の制限を気にせず透過的に扱えることを意識した仕組みなのですが、もともとリモートに全角で保存されていた名前に余計なエスケープ ‛ が付与されるという挙動があるので、日本語ユーザーには混乱をもたらします。ゆえに、Raw を指定しておき、Windows とそれ以外でのやり取りを想定する場合は、あらかじめ Windows で使える文字だけで名前が構成されるよう制限しておくと良いでしょう。

ちなみに、バックエンド側のエンコードオプションとそのデフォルトは別で存在し、バックエンドごとに異なります。

--no-unicode-normalization は、同期時のファイル名比較で Unicode 正規化を行わないようにします。デフォルトでは正規化するため、合成形 (NFC) と分解形 (NFD) は同一の名前として扱われます。 macOS は一部アプリケーションがいちいち NFD で保存するので、クラウド側の NFC と辻褄が合うように突き合わせるための仕組みです。ファイル名を文字どおりに扱いたい場合に、このフラグを付けます。

逆に、ローカル側のファイル名を読み込み時に NFC へ直したい場合は --local-unicode-normalization を付けます。

--fix-case は、大文字小文字を区別しない宛先 (macOS/Windows) において、元側の表記に揃うようにリネームします。通常は hello.txt を、既存 HELLO.txt へ同期しても、宛先は HELLO.txt のままです。