« Stackoverflow DevDays London | Main | Code formatting in C++ Part Two »
Saturday
Oct102009

Using a networked drive for Time Machine backups (on a Mac)

You'll find similar information to this around the web, but I find it fiddly enough to piece together reliably, and I need it often enough, that I thought I'd blog about it. That way it at least gives me a single place to look. Maybe it will help others too. Much of the specifcs, especially the hdiutil command line and the ifconfig trick, I sourced from this thread in the ReadyNAS forums. Note that the advice is by no means specific to ReadyNAS drives (I have a Thecus NAS myself). Many thanks to btaroli in that thread for the insight.

Time Machine

Time Machine is Apple's easy-to-use backup system, baked into OS X (as of Leopard). Unfortunately it doesn't allow you to back-up to a networked drive out of the box. Enabling this ability is pretty easy. Early on there were some reliability issues - which were largely due to the fact that Time Machine created a disk image (more specifically, a sparse bundle) on the network drive, and this was prone to corruption if the network connection was disrupted during a backup. I don't know if all the issues here have been entirely resolved now, but it does seem more reliable. Apple's own Time Capsule, which has been specifically designed to work with Time Machine, uses this same method, so it is no longer an entirely unsupported technique.

Enabling Time Machine for network drives

So how do you enable backing up to network drives? Open a terminal window and paste the following in (then hit return, of course):
defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
Mounted network drives will then show up in the list of destinations available for storing backups.

Getting a working disk image

Unfortunately this is not always enough. Often, after doing this, Time Machine will appear to start preparing a backup then fail with a cryptic error code. The error I have seen is:
Time Machine could not complete the backup.
The backup disk image "/Volumes/backups-1/Wall-E.sparsebundle" could not be created (error 45).
"Error 45"? What's that. If I try to create a sparse image myself in the same location I'm told, "the operation could not be completed". This is not much more helpful. If you google there are many references around to these errors - mostly in forums. Many of them are not terrible helpful, or require a lot of knowledge and/ or patience. I still don't really know what the problem is, although I suspect it's something to do with permissions and/ or attributes. Either way the solution generally seems to be to create the sparse image manually using a command called hdiutil. If you get this right then Time Machine will think it created it and just start using it. Simple eh? Well, it's not rocket science - but it does involve piecing a few things together. The name of the sparse bundle has to be something very specific which is made up from a few pieces of information unique to your set-up. I'll now take you through how to find those pieces of information.

Finding the Computer Name

We'll start with the easy one. The computer name. Specifically this is whatever the computer is named in the Sharing preferences. So open System Preferences, select "Sharing", and copy the name from the "Computer Name" section at the top.

Finding the MAC Address

This is the physical address of your network card (not your IP address, which is a logical address. Also the term "MAC" here is nothing to do with your Mac as a computer - it stands for Media Access Control address). Now you have to be careful here. Most macs these days have at least two network cards! You will probably have an ethernet port (for a network cable connection) as well as wifi. You may also have a USB based device, such as a mobile broadband device. Regardless of which one you use to connect to the network drive you'll be backing up to, the address we need is of the first network card (usually the ethernet port). If this seems a bit odd at first, consider the case where you usually connect over wifi, but to do an initial backup you connect by cable. If the backup name was dependant on the network connection used this wouldn't work. The address is only used to identify your computer. Anyway, it turns out there is an easy way to obtain this. Back in the terminal window, type the following:
ifconfig en0 | grep ether | awk '{print $2}' | sed 's/://g'
What's that doing? The short answer is "don't worry, it works". The slightly longer answer is that ifconfig dumps all the information it has about all it's ethernet ports. The first port is called en0, so the command ifconfig en0 dumps information about just that one. The pipe character, |, is the unix instruction for sending the output of one command to the input of the next. So we send the information from en0 to "grep ether", which filters out just the lines that have the word "ether" in them - which in this case happen to be where the MAC addresses are shown. To get that line into the form we need for our filename we pipe it to another command, awk, which just picks out the second part of the string, then finally to sed, which removes the colons. Phew. Like I said, it just works. Trust me.

Creating the sparsebundle

Now we have the information we need to create the name of the sparsebundle. Following is the instruction you need to issue to create it. Replace the <mac address> and <computer name> placeholders with the information we obtained above. You may need to change the size parameter (320g here) if you have a large drive to back up. The disk image doesn't take up that space to start with, but will grow up to the size you specify here, so use it to set an upper limit. Also you will be prompted to enter your admin password (sudo runs the command as SuperUser):
sudo hdiutil create -size 320g -type SPARSEBUNDLE -nospotlight -volname "Backup of <computer_name>" -fs "Case-sensitive Journaled HFS+" -verbose ~/Desktop/<computer_name>_<mac address>.sparsebundle
Note that this will create the sparsebundle on your desktop. Once there you can copy it to the desired location on your network drive (then delete from your desktop). This seems to be more reliable than creating it in place. Once you've done that you can start Time Machine and point it at the drive where the sparsebundle resides and it will find it and start using it. If this still fails, check that the name is exactly right and that you followed all the steps above carefully. Now sit back and relax, knowing that all your hard work is being backed up.

PrintView Printer Friendly Version

EmailEmail Article to Friend

References (1)

References allow you to track sources for this article, as well as articles that were written in response to this article.
  • Response
    Response: Time Machine OS X
    Time Machine OS X

Reader Comments (192)

