Time Machine Image auf einem Netzlaufwerk reparieren

Ab und zu kann es vorkommen, dass Time Machine das im Netz liegende Image neu erstellen möchte weil es der Meinung ist, dass es defekt sei. Prinzipiell hat Time Machine damit recht – mit dem Image ist meistens tatsächlich etwas nicht in Ordnung. Allerdings muss man deshalb nicht gleich seine ganzen Backups der letzten Monate wegwerfen und ein neues Backup anlegen. Meistens gelingt es, das Image zu reparieren und Time Machine akzeptiert es wieder.

Als erstes montiert man das (Netz)Laufwerk auf dem das Time Machine Image liegt. Dort findet sich eine Datei RECHNERNAME.sparsebundle. Das ist das Backup Image.

Man muss nun alle „immutable flags“, also jene Dateieigenschaft die es verhindert, dass Dateien (auch von root) verändert werden können. Je nach Größe der Time Machine Sicherung kann das ziemlich lange dauern. Das macht man mit dem folgenden Befehl:

chflags -R nouchg /Volumes/NETZFREIGABE/RECHNERNAME.sparsebundle

Als nächstes montiert man die Netzfreigabe auf der das Image liegt – meistens ein AFP Export eines Servers. Im Anschluss wird das Image (eigentlich ein Sparse Bundle) importiert – ohne es wirklich zu montieren:

hdiutil attach -nomount -noverify -noautofsck /Volumes/NETZFREIGABE/RECHNERNAME.sparsebundle

Das kann eine Zeit dauern, im Anschluss sollte die Liste der Partitionen des Images ausgegeben werden die in etwa folgendermaßen aussieht:

/dev/disk4 Apple_partition_scheme
/dev/disk4s1 Apple_partition_map
/dev/disk4s2 Apple_HFSX

Die für die Prozedur interessante Partition – also die mit den Daten – ist die Partition 2.

Als nächstes wird der eigentliche Dateisystem Check gemacht:

fsck_hfs -drfy /dev/disk4s2

Bitte hier wieder daran denken die Platte zu verwenden die weiter oben ausgegeben wurde. Die verwendeten Optionen sind: -d für Debug Output (damit wir sehen was der Check gerade macht), -Rc den Katalogbaum neu aufbauen (-r würde an dieser Stelle dasselbe tun), -f um den check zu forcieren auch wenn das Programm der Meinung ist, dass das Dateisystem in Ordnung wäre, -y um automatisch alle Fragen mit „ja“ (yes) zu beantworten.

Auch dieser Prozess kann eine ganze Weile dauern. Als nächstes wird das – jetzt hoffentlich reparierte – Image (nicht die Netzfreigabe!) vom System abgemeldet:

hdiutil detach /dev/disk4s2

Theoretisch sollte das Image nun wieder für Time Machine verwendbar sein. Allerdings führt Time Machine selbst Buch über Probleme und behauptet deshalb meistens immer noch, dass das Image defekt sein (ohne es nochmal überprüft zu haben). Deshalb muss man das entspr. Flag in einer plist korrigieren. Dazu wechselt man in das RECHNERNAME.sparsebundle Verzeichnis und sucht die Datei com.apple.TimeMachine.MachineID.plist . Da es keine binäre plist Datei ist kann man sie mit vi oder einem anderen Editor bearbeiten ohne einen plist-Editor verwenden zu müssen.

Folgendes sucht man in der Datei:

<key>VerificationState</key>
<integer>2</integer>

Falls der Wert nicht auf „0“ steht muss dieser angepasst werden:

<key>VerificationState</key>
<integer>0</integer>

Datei speichern und – fertig.

Beim nächsten Backup macht Time Machine einen Check das Images der diesmal ohne Fehler durchlaufen sollte. Und dann sollte auch den gewohnten Time Machine Sicherungen nichts mehr im Weg stehen.