対象読者
以下の人が対象です。
- 大量ファイルの転送に困っている人
- リモート・ローカル間のファイルのやり取りに悩んでいる人
研究室の後輩やHPCを利用している人がscpを使っていて、上記のような問題で困っていることが多かったのに耐えられず書きました。
rclone
Rclone is a command-line program to manage files on cloud storage. It is a feature-rich alternative to cloud vendors' web storage interfaces. Over 40 cloud storage products support rclone including S3 object stores, business & consumer file storage services, as well as standard transfer protocols.
Rcloneはクラウドストレージ上のファイルを管理するためのコマンドラインプログラムです。クラウドベンダーのWebストレージインターフェースの代替手段として、豊富な機能を持ちます。40以上のクラウドストレージ製品(e.g. S3のオブジェクトストアやビジネス・消費者向けファイルストレージサービス)がrcloneをサポートし、標準的な転送プロトコルとしても機能します。
よく使う機能
私は以下のような機能を主に使ってます。
- sftpを用いたリモート/ローカル間の差分ファイル転送
- リモートディレクトリのマウント
これに加え、クラウドストレージも通常のリモートディレクトリと同じように扱えるのがrcloneのすごい所。
今回は、上の二点の機能について導入と使い方を解説します。
sftpを用いたリモート/ローカル間の差分ファイル転送
Usage:
rclone copy source:path dest:path [flags]
ソースとデスティネーションにはscpコマンドと同じ要領でパスを指定します。
ただし、rclone config
(後述)でホスト名のエイリアスを作成する必要があります。
rclone copy
はファイルの差分を見てコピーしているので、中途再開で時間の節約ができます。
また、セキュアなファイル転送プロトコル(sftp)を用いているので安心感があります。
リモートディレクトリのマウント
Usage:
rclone mount remote:path /path/to/mountpoint [flags]
オプション--vfs-cache-mode writes
を付けないと、ファイルを編集したときに怒られます。
一応、誤解を広めないために付け加えておくと、VSCodeにもリモートディレクトリをマウントできる機能はあります。rclone mount
の場合、ファイルの編集が反映されるまでに数秒のラグが生じるデメリットがあります。
rcloneの使い方
上のリンクから自分の環境にあったバイナリをダウンロードしてください。rcloneが存在するディレクトリにPATHを通したらrclone config
で初期設定をします。ローカル環境がWindowsでsftpを使う場合は、chocoなどのパッケージマネージャを通してWinFspを事前にインストールしてください。
まず、こんな画面が出てきます。
Current remotes:
Name Type
==== ====
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>
CLI上でインタラクティブな設定操作ができるのが、rcloneの大きな特徴。
日本語には対応していないですが、ユーザ名やアクセストークンなどを手順通りに設定すれば大丈夫です。
sftpだと4つくらい設定項目があります。
Configuration complete.
Options:
- type: sftp
- host: ************
- user: foouser
- pass: *** ENCRYPTED ***
Keep this "hogehost" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
これにて設定完了。
scpとrcloneの違い
scp | rclone | |
---|---|---|
リモート/ローカル転送 | ✅ | ✅ |
暗号化通信 | ✅ | ✅ |
差分コピー | ✅ | |
クラウドストレージ対応 | ✅ | |
ディレクトリのマウント | ✅ | |
OS対応状況 | ほぼ全部 | ほぼ全部 |
大容量のファイル(1TB)をリモートにアップロードする時に、差分コピーができる機能はとても重宝します。
余談ですが、組織のポリシーでrsyncのポートが禁止されている可能性があるので、rcloneはrsyncの代替手段にもなり得ます。(rsyncのようにファイルサーバを立ち上げる機能はrcloneにはありません。)
まとめ
scpよりもrcloneの方が多機能で安全なので、rcloneを使ってファイル転送で楽をしましょう。
rclone copy
とrclone mount
を覚えておけばそんなに困りません。