Fixing your Time Machine backup
When you have Time Machine enabled on your Mac and you use a network storage device (NAS, like Time Capsule or devices made by Synology, Western Digital, Buffalo, Netgear, …) to house the backup, the following may have happened to you:
Out of the blue, when it's time for Time Machine to save the latest backup, it may happen that, instead of writing the actual backup, Time Machine will take a longer time as usual to prepare the backup. Then, you get a nice error message saying something along the lines of:
Time Machine completed a verification of your backups. To improve reliability, Time Machine must create a new backup for you.
Well, that means that:
- Time Machine will delete all your existing backups, and
- create a completely new initial backup.
This is bad in two ways: 1) it will take forever and 2) you loose al your previous backups.
Fortunately, there is a quite simple solution that let's you repair your current time machine backup and allows you to keep all your valuable saved data in most of the cases.
Please note: You should do the following steps with your network device being attached over a wired gigabit network connection. Don't try to use them on Wifi connected devices as it might literally take days to complete.
Time Machine will save all backups and every piece of meta information into a *.sparsebundle file on your network storage device. So this is the file we need to fix.
In order to access it, you need to connect to your networks device share that contains the backup with Finder. It will hold one or more *.sparsebundle files in its root, one for each Mac that uses this drive with Time Machine.
After that, open a Terminal window and switch to the root (=admin) user with the following command:
sudo su -
Enter your password if you're asked to do so.
When you see the error message I talked about above for the first time, Time Machine has already flagged your backups *.sparsebundle file as bad. As a first step, we need to undo this:
chflags -R nouchg /Volumes/<name of network share>/<name of backup>.sparsebundle
Make sure to replace
<name of network share> and
<name of backup> accordingly and give it a while to finish.
Mounting your backup
Next, we need to mount your backups *.sparsebundle file to enable your system to run a few checks on it:
hdiutil attach -nomount -noverify -noautofsck /Volumes/<name of network share>/<name of backup>.sparsebundle
This command will return something like this:
/dev/diskX Apple_partition_scheme /dev/diskXs1 Apple_partition_map /dev/diskXs2 Apple_HFS
What is important to us is the line containing
Apple_HFSX (this usually is the last line) which is the device ID followed by the device type. The
X will be replaced with a number which will be anywhere between 2 and 6 or even higher. So, you want to take note of the device ID that looks something like
Repairing the *.sparsebundle
Now we can finally let OS X do its magic of trying to repair the file. Run the following command after replacing the dummy device ID with your own:
fsck_hfs -drfy /dev/diskXs2
With this kicked of, you may want to go have a coffee or two as this may take anywhere from 15 minutes to multiple hours, depending on the size of your backup and the speed of your network connection.
After the command finished, you'll either see »The Volume was repaired successfully« or »The Volume could not be repaired«.
Either way, you need to unmount the backup before taking any further steps:
hdiutil detach /dev/diskXs2
If the repair command from the previous step failed, there's not much you can do about it and your backups are lost for real probably. You should just let Time Machine create a new backup for you.
If it succeeded though, there is a last step we need to take in order to convince Time Machine to keep using the existing backup.
Use the Finder to navigate to the backups *.sparsebundle file and with a right click, choose »Show package contents« to get a look inside. There you'll find a file called
com.apple.TimeMachine.MachineID.plist. Since Time Machine uses this file to mark bad backups, too, we need to modify it slightly.
Open the file with a text editor of your choice and find the line saying
and remove them completely. Next find the lines
and change them to
Done. You probably want to eject/unmount the network share from your finder and tell Time Machine to do another backup now.
Disclaimer: There's no guaranty that the steps mentioned here will repair every single broken Time Machine backup. If not handled with care, they may create even more damage. Keep this in mind, when following along.