Gdrive間でのデータの移動(異なるドメイン間)

諸事情あって、異なるドメインのGoogleアカウント間でGdrive上にあるデータを移動させる必要がありました。

幾つか試行したもののなかなかきちんと移動しなかったのでその記録をメモします。

ここでは仮に元のアカウント(のGdrive)をfromGD、移動先のアカウント(のGdrive)をdestGDとします。またブラウザはWebブラウザ上でGdriveへアクセスすること、GdriveアプリはGdriveアプリ(Windowsを想定)を介してエクスプローラー上でアクセスすることとして説明します。

成功した方法

更にいろいろ調べるとChrome用アプリに「Copy Folder」(とても感謝しています)がありました。

全体を共有→コピー→削除といった具合にして、コピーにこのアプリを使用するとフォルダー構造を維持しつつ、Googleアプリのデータもそのままコピーが行われました。

  • 事前準備
    1. fromGD上で移動用のフォルダ「fromGDフォルダ」を作成
    2. fromGDフォルダを移動先のアカウントに対して共有
    3. destGD上でコピー先フォルダ「destGDフォルダ」を作成
  • コピー(1/2):fromGD上での操作
    1. ブラウザ上で移動させたいフォルダを右クリック「指定の場所へ移動」で「fromGDフォルダ」へ移動
    2. 移動がGdriveアプリ上で完了する(fromGDフォルダ内に表示される)まで待つ
  • コピー(2/2):destGD上での動作
    1. destGDフォルダごとあるいはdestGDフォルダ内のフォルダーごとに、Copy Folderアプリでコピー
    2. すべてのコピーが完了するまで待つ(かなり長い。確認方法は後述)
  • 削除:fromGD上での操作
    1. fromGDフォルダ内のデータを削除

ここでCopy FolderはGoogleのサーバーサイドで実行されるAPIを使用していることから回数制限(日ごと)があります。とても素晴らしいことにCopy Folderはその対策もとられていて、ある程度安全な数をコピーしたら停止、翌日に再開するとても優れた仕組みとなっています。この動作はPCレスで行われるのでChrome上で操作して実行した後にはPC(正確にはChrome)を停止しても問題ありません。

その進捗状況はコピー先に指定したフォルダーに生成される「Copy Folder Log ??-??-????」に記入されています。

ここで以下の2箇所を確認すればよいように思います。

  • Progress欄がCompleteとなったら完了
  • Total files copied欄の数が指定したフォルダー以下のファイル数とほぼ合致すること

基本的には前者で確認できますが本当にコピーされたかが心配になります(小心者の私だけ?)。WindowsPCでコピー元のフォルダーを右クリック→プロパティを見ればファイル数が表示されますので、それと比較すればよいと考えました。

また一度だけ失敗して途中で停止することがありました。推測ですがAPIのコール回数が制限を超過してしまったときではないかと思います。Copy Folderを二重に起動したり、終わった日に続けて次のコピーを開始するとこの制限にひっかかあるリスクがあるはずです。期間に余裕をもってコピーを開始しないといけません。この失敗も私が無理にぎりぎりを攻めた使い方をしたからいけないのです。

ちなみに該当するAPIコール数の制限はGoogle Workspaceのプランによって上限が増えると思うのですが、ソースコードを拝見(オープンソースはこういったことができる点でたいへん素晴らしい)したところでは少ないほうの数を基準に安全を見た値を固定で設定しているようです。これを変更できると一日にコピーできる数が数倍に増えると考えました。自分で書き換えて実行することを試みましたがChromeアプリの手動インストールにつまづいてしまいました。

半ば成功した方法

「移動」ではなく「共有」「コピー」「削除」によって実体的に移動を実現しました。

ただしこの方法ではGoogleアプリ(Sitesなど)コピーできないか、xlsxファイルなどに変換されてしまいます。逆に言えばそれらを使わない純粋なクラウドストレージとしてのみ使用していれば問題ありません。

ただしデータはクラウド→ローカルPC→クラウドと通信されることになるので、対象容量の2倍の通信量となるはずで、これは膨大なものになりかねません。少なくともGigaで死ぬような環境では実行できませんね。

  1. 事前準備
    1. fromGD上で移動用のフォルダ「fromGDフォルダ」を作成
    2. fromGDフォルダを移動先のアカウントに対して共有
    3. destGD上でコピー先フォルダ「destGDフォルダ」を作成
  2. コピー(1/2):fromGD上での操作
    1. ブラウザ上で移動させたいフォルダを右クリック「指定の場所へ移動」で「fromGDフォルダ」へ移動
    2. 移動がGdriveアプリ上で完了する(fromGDフォルダ内に表示される)まで待つ
  3. コピー(2/2):destGD上での動作
    1. Gdriveアプリ上でdestGDに表示されるfromGDフォルダの内容を全選択しコピー、destGDフォルダへペースト
      1. 検証できていませんが、ファイル数が多すぎるとどこか(Spreadsheetの行数上限?)で失敗しそうな心配があります
    2. すべてのコピーが完了するまで待つ(かなり長い)
  4. 削除:fromGD上での操作
    1. fromGDフォルダ内のデータを削除

上のポイントはブラウザ上ではフォルダーのコピーができないことにあります。このためGdriveアプリ上での操作となりますが、このときにはfromGD→ローカルPC→destGDとデータが行き来するために非常に時間がかかります。当然それに伴う通信データ量も膨大(単純計算で対象データ量の2倍)になります。

失敗した方法

fromGDフォルダを共有し、destGD側(もしくはfromGD側)でオーナーを変更すればOKと考えましたが、これは操作自体ができませんでした。手順としては追えますが、最後の部分でグレーアウトしたままになって操作できません。どうやら同一ドメイン内だとできるようです。

似たような方法として共有→移動すればOKと思いましたが、移動しても実体は元のアカウントにあるようです。厄介なことに元のアカウントのブラウザ上では見えなくなりますが、移動先のアカウントでは1バイトもデータ使用量が増えませんし、移動元でも減りません。

一つのフォルダーにしかデータがない場合には全選択・コピーでOKと思いましたが、ブラウザ上でこれをすると同一フォルダーにコピーしたファイルが配置されてしまい、大事件(元のファイルとコピーファイルが混在してしまう)となります。コピー先も移動と同じように指定できるとよいのですが。

いずれもブラウザ上での操作ですませられれば、クラウド・ローカルPC間の大量のデータ通信が発生しないで済むという発想でしたが、そうはうまくいかないようでした。

コメントを残す

メールアドレスが公開されることはありません。