Backup (or backing up) your iTunes & iPhoto databases

So you spend hours importing music and photos into iTunes and iPhoto, painstakingly crafting those playlists, ratings, smart albums etc. You entrust all that hard work into proprietary, closed file formats (the iApp databases), whose applications are known to have flaws and can crash, destroying all your hard work; wouldn't it be a horror if you lost it all? "But I back up!" I hear you cry; sure, don't we all, but how often do you run that backup? Once a month? Once a week if you're keen? Wouldn't it still be a pain to lose what you did just yesterday? Here I present a solution - a script that'll back up just your iTunes and iPhoto databases (and Camino bookmarks, natch) as often as you choose.

Now those of you who've made the jump to Leopard (good luck to y'all ;o) will be sitting pretty what with your Time Machine and all, but what about those of us with older versions of OS X and no plans to upgrade? Let alone buying a huge external firewire drive and leaving it plugged in the whole time! This howto is for us.

 

  1. Download the script from Resources above, put it somewhere sensible (how about ~/Documents/Scripts) and make it executable:
    • Open Terminal
    • cd ~/Documents/Scripts
    • chmod 755 iBackup.sh
  2. Create a folder for the script to put the backups into - it needs to be somewhere within your home folder (I use ~/iBackups).
  3. Open the script in your favourite text editor. You need to configure the variables that store the folder locations as follows:
    • HomeDir - replace XXXX with the name of your home folder (whatever your short username is).
    • BupPath - I use a folder called 'iBackups', change this to match the folder you created in step 2 above.
    • iPhotoPath, iTunesPath - confirm that these are correct for your machine.
    • CaminoPath - confirm that this is correct for your machine. If you don't use Camino, delete "${CaminoPath}/bookmarks.plist" from the line beginnning tar lower down in the script. If you don't, it will run just fine and back up the other files but will complain that it has failed to complete the backup.
  4. Test it:
    • Open Terminal.
    • cd ~/Documents/Scripts
    • ./iBackup.sh
  5. If that worked, all that's left is to have the script run automatically and regularly. For this, I use the cron daemon that's built into OS X, combined with an install of trusty Anacron, which makes sure that tasks run even if they were scheduled whilst your machine was switched off.
    • Install Anacron.
    • Open Terminal.
    • cd /etc
    • sudo pico daily.local (assuming you want to back up every day, else use weekly.local or monthly.local)
    • Add this: sh /Users/<your short username>/Scripts/iBackup.sh
    • Type Ctrl-X and follow the prompts to save and exit.
  6. You're done. Sit back and watch your iBackups folder slowly consume your remaining disk space. I must now get around to implementing the 'delete backups more than a month old' feature...