読者です 読者をやめる 読者になる 読者になる

nmtysh.log

Tech系のネタや日々の独り言などを書いています。

TimeMachineのバックアップが壊れたので修復する

唐突に
「Time Machine でのバックアップの検証が完了しました。信頼性を向上させるには、Time Machine によって新しいバックアップが作成される必要があります。」
こんなメッセージが表示されました。

外付けHDDを直挿ししている環境では遭遇しないのですがNASでTimeMachineを較正している環境で度々遭遇します。
一応バックアップ中にネットワークを切断しないように気を使ってはいるのですけどね……

これのたびにバックアップが消えると困るので(再構築はかなり時間がかかりますし)、修復することにしました。

ネットワーク上のsparsebundleを直接触るのは危険なので(遅いし)一旦ローカルにコピーしてから作業しました。
作業中にTimeMachineが動くと困るので、環境設定で無効化しておきます。

sudo chflags -R nouchg ~/Downloads/mac.sparsebundle
hdiutil attach -nomount -noverify -noautofsck ~/Downloads/mac.sparsebundle
fsck_hfs -drfy /dev/disk2s2

fsckに指定するデバイスファイルはhdiutilを実行した時のApple_HFSのデバイスを指定します。
fsckは時間がかかるので気長に待ちます。
終わったら取り外します。

hdiutil detach /dev/disk2s2

次にplistファイルを編集して「壊れている」という認識状態をクリアします。

vi ~/Downloads/mac.sparsebundle/com.apple.TimeMachine.MachineID.plist

# 次の2行を削除
<key>RecoveryBackupDeclinedDate</key>
<date>[date]</date>

# VerificationState の値を2に変更する
<key>VerificationState</key>
<integer>2</integer>

後はsparsebundleをネットワークドライブに戻してTimeMachineを再び有効にします。

手元の環境だと修復できたようです。
初期化せずにバックアップを継続出来ました。

参考