半年ほど前、Google垢BANに備えて1TBの家族写真をNASに逃がすという記事を書いた。Google Takeoutで全データを書き出して、MacBookのブラウザのダウンロード先をNASに向けて流し込む、という運用だ。
これを2ヶ月に1回やることにしていたのだが、実際に回してみると地獄だった。
そして先日、この地獄が全部わたしの見落としだったことが判明した。備忘録として残しておく。
何が地獄だったか
Takeoutは1TBを1ファイルでは吐かない。50GBごとに分割して、20個くらいのアーカイブを生成してくる。
そして、そのダウンロードはブラウザのGUIから1個ずつ押していく必要がある。まとめてダウンロードするボタンはない。
問題はここからで、わたしは昼は事務所、夜はリビングで作業している。つまり作業中にMacBookが移動する。
- 蓋を閉じるとダウンロードが死ぬ。 移動のたびに転送が失敗する
- Wi-Fiが切り替わると死ぬ。 事務所のAPからリビングのAPに切り替わった瞬間、Chromeのダウンロードは再開してくれないことがある
- だから蓋を閉じられない。 20個 × 50GBが終わるまで、MacBookを開いたまま持ち歩くという珍妙な運用になる
「デカいファイルなんだから時間がかかるのは当たり前」と思って、我慢して回していた。1TB級のデータを個人が動かすというのはそういうことなんだろう、と。
違った。
見落としていたもの
Takeoutのエクスポート設定画面には、ステップ2に「配信方法」という項目がある。ここのデフォルトが「ダウンロードリンクをメールで送信」になっている。
そして、そのプルダウンを開くと、こう並んでいる。
- ダウンロードリンクをメールで送信
- Googleドライブに追加
- Dropboxに追加
- OneDriveに追加
- Boxに追加
Googleドライブに追加。
つまりTakeoutは、最初からクラウド間の転送ができた。ローカルにダウンロードする必要など、一度もなかったのだ。
なぜ気づかなかったのか
言い訳をさせてほしい。というか、同じ罠にハマる人がいると思うので書いておく。
「データをエクスポートする」と「データをダウンロードする」を、完全に同じ意味だと思い込んでいた。
Takeoutの正式名称は「データ エクスポート」で、目的は「Googleから自分のデータを取り出すこと」。取り出す先といえば手元のPCに決まっている、と何の疑問もなく考えていた。だから配信方法のプルダウンを一度も開かなかった。デフォルトのまま「エクスポートを作成」を押していた。
しかしGoogleから見れば、Takeoutは「あなたのデータを、あなたが指定した場所に置くサービス」でしかない。その置き場所がGoogleドライブでも、Googleにとっては何も不自然じゃない。
思い込みで潰していた選択肢が、ラジオボタン1個の距離にあった。半年分の徒労である。
これで何が変わるか
構図が根本的に変わる。
【これまで】
Takeout → メールでリンク → MacBookのブラウザで20回クリック → NAS
↑ここが数日かかり、蓋を閉じられない
【これから】
Takeout → Googleドライブに直接出力(Google側が勝手にやる)
↓
自宅サーバーがrcloneで引く
↓
外付けHDD
MacBookが転送経路から完全に消える。
MacBookの仕事は「Takeoutを発注する」だけになった。設定画面をぽちぽち押して「エクスポートを作成」を押す、数分の作業。あとは蓋を閉じて持ち歩いていい。
Googleが数時間から1日かけてアーカイブを作り、勝手にDriveに置いてくれる。それを自宅の常時起動サーバーが有線LANで引く。サーバーは移動しないし蓋もないので、何時間かかろうが知ったことではない。
Driveから自宅サーバーへはrcloneで引く
Driveに置いたあとはrcloneの仕事だ。
sudo apt install rclone
rclone config # 新しいremoteを作り、種類は drive を選ぶ
ヘッドレスのサーバーでもOAuthは通せる。設定の途中で「このマシンでブラウザを自動起動するか」と聞かれるのでNoと答えると、こんなコマンドを表示してくる。
rclone authorize "drive" "<client_id>" "<secret>"
これをブラウザが使えるマシン(わたしの場合はMacBook)で1回だけ実行して、認証後に出てくるトークンをサーバー側に貼り付ける。以降サーバーは単独でDriveを読める。ここはrcloneが公式に用意しているヘッドレス用のフローで、まったく無理をしていない。
スコープは読み取り専用(drive.readonly)にしておくのがいい。バックアップで書き込む用事はないし、事故でDrive側を壊す経路を最初から塞げる。
あとはこれだけ。
rclone copy gdrive:Takeout /mnt/backup/takeout-2026-08 \
--progress --transfers 4 --checkers 8
syncではなくcopyを使うこと。 syncは転送元に無いファイルを転送先から消すので、過去世代のアーカイブを残しているとまとめて吹き飛ぶ。
sshが切れても死なないよう、tmuxの中で回すかsystemdのユニットにしておく。ここまでやると、あとは翌日ログを見るだけになる。
ハマりどころ: rcloneのデフォルトclient_idは共有枠
1つだけ注意点がある。rclone configでclient_idを空欄のままにすると、rclone全ユーザーで共有されている公式のOAuthクライアントが使われる。これはレート制限が厳しく、TB級を引くと途中で露骨に遅くなる。
Google Cloud ConsoleでDrive APIを有効にして自分のOAuthクライアントIDを作り、それを設定する。無料だし10分で終わる。大きいデータを引くなら必須と思っていい。
「rcloneは却下」と書いた前回とは矛盾しない
前の記事でわたしは「rclone等のAPIツールでの自動ダウンロードは却下」と書いた。今それを使っているので、補足しておく。
却下したのはGoogle Photos APIから写真を直接引く構成だ。これは今も駄目で、理由も変わっていない。
- API経由で取れる画像は圧縮されていることがある
- 位置情報(GPS)などのExifが落ちる
- アプリ経由でアップロードした写真しか取れないなどの制約がある
「完全な複製」が目的なので、劣化コピーには意味がない。実際、GoogleはPhotosのAPIを年々絞っており、ここに賭けるのは筋が悪い。
今回使っているrcloneはGoogle Driveのバックエンドで、扱うのは「Takeoutが吐いた完成済みのアーカイブファイル」だ。中身がなんであれ、rcloneから見ればただのデカいZIPである。写真として解釈しないので、劣化もExif欠損も起きようがない。
つまりこの構成は、
- オリジナルデータの完全性 → Takeout(Google公式のエクスポート)が担保
- 転送の自動化 → rclone(汎用のファイル転送)が担保
と、両者のいいとこ取りになっている。前回「APIは駄目、Takeoutは手作業」という二択で考えていたのが、そもそも間違いだった。
注意点: Drive側の空き容量が要る
万能ではない。Googleドライブに出力する以上、アーカイブを置くだけのDrive容量を消費する。
写真1TBを持っている人がその全部をTakeoutでDriveに吐くと、単純に写真1TB + アーカイブ1TB = 2TBを食う。Google One 2TBプランだと入り切らない。
対策は分割で、Takeoutは書き出す対象を選べるので、
- 対象を絞ってエクスポート → Driveに出る
- サーバーがrcloneで引いて、手元にコピーできたことを確認
- Drive上のアーカイブを消す
- 次の範囲でまたエクスポート
を数回繰り返せばいい。手数は増えるが、この作業も「押して放置」なので蓋を閉じられないという問題は起きない。年に数回の作業として十分許容できる。
おまけ: この結果、NASが不要になった
副作用として、Raspberry Piで組んだNASの存在意義が消えた。
あのNASは「移動するMacBookの代わりに、動かない場所でデータを受け止める」ために作ったものだ。MacBookが転送経路から消えた今、その役割はもう自宅サーバーが持っている。
そこで、8TBのHDDを自宅サーバーに内蔵してNASを売ろうと考えた……が、これも計算したらやめることにした。
3.5インチHDDは回りっぱなしで4〜6W、読み書きで7〜9W食う。単体なら月100円ちょっとで大したことはないのだが、うちのサーバーは「ドライブ0台だからSATAコントローラごと省電力状態に落とす」というチューニングをしてある。1台でも挿すとそれが永久に無効になり、実質5〜8Wの常時上乗せになる。
年に2回しか使わないディスクのために、月100〜180円を12ヶ月払い続けるのは、どう考えても割に合わない。
結論はこうなった。
- Raspberry Pi本体は売る
- 8TB HDDはUSB外付けケース(3.5インチ用のACアダプタ付き、3,000円くらい)に入れる
- 取り込むときだけサーバーに挿す。終わったら抜いて引き出しにしまう
消費電力はゼロになるし、バックアップとしてもこちらのほうが強い。常時マウントされているディスクは、誤操作やランサムウェアでクラウド側と一緒に飛ぶ。物理的に外れているコピーは、そういう事故の巻き添えを食わない。
まとめ
- Google Takeoutは出力先にGoogleドライブ(やDropbox、OneDrive、Box)を選べる。 「ダウンロードリンクをメールで送信」はただのデフォルトであって、唯一の選択肢ではない
- これを使うと、PCが転送経路から消える。移動するノートPCに数日がかりの転送をさせるという構図そのものが消滅する
- Driveに出したアーカイブは、サーバーからrcloneで引ける。ヘッドレス機でもOAuthは通る。自前のOAuth client_idは作っておくこと
- Google Photos APIから直接引くのは今も駄目(劣化・Exif欠損)。Takeoutで完全なアーカイブを作り、それをrcloneで運ぶのが正解だった
半年間、蓋を開けたMacBookを抱えて家と事務所を往復していたのは、プルダウンを一度も開かなかったからだ。
「面倒だが、こういうものだ」と受け入れた瞬間に、思考が止まる。 手作業が異様に苦痛なときは、だいたい自分がどこかで選択肢を見落としている。今回はそれを1TB分のダウンロードで教わった。
同じことをやっている同志がいたら、今すぐTakeoutの設定画面のステップ2を開いてほしい。