3 ポイント 投稿者 GN⁺ 2024-01-28 | 1件のコメント | WhatsAppで共有
  • Rclone は、クラウドファイル管理をコマンドラインで処理するツールであり、Web インターフェースに依存せず 70 以上 のストレージ製品と標準転送プロトコルを扱える
  • rsynccpmvmount のような馴染みある Unix 風の操作をクラウド向けに提供し、シェルパイプライン・--dry-run・スクリプト・API 自動化までサポートする
  • 転送中に タイムスタンプとチェックサム を維持し、帯域制限・不安定な接続・クォータ環境でも最後に正常転送された地点から再開できる
  • ローカル・クラウド・仮想ファイルシステムを Windows、macOS、Linux、FreeBSD で ディスクのようにマウント し、SFTP・HTTP・WebDAV・FTP・DLNA として提供できる
  • バックアップ、復元、クラウド間移行、暗号化・圧縮・チャンク分割・ハッシュ化・統合まで 1 つのツールで処理できるため、複数のストレージサービスを併用する際に便利

クラウドファイル管理のためのコマンドラインツール

  • Rclone はクラウドストレージ上のファイルを管理する コマンドラインプログラム
  • クラウドベンダーが提供する Web ストレージインターフェースの代替となる高機能ツールとして使われている
  • 対応対象は S3 オブジェクトストア、企業向け・個人向けファイルストレージサービス、標準転送プロトコルを含めて 70 以上
  • ユーザーは Rclone を「クラウドストレージのスイスアーミーナイフ」「魔法と見分けがつかない技術」と呼んでいる

Unix 風コマンドと自動化

  • Rclone は馴染みある Unix コマンドに対応するクラウド操作を提供する
    • rsync
    • cp
    • mv
    • mount
    • ls
    • ncdu
    • tree
    • rm
    • cat
  • 構文はシェルパイプラインをサポートし、--dry-run によって実際の変更前に処理内容を確認できる
  • コマンドライン実行だけでなく、スクリプトや API からも利用できる
  • サードパーティ開発者は Rclone のコマンドラインや API を活用して、バックアップ、復元、GUI、業務プロセス向けソリューションを構築している

データ保護と転送の安定性

  • 転送中に タイムスタンプ を保持し、常にチェックサムを検証する
  • 制限された帯域幅、断続的な接続、クォータのある環境でも、最後に正常転送されたファイルから再開できる
  • check コマンドでファイル整合性を確認できる
  • 可能な場合は サーバー側転送 を使ってローカル帯域幅の使用を減らし、ローカルディスクを経由せずにプロバイダー間転送を行う
  • 転送関連機能には次が含まれる
    • MD5、SHA1 ハッシュによるファイル整合性確認
    • ファイルタイムスタンプの保持
    • いつでも再開可能な処理
    • 異なるクラウドプロバイダー間のネットワーク転送
    • ローカルディスクへのマルチスレッドダウンロード

バックアップ・復元・マイグレーションのシナリオ

  • クラウドストレージにファイルを バックアップ し、必要に応じて暗号化する
  • クラウドストレージからファイルを 復元 し、必要に応じて復号する
  • クラウド上のデータを別のクラウドサービスやローカルへミラーリングできる
  • データをクラウドへ移行したり、クラウドストレージベンダー間で移したりできる
  • 複数の暗号化・キャッシュ・異種クラウドストレージをディスクのようにマウントする
  • lsfljsonsizencdu でクラウドストレージ上のデータを分析・集計できる
  • Union により、複数のローカルまたはクラウドファイルシステムを 1 つのように見せられる

ファイル操作とサービス提供

  • Copy は新規または変更されたファイルをクラウドストレージにコピーする
  • Sync は一方向でディレクトリを同一の状態にする
  • Bisync は 2 つのディレクトリを双方向に同期する
  • Move は検証後にローカルファイルを削除しながらクラウドストレージへ移動する
  • Check はハッシュと欠落・追加ファイルを確認する
  • Mount はクラウドストレージをネットワークディスクとしてマウントする
  • Serve はローカルまたはリモートのファイルを HTTPWebDAVFTPSFTPDLNA で提供する
  • Web ベース GUI は実験的機能

マウントと仮想バックエンド

  • ローカル、クラウド、仮想ファイルシステムを Windows、macOS、Linux、FreeBSD でディスクとして マウント する
  • 同じファイルシステムを SFTPHTTPWebDAVFTPDLNA として提供できる
  • 仮想バックエンド はローカル・クラウドファイルシステムをラップして追加機能を適用する
    • Crypt: ファイル暗号化
    • Compress: ファイル圧縮
    • Chunker: 大きなファイルの分割
    • Hasher: ファイルハッシュ化
    • Union: 複数のリモートストレージを統合
    • Alias: 既存のリモートストレージ名を変更
    • Archive: アーカイブファイルの読み取り
    • Cache: リモートストレージのキャッシュ、Deprecated
    • Combine: 複数のリモートストレージをディレクトリツリーとして結合

