rclone browserでGoogle Driveにガッツリ同期させる

業務で大容量のファイルサーバを廃止してGoogle Driveの共有ドライブに引っ越しが必要になりました。しかしこのファイルサーバが本格的な業務用で利用するサーバであるため、手作業でGoogle Driveの所定のドライブにアップロードするのが非常に大変。エラーが起きたり、ミスったり。。そこでこれをもっと確実に手軽にできないか?ということで発見したのがrclone。

ただしコマンドラインアプリなのでこれをGUIで扱えるrclone Browserも同時に導入して実験してみました。Drive APIを使ってアップロード制御を行ってるようです。

今回利用するアプリ

今回はWindowsおよびmacOSでの利用を前提にインストール方法や使い方をまとめてみました。Amazon S3やDropbox, Sambaなど非常に様々なストレージサービスに対応しているため、Google Driveだけじゃなくマルチなバックアップタスクの実現を安定的に行うにはもはや必須のツールと言えます。

最近は個人のレベルでも数TBのクラウドストレージやローカルNASがありバックアップ手段としては利用する機会が多いのではないかと思います。

※差分バックアップも可能なので通常の手動ではできないようなアクションを実現できます。

Google Driveの問題点

このツールを導入する前に、Google DriveアプリおよびChromeの2パターンを使ったファイルのアップロードを行っていました。対象のファイル数は軽く60万ファイルを超えており、故に複数の共有ドライブを用意してそちらに分散する形でアップロードをしておりました。そこで遭遇した問題点を以下に記述しておきます。

1つのフォルダ内には数万のファイルと、数百GBものファイルが詰まっており、手作業はかなり苦痛な作業となっていました。以下の問題点を解決する選択肢がこのrcloneとrclone Browserとなります。

ドライブの制限

Google Driveはファイルのアップロードに制限があります。アカウントの制限と共有ドライブの制限の2つになります。

  1. 1共有ドライブの最大ファイル数は最大で40万ファイルまで
  2. 1アカウントが1日にアップロード出来るファイルサイズ合計は750GBまで
  3. フォルダ階層は最大で20階層まで
  4. 個々のファイルの最大ファイルサイズは5TBまで

故に莫大な数とファイルサイズを考えた場合、1アカウントで1日で移動出来る量というのは制限されることになります。故に事前に以下のような対策を講じておく必要があります。

  • でかいファイルサイズである仮想環境の仮想HDDなどは、事前にコンパクションなどをしてサイズを小さくしておく(ファイルサイズの低減)
  • ログファイルや多数のパッチ、あまり使わない過去ファイルなどはZIPなどで圧縮・アーカイブしておく(ファイル数の低減)
  • 階層が深い場合にはまずその階層のままアップできないので可能な限りフラットな階層にしておく
  • ファイル数が多すぎる場合は、個別の共有ドライブを複数作成しておき、それらに分散して制限をクリアする

Google Driveアプリの場合

Google Driveデスクトップ版、こちらはかなり問題がありました。業務用のファイルサーバの1フォルダを共有ドライブの1ドライブにそのままアップロードする作業なのですが

  • Google Driveアプリは1度自身にキャッシュしてから同期を掛けるので、HDDやSDDが一杯になってしまう
  • 余りにも多数のファイルを同期しようとしてエラーが発生したり同期に失敗してそのままになるケースがあった
  • 同期が動いてる間は共有ドライブが削除不能になる
  • どれだけアップロードが完了してるのか非常にわかりにくい(人によってその表示がまちまち)
  • 同期したはずなのに、ブラウザ上ではアップロードできていないということがあった

小規模な同期ならばGドライブとしてマウントして使うには便利なツールですが大規模な引っ越しでは正直言って使い物にはならないという結論です。NASなどから移動させたい場合に使うにはオススメできません。

Chromeの場合

