はじめに
Googleの個人アカウントから Google Workspace に引っ越しする際、大きな課題になるのが「Googleドライブ内のファイル移行」です。
正解の一つは、個人ドライブから共有ドライブへ移動させる方法です。共有ドライブに対して個人アカウントに所有者相当の権限を付与すれば、リンク切れを起こさずにファイルを移せるのがメリットです。
しかし次の課題が残ります。
- ドメインが異なる場合、オーナー権限の移譲はNG
- 自分がオーナーでないファイルは移動できない
こうした制約があるため、どうしても移せないファイルが出てきます。そこで発想を切り替えて、リンク切れを起こしても影響が少ないファイル(例:写真、PDF、Microsoft Officeファイルなど)はコピーするという選択肢もあります。
ブラウザ経由でコピーする方法や GAS を使った階層コピーも存在しますが、ファイルが多いとエラーが発生しやすく、「どのファイルがコピーできたのか分からない」という不便さがあります。
そこで今回は、Windows端末にインストールしたGoogleドライブ(デスクトップ版)を利用し、robocopyでフォルダやファイルを差分コピーする方法を検討しました。差分コピーを繰り返すことで、容量や時間の制約があっても、こつこつと安全に引っ越し作業が進められます。
注意点としては、Googleドキュメント、スプレッドシート、スライドといったGoogle独自形式のファイルはコピー対象外になるため、それらは後で別途移行する必要があります。
設定ファイルを用意
コピー元とコピー先をテキストファイルに書いておきます。
paths.txt
H:\マイドライブ\コピー元
H:\共有ドライブ\40_共有\コピー先
バッチファイル(UTF-8対応)
文字化け防止のために chcp 65001
を追加したバッチファイルです。
差分コピー.bat
@echo off
chcp 65001 >nul
setlocal
:: この .bat が置いてあるフォルダ(末尾 \ 付き)
set "HERE=%~dp0"
set "FILE=%HERE%paths.txt"
if not exist "%FILE%" (
echo 設定ファイルが見つかりません: "%FILE%"
pause
exit /b 1
)
:: 1行目=SRC, 2行目=DST を丸ごと読み取り(空白や日本語を保持)
for /f "usebackq tokens=1* delims=" %%A in ("%FILE%") do (
if not defined SRC (set "SRC=%%A") else if not defined DST (set "DST=%%A")
)
echo.
echo 実行コマンド:
echo robocopy "%SRC%" "%DST%" /E /XO /FFT /Z /R:3 /W:5 /MT:2 /J
echo.
pause
robocopy "%SRC%" "%DST%" /E /XO /FFT /Z /R:3 /W:5 /MT:2 /J
echo.
echo 完了しました。
pause
robocopy オプション解説
- /E … サブフォルダごとコピー(空フォルダも含む)
- /XO … 古いファイルはスキップ(更新分だけコピー)
- /FFT … Googleドライブの2秒精度タイムスタンプに対応
- /Z … 中断しても再開可能
- /R:3 … 失敗したら3回リトライ
- /W:5 … リトライ間隔5秒
- /MT:2 … 並列コピーを2スレッドで実行(控えめに少しずつコピー)
- /J … バッファリングを使わない直接I/O
実行方法
- paths.txt と 差分コピー.bat を同じフォルダに置く
- 差分コピー.bat をダブルクリック
- 実行確認後、robocopyが差分コピーを実行
- 更新されたファイルだけが H:\共有ドライブ\40_共有\コピー先 にコピーされる
まとめ
- 個人アカウントからWorkspaceへの引っ越しでネックになる「移動できないファイル」にはコピー戦略が有効
- robocopy を使えば「更新分だけ差分コピー」できるので効率的
- 設定ファイル方式ならコピー先を簡単に切り替えられる
- chcp 65001 を入れることで日本語の文字化けも軽減できる
ファイル置き場