対応プロバイダーとインストール

  • 対応プロバイダーには Amazon S3、Backblaze B2、Box、Dropbox、Google Cloud Storage、Google Drive、Microsoft Azure Blob Storage、Microsoft OneDrive、Proton Drive、SFTP、SMB/CIFS、WebDAV、ローカルファイルシステムなどが含まれる
  • WebDAV や S3 のような標準プロトコルベースの他のプロバイダーでも、そのまま動作する場合が多い
  • Rclone は rsync に着想を得た成熟した オープンソース ソフトウェアであり、Go で書かれている
  • Ubuntu、Debian、Fedora、Brew、Chocolatey の公式リポジトリに Rclone が含まれている
  • 最新版は rclone.org からダウンロード する方法が推奨される
  • 関連リンク

1件のコメント

 
GN⁺ 2024-01-28
Hacker News のコメント
  • rclone が本当に好き。昔の寄付ページに「rclone は愛情で作っているプロジェクトなのでお金は必要ないが、妻に花を買う足しにしてくれたら本当にありがたい」というような文言があったと記憶している
    ただ素敵な人だと感じたし、今では rclone にフルタイムで取り組めるようになったと聞いてうれしい。今もやりがいのある仕事であってほしい
    archive.org で当時のページを見つけたが、記憶よりさらに心温まる内容だった:
    “Rclone is a pure open source for love-not-money project. However I’ve had requests for a donation page and coding rclone does take me away from something else I love - my wonderful wife.”
    “So if you would like to send a donation, I will use it to buy flowers (and other pretty things) for her which will make her very happy.”
    https://web.archive.org/web/20180624105005/https://rclone.or...

    • Nick には実際に会ったことがあるが、本当にいい人だった
  • rclone は クラウドストレージをローカルディスクのようにマウントすることもできるので、特に Kubernetes で使いやすい
    同じフォルダにファイルが多い場合、ドライブのように使うと読み書き速度はそれほど速くないが、プロジェクトでクラウドストレージを素早く簡単に活用する方法ではある
    場所ごとの エンドツーエンド暗号化も可能で、例えばマウントされたドライブに入れるすべてのファイルが、暗号化された状態で Dropbox の /foo フォルダに書き込まれる。Dropbox や S3 のようなプロバイダがまだネイティブなエンドツーエンド暗号化に対応していない点を考えると便利
    全体として rclone は手元に置いておくとよいツールで、本当に多くのユースケースを解決してくれる

    • ローカルまたはクラウドストレージを提供する 一時的な FTP サーバをとても簡単に作れる
      例えば自分の Pi4 は rclone FTP サーバとして Dropbox を内部ネットワークに公開し、別の FTP サーバでネットワークプリンタがスキャンファイルを保存できるようにしている。同じ機器で、家族や親しい友人のクラウドストレージ自動バックアップも rclone で動かしている。自分の内部ネットワークでは rclone はほとんど救世主だ
    • この用途には本当に良いが、ネットワークが安定しているか確認する必要がある
      デスクトップとノートPCで Google Drive をマウントして使っているが、ノートPCでは OS がドライブをローカルと見なし、rclone がネットワークエラーでタイムアウトしないのが問題になる。Wi-Fi に接続されていない状態でアプリケーションがドライブを読み書きしようとすると、永遠に固まる。例えば XFCE で Thunar のウィンドウを開いたままだと、UI の大半がロックされることがある
    • 「クラウドストレージをローカルディスクにマウントする」と言われただけでは、すぐにはピンとこなかった。ファイルシステム呼び出しを API 呼び出しに変換するのに FUSE、9p、ドライバ、あるいは別の仕組みを使っているのか気になった
      確認してみたら FUSE だった
    • Google Drive 向けの Insync のような 双方向同期アプリの代替としてうまく使った人がいるのか気になる
      Insync もいまいちだし Google Drive もいまいちだが、毎日依存する用途なら、ファイルのローカルコピーとローカル・サーバ間の即時同期は必須だと感じる。特にインターネット接続が不安定なときはそうだ
    • “e2e” 暗号化と言うとき、クライアント側暗号化のことを指しているのか気になる。S3 はクライアント側暗号化とサーバ側暗号化の両方に対応している
      もちろん、クライアント側暗号化に対応するためにサービス側で特別なことをする必要はあまりないのだが
      クライアント側暗号化向けには、暗号化された S3 クライアントまで別にある: https://docs.aws.amazon.com/amazon-s3-encryption-client/late...
  • 自分が好きな rclone の活用法は rclone ncdu: https://rclone.org/commands/rclone_ncdu/
    ほとんどのクラウド容量プロバイダは、各フォルダやサブフォルダが実際にどれだけ容量を使っているかを表示してくれないが、そんなとき rclone ncdu がぴったりはまる

    • ncdu が好きだが、rclone との統合はとても実用的だ
  • rclone を毎日使っている。場合によっては sshfs の代わりになった
    ホームサーバの $Archive 共有を rsync.net に送り込み、自分の Google アカウント、妻、母、父、子どもたちのアカウントから写真を $Archive に取り込んでいる。別々の $WORK 用クラウドアカウント3つも $Archive に集約してから rsync.net に送っている
    これは本当に 最高級のツール

    • 何年も sshfs を使っていたが、rclone がリモートストレージをファイルシステムにマウントできると知り、それ以来うまく使っている
      https://rclone.org/commands/rclone_mount/
      現在 SSHFS には活発かつ定期的に貢献している人がおらず、既知の問題もいくつかある
      https://github.com/libfuse/sshfs#development-status
    • Google Photos から取り込むのであれば、元の画質で受け取る唯一の方法は Takeout を使うことではないかと思う
    • rsync.net は、すべての機能やサポートが不要で Borg アーカイブだけが必要なら、もう少し安いプランも提供している: https://www.rsync.net/products/borg.html
  • バックアップ用途なら Restic も見ておく価値がある。rclone と Restic は併用すると非常に相性がよい
    https://www.bobek.cz/blog/2020/restic-rclone/

    • 素の Restic の主な欠点は、たいてい設定管理のために自分でシェルスクリプトを書くことになる点。Restic 自体にはその機能がない
      幸い、この問題を解決する https://github.com/creativeprojects/resticprofile がある
    • 追加の予防策として、バックアップを 追記専用 にすることも検討に値する: https://ruderich.org/simon/notes/append-only-backups-with-re...
    • Restic チームは「セキュリティのため」という理由で 暗号化されていないバックアップ を拒否している
      誰かがどんな状況でも自分の判断が世界最高で、他人は間違っていると仮定するようなアプローチは嫌いだ
      私は自分が何をしているか分かっているし、バックアップを暗号化したくない非常に正当な理由がある
      Restic はデフォルトではバックアップを暗号化しつつ、--do-not-encrypt のようなスイッチを許可することもできたはずだ
      開発者たちの傲慢さには驚くし、だから Restic は使わないつもりだ。とても良いバックアップソリューションなので、なおさら残念だ
      Borg を試すほうがよい
    • どちらも使っている
      複数のマシンは Restic でローカルサーバーに毎時バックアップし、そのバックアップを rclone で毎日 S3 に同期している
      こうすると読み書き操作の数が減り、復元が速くなり、S3 へのアクセス権を持つマシンを1台に限定できる
    • duplicacy も確認してみる価値がある: https://twitter.com/ArtemR/status/1159392251992145920
      https://github.com/gilbertchen/duplicacy
  • Rclone は多くの ストレージバックエンド をサポートしており、任意のストレージバックエンドを暗号化できる crypt バックエンドも提供している
    https://rclone.org/overview/
    https://rclone.org/crypt/

  • 公式サイトで常に チェックサム検証 を行うと堂々とうたっている点が気に入っている
    以前、どれほど多くのツールがこのステップを飛ばしているのかを見て驚いたことがある。もちろん遅くはなるが、クラウドストレージ間で同期する状況なら、チェックサムを本当に確認したいケースである可能性が高い

    • 冒頭の「魔法と区別がつかない」という推薦文は少し傲慢に見えたが、今はこうした並外れた主張に並外れた証拠があるのかを確認しているところだ
  • 誰かがオープンソースクライアントを見て Proton Drive API をリバースエンジニアリング し、Rclone プラグインを作った
    現在 Linux で Proton Drive を使う唯一の方法だ

    • rclone に Proton Drive サポートがあるとは知らなかった。Visionary プランが一時的に再開されたときに加入しておいたので、これでそのストレージも使えそうだ
  • Rclone は魔法のようなツールで、さまざまな用途に使ってきた
    最後に確認したときは AWS SDK を使っていないか、Go のバージョンに制約があったため、.aws/config のすべての設定を使えるわけではなかった
    ただ、多機能ツールなので、すべてのバックエンド機能をサポートしていないのはある程度理解できる
    ドキュメントには、キャッシュのようなメンテナンスされていない機能や実験的機能に関する警告が多い。警告自体は妥当だが、具体的な制約を明確に示しているわけではない

  • Rclone は本当に気に入っている。技術に詳しくない人たちがコンシューマー/ビジネス向けクラウドに大量のデータを置いていて、それを何とかサーバーに取り込んで追加処理しなければならないときに 貴重なツール
    データ量が多く、自宅のインターネット環境がよくない場合は、クラウド間の直接転送にも優れている。ネットワークの良いサーバーに rclone を入れて tmux 上で実行すれば、自分のコンピューターが起動していなくても処理は続く

    • tmux が必須というわけではない
      nohup /usr/bin/rclone ... &>/dev/null &
      このように実行してからログアウトしても実行は続く