ChromeでGoogle Driveを表示しての手動でのアップロード。前述のGoogle Driveアプリよりもまだ実際に使うには使えるという印象でしたが、やはり大きなファイルサイズと莫大なファイル数となると致命的なエラーが多く発生し、やり直しが発生してしまったため、フォルダを小分けにしてアップロードするという実にアナログな手間暇が必要でした。

  • 親フォルダのアップロード中にネットワークセッションが何らかの問題で切れた場合、全てがロールバックされるため何一つアップロードが完了していなかったという事があった
  • やたらと長いフォルダ名や妙なファイル名がついてるものが含まれてる場合、アップロードが失敗と出てそこでストップしてしまう。どこまで完了したのかわからずやり直しとなる。
  • ファイル数と完了数は出るけれど、どこまで完了したのか非常にわかりにくい
  • アップロード失敗と出たものは△の表示で対象ファイルが出て、最後に再更新をするとアップが完了しない
  • 残り何時間という予測時間がいつまで立っても減らない

アップロードの失敗する確率はドライブアプリよりは低いといえどやはり、小分けにアップロードをしないと非常に手戻りが多く、かなり苦痛が強いられました。

インストール

いずれの場合も、rcloneのコマンドラインファイルとrclone BrowserのGUIアプリの両方をインストールして、パスを指定して利用可能となります。

Windows版

Windows版のrcloneとrclone Browserのインストールは以下の手順で行います。

  1. こちらのサイトからインテル 64bit のWindowsのバイナリをダウンロード
  2. ZIPを解凍する
  3. rclone.exeというのが入ってるディレクトリを適当な場所に配置する(マイドキュメントのドキュメントフォルダ直下など)
  4. 3.のrclone.exeをShiftを押しながら右クリック→パスをコピーでフルパスをコピーしておく
  5. こちらのサイトからrclone Browser 64bit windows 64bitをダウンロード
  6. 4.のexeを3.のディレクトリの中にでも入れておく(例:rclone-browser-1.8.0-a0b66c6-windows-64-bit.exe)

これでインストール作業自体はオッケー。できればこの3.のパスを環境変数にでも登録しておくと利便性がアップします。

macOS版

macOS版は、ターミナルからインストールします。事前にHomebrewをインストールしておきましょう。

  1. ターミナルを起動する
  2. 「brew install rclone」を実行してrcloneをインストールする
  3. 「type rclone」を実行して、rcloneが入ってるフルパスを調べる(通常は、/opt/homebrew/bin/rclone)
  4. こちらのサイトからrclone Browser macos.dmgをダウンロード
  5. 4.をマウントして中に入ってるrclone browserをアプリケーションフォルダにコピーする

使い方

ここから先は全プラットフォーム共通となります。まずはrclone Browserを起動しましょう。使う場合、Google Driveアプリを稼働状態にしておくといちいちそっちでも同期が走るので、切っておくと良いでしょう。

また複数台のマシンで同一アカウントにて回すことも可能なので、750GBの制限だけ気をつければ、複数台で違う共有ドライブを指定してアップロードを行う事で実質的なアップロード速度を稼ぐことも可能(もちろんWAN側の通信速度が結果的に制限にはなるので、企業で使う場合はより効果が出る)

初回起動時の設定

初回起動時になにやらダイアログが出て、設定しろと言われます。ここではrclone locationsを設定します。rclone.exeやrcloneのバイナリへのフルパスをここに追記して、OKをクリックするだけです。

図:rclone locationsを設定する

rcloneで設定を作る

ここではrcloneでOAuth認証や共有ドライブの指定(バックアップ先)などの様々な設定をします。注意点として1つの設定でバックアップ先に指定出来る共有ドライブは1個なので、複数の共有ドライブがバックアップ先にある場合はその数だけ、設定を作る必要がある点です。それらの設定に対してバックアップタスクを作っていく事になります。

