突如Time Machineバックアップが連続失敗
以前から1〜2年に1回くらいの割合でネットワーク経由のTime Machineバックアップは失敗したり、バックアップファイルが壊れて取り直したりというのがあった。ただ今回は、定期のバックアップが始まって暫くはプログレスバーが動いて進捗を容量ベースで表示してくれるもある程度進んでから「ファイルのコピー中にエラーが起きました」で止まるというもの。これまで経験したエラーは、プログレスバーが出る前の段階でのものだったので、これは初のパターン。
最初はてっきりファイルサーバ兼用のEl Capitanマシン(macOS serverインストール済でTime Machineサービスが動いている)上のディスクイメージが不良かサービスの設定がおかしくなったかと思ってあれこれいじるも解決せず。しかしふとググった一覧に、DropBoxのディレクトリをTimeMachineバックアップ対象外指定云々という文字列が目に入った。
そういやOneDriveのファイルオンデマンドを有効にしてた
ちょうど二日ほど前にSSD容量を空けようと、近年macOS用OneDriveアプリでも実装されたファイルオンデマンド機能を使い始めたことを思い出した。機能を有効にすると、Finder上ではファイルやフォルダのコンテキストメニューから「空き容量を増やす」でファイルの実体がローカルストレージから消えクラウド側に残される。
OneDriveをバックアップ対象外にして解決
システム環境設定.app > オプション… > バックアップ対象から除外する項目
で[+]を押してOneDriveの同期対象フォルダを指定。ファイルオンデマンドを使うサブフォルダが決まっているならそれらを個別に指定してもいいはずだが、面倒なので一括。エラー出た後に変にいじってなければ、そのまま継続して差分バックアップしてくれる。
どうしてこうなった
ファイルオンデマンド状態のファイルは他のアプリがアクセスしようとするとそのタイミングでクラウドからファイルの実体が取得されてようやくアクセス可能になるわけだが、バックアップ処理では当然全部のファイルにアクセス要求するわけだ。これを素直に受け入れてしまうと、せっかくクラウドのみに置くことでローカルストレージ容量を節約しているのに全部のファイルについて実体をローカルに持ってきてしまい、ファイルオンデマンドの意味が無い。選りすぐった一部だけの実体を持つ、のがファイルオンデマンドの本領発揮。よって、バックアップ処理の際にファイル実体を取ってこない仕様になっているのだろう。
クラウドストレージの領域は別途ローカルでもバックアップ取る?
- 取らない説
- クラウド上に原本あるんだから別に取らなくてイイじゃん説
- クラウド上の原本と版が矛盾したり今回のトラブル事例あるからむしろ取るな説
- 取る説
- クラウドストレージはバージョン管理がないので取っとく説
- ただしバージョン管理付きのストレージサービスもまた多い
- クラウドストレージは誤操作で消した経験にトラがウマってるので取る説(筆者)
- クラウドストレージはバージョン管理がないので取っとく説
とりあえずSSDのみのMacBook Airはファイルオンデマンドを使いたいのでOneDriveはバックアップ対象外、別途OneDriveとフル同期してるマシンではまるごとバックアップで当面運用してみることにした。
バックアップ時にファイル実体を取ってこない設定
ここにあった。
メニューバー > OneDriveアイコン > […]その他 > 基本設定 > ファイルオンデマンド/アプリの管理
ここの「アプリケーション」一覧に "com.apple.pres.backup.remoteservice" が在るならば、Time Machine バックアップ時にクラウドからファイル実体を取得しない。おそらくこれを削除すると、バックアップの度に(つまりいつの間にか)せっかくファイルオンデマンドにしたのに全部ダウンロードし直されてしまう、という現象が出るのだろう。
参照
解決してからググったらもろ該当の事例が既にあった。
【解決】macOS MojaveのTimeMachineバックアップが失敗する事象(青星総合研究所)