半年ほど前、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は書き出す対象を選べるので、

  1. 対象を絞ってエクスポート → Driveに出る
  2. サーバーがrcloneで引いて、手元にコピーできたことを確認
  3. Drive上のアーカイブを消す
  4. 次の範囲でまたエクスポート

を数回繰り返せばいい。手数は増えるが、この作業も「押して放置」なので蓋を閉じられないという問題は起きない。年に数回の作業として十分許容できる。

おまけ: この結果、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を開いてほしい。