以下はmacOSのターミナルからの作業ですが、Windowsのコマンドプロンプトからも同様の作業になります。Windowsの場合はフォルダのパスを取得しておいて、cd フォルダのフルパスで移動してから以下の作業を行います。

  1. 「rclone config」を実行する
  2. 新規作成なのでnキーでnew remoteを選択する
  3. nameでは適当な名前をつけるけれど、共有ドライブの数だけ作ることを考慮して、gdrive_sharednameとでも入れておきます。(今回はgoogleとだけ入れておきました)
  4. Option Storageでは様々なクラウドストレージを選べますが、Google Driveを使うので今回は18を指定します。
  5. Option Client_idは空のままEnter
  6. Option Clinet_secretは空のままEnter
  7. Option ScopeではFull Access許可を与えるので、1を選択します。
  8. Option Service_Accountは空のままEnter
  9. Edit Advanced Configではnを選択(詳細な指定をしたい場合はyを入力する)
  10. Use Webbrowser to ・・・と出たら、yを入力する
  11. ウェブブラウザが起動してOAuth認証が始まるのでアカウントを指定して、ログインし許可を与える
  12. Successfullyと出たらターミナルに戻る
  13. Configure this as a Shared Driveと出たら、yを選択
  14. そのアカウントで利用可能な共有ドライブの一覧が出てくるので、バックアップ先として利用する共有ドライブの番号を入力してEnter
  15. Keep Thisと出たら、yを入力してEnter
  16. Quit Configを選ぶので、qを入力してEnter
  17. rclone Browserに戻ってremotesタブのrefreshをクリックすると今作った設定が出てくる

これで、rcloneの設定が完了しました。なぜかrclone Browserからconfigをクリックしても開かない場合は、rclone configで実行した後に、nじゃなくeを選択して、設定ファイルの番号を指定すれば作っておいた設定を編集する事が可能です。

図:共有ドライブの指定

バックアップタスクを作る

さて、指定の共有ドライブに対して、バックアップするタスクを作成します。このタスクはコピー、移動、同期の3種類があり、通常は同期を選ぶと良いでしょう。Syncが同期になります。

  1. Remotesタブから作っておいたrcloneの設定をダブルクリックする
  2. 指定した名前のタブが生成されて、Google Driveの指定の共有ドライブの中身がツリーで出てくる
  3. 予めアップロード先フォルダを作っておきます(今回はtomatoというフォルダを作りました)
  4. 3.で作った指定のフォルダ(rootフォルダも可能)を選ぶ
  5. uploadをクリックする
  6. タスク作成画面が出てくるので、Task Descriptionにタスク名を適当に入れる
  7. Sourceの欄の隣のフォルダのアイコンをクリックする
  8. 同期元となるフォルダを指定します。
  9. Destinationは指定した共有ドライブのフォルダのパスがすでに入ってる。今回はgoogleという名前を付けてるので、google:tomato/と指定すると共有ドライブ直下のtomatoというフォルダ内に7.の中身が同期されるようになります。
  10. ModeはSyncを選び、Delete During Transferを選んでおきます。
  11. 2回目の同期で同じファイルをアップロードを防ぐために、Skip files that are newer on the destinationにチェックを入れておくと良いでしょう。
  12. Transferタブでは一度にアップするファイルの個数やコンペアチェックするファイルの個数、転送速度規制などを細かく指定可能です。
  13. Excludeはコピー除外するファイルの指定が可能です。
  14. Save taskをクリックしてタスクを保存する

図:フォルダを選ぶ画面

図:バックアップタスクの設定

バックアップを実行する

前述のタスクはTasksタブに登録されるので、後はこれを選択して、Runを実行すると指定した同期設定にてファイルのアップロードが始まります。実行するとJobsに実行中のタスクが表示されます。

Google Driveの問題点で指摘したいような数々の問題点をクリアしており、非常に安定してバックアップを任せる事が可能で手戻りが殆どありません。

約40GBの合計サイズで50,000ファイル、同時4アップロード指定、Nuro光の1GB回線の802.11axの回線で実験してみたところ、およそ50%処理まで2時間17分。100%処理では4時間30分でアップロードが完了しました。

図:タスクを実行する画面

図:タスク実行中の様子

その他の機能

非常に高機能で素晴らしいバックアップ支援ツールですが、rcloneの機能はこれだけじゃなく

  • Google Driveアプリの用にクラウドストレージをローカル環境に対してマウントする事が可能(macOSの場合macFUSEが必要だが、セキュリティ設定を緩めないと使えない)
  • 「rclone about 設定名:」でGoogle Driveの容量表示が可能です。
  • Google Driveで暗号化を行うことが可能。googleという名前の設定を作っていたら、google:Crypt/をリモート名として指定すると可能です。

興味のある人は各項目について設定を行い、使えるようにしておくと、Google Driveを更にディープに使えるようになるというおまけ機能です。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。