Thankyou so much for this great article/post. I have a Freecom FSG 3 connected via ethernet and could not initially get this to be recognised/seen by time machine (found another post to solve this through terminal) and then it kept failing to backup with error 45.

This worked an absolute treat and time machine is now creating my backup!

Cheers, Stuart

March 28, 2010 | Unregistered CommenterStuart

Thanks for this simple explanation. I knew it couldn't be as complicated as many others were making it, but I had no way to figure it out. Thanks again.

April 4, 2010 | Unregistered CommenterAaron

Thank you.

Without your sound advice I was struggling on three fronts:

1 - using the wifi mac address instead of the ethernet one
2. the correct formatting of the sparsebundle (which can also be done through the gui disk utilitly)
3. including a uuid plist file inside the sparsebundle, which is not necessary

Thanks to you I have now completed two successive backups to my whs from my imac i7 using a wireless connection via an airport extreme to the whs gigabit box.

Thanks again

April 8, 2010 | Unregistered CommenterMobes

I'm glad to hear this post is still helping people. Thanks for all your comments.

April 8, 2010 | Registered CommenterPhil Nash

Phil, Thank you for this post. I have a Buffalo Linkstation Duo LS-WX2.0TL/R1, and there was no way to let it work with Snow Leopard. With your post I had it up and running in 20 minutes. Thank you again for your help.

April 11, 2010 | Unregistered CommenterFabio

Thanks Thanks Thanks!
I am writing you from Italy and i had the same problem with an Iomega 1Tb network Drive and Leopard.
Now it's working fine!
You deserve a pizza, if you pass from Milan, drop me a line!
max

April 11, 2010 | Unregistered Commentermax

@Max - I might take you up on that :-)

April 11, 2010 | Registered CommenterPhil Nash

Thanks, worked perfectly.

April 11, 2010 | Unregistered CommenterMark

Phil, thanks for the clear instructions. I can't wait to try them out. Since this is a bit of a hack to set up, are you aware of any issues in using the time machine backup to restore from? If doing a bare metal restore, do you just boot from the OS X installer DVD and point it to the remote Time Machine sparse image?

April 13, 2010 | Unregistered CommenterJeff

@Jeff Personally I've always done a clean install then connected to the Time Machine image to selectively restore - but I don't see any reason why you couldn't do a full restore from it. Remember this is using the same system as the Time Capsule (I believe the reason the experience is smoother on a Time Capsule is that the drive is formatted as a Mac Journaled volume).
So in short I would expect it to work but don't rely on my word. However if all else fails you can do a selective restore anyway.

April 14, 2010 | Registered CommenterPhil Nash

You are a LEGEND!!! Thankyou to you and to all those who care enough and are decent enough to share their knowledge!
Nick

April 19, 2010 | Unregistered CommenterNick Laurie

I must be the only one not working yet:

sudo hdiutil create -size 320g -type SPARSEBUNDLE -nospotlight -volname "Backup of Michael Shields' Computer" -fs "Case-sensitive Journaled HFS+" -verbos "~/Desktop/Michael Shields' Computer_00:1b:63:94:a4:e8.sparsebundle"

Nothing happens; I get no response from the system. Neither the file is created or any errors.

Any help would be appreciated.

TIA!

April 24, 2010 | Unregistered CommenterBigM

@BigM - you had "-verbos" in that command line. Is that exactly how you wrote it? It should be "-verbose"

April 25, 2010 | Registered CommenterPhil Nash

Many thanks for posting this well-presented guide.
Resources like this make the world go round :~)

A very happy Bunny

May 7, 2010 | Unregistered CommenterWSM

I was a bit early with my last post - I created the stub, copied it to the NAS, then started the Time Machine backup.
I posted my thanks before it came back as failed.
So...
I'd like to add a little information:

My failure was due to me entering the MAC address of the built-in Airport (a safe assumption, I thought).
When I repeated the exercise using the Base-T Ethernet MAC address, the backup actually started (and is currently 1.58GB into a 10.97GB backup. Note: I am NOT using the Base-T ethernet, I AM using the Airport Wi-Fi.

Happy hunting, folks..

WSM

May 7, 2010 | Unregistered CommenterWSM

Thanks a lot for this post,

I was finally able to uses my NMH 410 Mediahub from Linksys as a NAS to backup to with Timemachine.
Well, the first backup is running, quite slow i have to say, but i guess the following incremental ones will work much faster.

Thanks again for the great instruction, i am a Mac newbie and i appreciate the good documentation a lot.

Daniel

May 9, 2010 | Unregistered CommenterDaniel

@Daniel: thanks for feedback.

@WSM: Which one did ifconfig en0 give you?

May 10, 2010 | Registered CommenterPhil Nash

Thank you very much!. I followed the steps and it is working great!

May 12, 2010 | Unregistered CommenterEyehouse

At last! Someone who can summarize these instructions properly. Thanks!

May 26, 2010 | Unregistered CommenterFrancois Nolte

Phil,

I just wanted to sincerely thank you for your clear and concise instructions. As a brand new Mac user, I found this to be a daunting task until I stumbled across your site. Thanks once again from Montreal!

Vince
P.S. To anyone interested, I was able to succcesfully apply Phil's solution with my 2 TB Western Digital My Book Essential connected via USB to a Linksys WRT610N Router. I created a 500 GB NTFS partition solely for Time Capsule.

June 10, 2010 | Unregistered CommenterVincent G.

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>