TimeMachineバックアップが壊れた

と思っていろいろ書いたものの、壊れていないみたいな気がする。もうしばらく様子を見よう。



MacBookを開いたら、「Time Machine でのバックアップの検証が完了しました。信頼性を向上させるには、Time Machine によって新しいバックアップが作成される必要があります。」というダイアログボックスが出ていた。後でと今すぐの2択。とりあえずググって公式サイトを確認。

Time Machine:「Time Machine でのバックアップの検証が完了しました。信頼性を向上させるには、Time Machine によって新しいバックアップが作成される必要があります。」について - Apple サポート

つまり、後でやるか今すぐやるか、どっちにしろ作り直さないとだめだ、みたいな雰囲気。役に立たない。

続いてサポートコミュミティ。

「新規バックアップが必要」というメッセージがでてくる | コミュニティ

英語で書かれてるけど、このとおりやったら治るよ、と。
Fix Time Machine Sparsebundle NAS Based Backup Errors | Garth Gillespie

訳してみることにした。

最後にあった注意点。ギガビットイーサで接続して実行する事。無線LANWi-Fiでやらないこと。実行中にスリープにならないようにすること。

では本文。
NASにsparsebundleバックアップがある場合に合わせて記事を修正した。NASというのはNetgearとかSynologyとかBuffaloとかQNapが出しているような製品とかFreeNASで作ったやつのこと。
このエラーは次の手順で治せるよ。Macからsparsebundleのある場所に接続して、ここで決してダブルクリックとかディスクユーティリティで修復とかはやらないこと。
ターミナルを開いて

sudo su -

とやってルートになる。これはパスワードが必要。
sparsebunldeは不正と記録されてしまっているので、まずは通常に戻す。

chflags -R nouchg /Volumes/{name of your network share}/{name of}.sparsebundle

これにはしばらく時間がかかる。次に

hdiutil attach -nomount -noverify -noautofsck /Volumes/{name of your network share/{name of}.sparsebundle

とやると、こんな感じのが表示されるはず。

/dev/diskx Apple_partition_scheme
/dev/diskxs1 Apple_partition_map
/dev/diskxs2 Apple_HFSX

xの部分は外部ディスクのディスクID。Apple_HFSX か Apple_HFSとなっているのがそれのはず。
ここで、ファイルシステムチェック中なことに気づいた。tailコマンドでログをみて確認しよう。

tail -f /var/log/fsck_hfs.log

もしfsckが動いていたら、経験で言うとsparsebunldeは修復できる。何時間かぶらぶらしてこよう。
チェックが終わったら、どちらかのメッセージが表示されているのでは。

The Volume was repaired successfully
The Volume could not be repaired

後者なら、このコマンドでもう一度修復をかけよう。

fsck_hfs -drfy /dev/diskxs2

ただし、xの部分は上で確認した対象のドライブを示す数字に変更する事。指定しているdrfyは、dがShow DebugでrがRebuildCatalog TreeでfがForceでyが自動Yesの意味。
ここでまた数時間でかけて、帰ってきたら

tail -f /var/log/fsck_hfs.log

もしうまくいっていたら、最後の行はこうなってるはず。

The Volume was repaired successfully

次に

hdiutil detach /dev/diskxs2

以上は、どのマシンからでも実行可能。
最後。ここまで完了したら、plistファイルを編集して、状態を正常にもどす。com.apple.TimeMachine.MachineID.plist の最上位で次の部分を消去。

RecoveryBackupDeclinedDate
{whatever-the-date}

次の部分を変更。

VerificationState
2

こうなっているところを次のようにする。

VerificationState
0

これで、ネットワークドライブをイジェクトしてTime Macineを動かしたら、長い検証のあとふたたびバックアップが動き出す。


というわけで、けっこう長い手順だったし、途中数時間待つっていうのがあった。やったら治るのかね。で、Time Machineを開いてみたら、普通に開けたけど、これは何かの間違いでエラーメッセージが表示されただけと思っていいんだろうか。