How to repair time machine after it loses its history

I'm running Mavericks 10.9.4 on a MacBook Pro. I do time machine backups regularly to a Synology NAS (behind a Fritz Box router). This worked well all the time. The last backup has been made last Thursday before I went into weekend.

Today I suddenly got the message that my backup is 230 days old, so I started to investigate, since this can't be. TM says, first and last backup are from February 3rd 2014. When I mount TM I also only get this choice to restore data from, so I aborted.

Looking at the logs from today I get the following kernel and backupd related lines: https://gist.github.com/kassi/f5c3e379d8af21f71415

Interesting parts in the log (in the gist)

  • Sep 21 22:08:39: it starts a typical backup (somehow 360 MB require 2.97 GB)
  • Sep 21 22:19:13: post-backup thinning reports several lines

of the following

Sep 21 22:19:13 hamal.fritz.box com.apple.backupd[2349]: Error: Error Domain=NSOSStatusErrorDomain Code=-50 "The operation couldn’t be completed. (OSStatus error -50.)" (paramErr: error in user parameter list) deleting backup: /Volumes/Time Machine-Backups/Backups.backupdb/hamal/2014-09-21-220952.inProgress/6567A66B-EB3A-45DF-BEBF-EFD8C8D90AD5
  • Sep 21 22:20:56: it deletes some older backups (why? no hint given)
  • Sep 21 22:23:55: same error for basically every backup I'm missing

like the following

Sep 21 22:23:55 hamal.fritz.box com.apple.backupd[2349]: Error: (20) getxattr for key:com.apple.backupd.SnapshotContainer path:/Volumes/Time Machine- Backups/Backups.backupdb/hamal/2014-08-31-103145
Sep 21 22:23:55 hamal kernel[0]: disk4s2: 0xc014 (UNDEFINED).
  • Sep 21 23:05:59: several errors

of the following

Sep 21 23:04:02 hamal.fritz.box backupd[349]: Property list invalid for format: 200 (property lists cannot contain NULL)

Backup volume

The backup volume looks fine. No error reports and it's not full:

Sheratan> df -h /volume1/Time\ Backup/
Filesystem                Size      Used Available Use% Mounted on
/dev/vg1000/lv            3.6T    708.2G      2.9T  19% /volume1

On the web

I found this thread: Time Machine fails related to "Property list invalid for format: 200 (property lists cannot contain NULL)" and added some irrelevant path to my exclude list, but without any difference.

Does someone have an ides what might go wrong when following the hints in https://discussions.apple.com/thread/5087920?start=0&tstart=0?

Any clue what went wrong here and how to get my backup history back into TM?

Thx


Solution 1:

Had a similar issue, but I didn't have a backup of the plist file to replace, so I did the following to recreate the SnapshotDates array:

Removed the last couple backups (in Finder; was unable to do it in Terminal likely due to system protection enabled). Then opened terminal and executed the following:

$ cd /Volumes/[Backup Volume]/Backups.backupdb/[hostname]
$ for x in `ls`; do echo -n $x | sed -E "s/^([0-9]+-[0-9]{2}-[0-9]{2})-([0-9]{2})([0-9]{2})([0-9]{2})/<date>\1T\2:\3:\4Z<\/date>/"; done

That outputs all the snapshots in <date>....</date> format; I copied those, then in com.apple.TimeMachine.prefs, found the appropriate backup volume under the Destinations element, and overwrote the contents of the SnapshotDates array (not the <key>SnapshotDates</key>, but everything inside the following <array>...</array> tags) with the copied lines.

Fixed indentation of the elements to match, and saved the file.

I haven't completed a new backup yet, I'm still waiting for the corrupt backups to finish getting deleted, but the date ranges of the existing backups now show properly.