
There are many, many different ways to back up your Ubuntu system. Here we’re going to look at two of them, one of which is a full system backup and the other is a way to copy folders and files. The point of this article isn’t to be super inclusive of every method under the sun, but to provide a guide as to how I do this and why it works for me.
All of my backups are done to an external drive. In my case, this is a firewire drive that is mounted in my /media directory. There’s nothing stoping you form doing this to a network drive, a separate partition or even your primary partition. However, you do have to be cautious of your space limitations. Backing up a 3 GB install onto a 40 GB disk is fine, but backing up 63GB of data to your 80GB drive… not so good. This is one of the two reasons I use an external 200 GB drive. Lots of space. The other reason is that moving a backup file off of my primary partition after I’m done backing it up just seems like an extra step.
There are two types of backups that I do. The first is a backup of several key folders, not my entire system. This is in case I blow something away, or lose some data that I’d want to get back quickly.
I use the rsync command for this. Rsync is a simple and fast way to make an exact copy of something. That something can be a single file or a whole file system.
Now my external hard drive is a firewire drive, which Ubuntu thoughtfully mounts in /media for me with the wonderful name of ‘ieee1394disk’. That’s where I want to keep this backup copy. Let’s open up a terminal session and go backup some stuff.
cd /media/ieee*
Now I’m in my external drive. If you have a USB disk, chances are it’s under /media/usbdisk or /media/whatevertheheckyoucalledit. I’m going to make a folder to store this backup in because I’m something of a filesystem neat freak.
mkdir arsgeek_backup
cd arsgeek_backup
Now there are four directories that I back up on a regular basis. These are my /home directory, my /etc directory my /opt directory and my mp3 collection.
My mp3’s are located on a FAT32 partition mounted in /media/sda5 in a folder called music. So here’s the command I use to copy all of these.
rsync -arvu /home /etc /opt /media/sda5/music .
Here’s what the switches after the rsync command mean. a= archive, r= recursive, v= verbose, u= update and z= compress.
What I like about this is that while the first rsync does take some time to copy all of these files and folders the first time it’s run, the next time it’s run it only adds new stuff. So if I run this once a week and the only changes that were made was that I added several new mp3s to my music directory, it will only copy those new files.
If I accidentally deleted an mp3 that I wanted, I could easily (and through the GUI) go to my external drive and copy it back. Or if I accidentally deleted my /home directory (yikes!) I could rsync it back by reversing the command:
cd /home
rsync -arvu /media/iee*/arsgeek_backup/home .
I also plan on upgrading my laptop, which is my primary work computer, to Edgy Eft when it comes out on October 26th. (PLUG!) I’ve put a lot of work into getting my laptop just the way I like it, so I’m going to take a complete backup of the system before I do the upgrade. In fact, I’m doing a new backup while I type this howto. To do that, I use the tar command.
I’m going to back up all of the most important folders to me, however I’m not going to back up certain parts of my install, like the /tmp directory, or the /sys directory or anything mounted in /media like DVD’s or the external disk that I’m backing up too! That would be messy. So we’ll use the tar command with some excludes built into it. It’s a bit long and ungainly looking but it works like a charm.
First, I move into my external drive.
cd /media/iee*
Then I make another directory for my complete backup
mkdir arsgeek_wholeshebang
cd argeek_w*
Now I’m ready to back my machine up. This is going to take a while, so it’s a good idea to do it when you won’t need to power off your computer.
sudo tar cvpzf arsgeek.backup.tgz –exclude=”/proc/*” \
–exclude=”/lost+found/*” –exclude=”/dev/*” \
–exclude=”/mnt/*” –exclude=”/media/*” –exclude=”/sys/*” \
–exclude=”/tmp/*” –exclude “/var/cache/apt/*” /
As you can see, that’s quite the command. Here’s how it breaks down. Tar is the program we’re using to make a backup copy.
The switches work out as follows: c= create, v= verbose, p= preserve permissions, j= bzip2, f= file.
arsgeek.backup.tgz is the file we’ll end up with, a complete and compressed archive of my entire ext3 filesystem.
– -exclude=”/something” is a directory or file that you’re explicity telling tar not to back up. If we were doing this in the same filesystem we were backing up, it would be important to exclude the arsgeek.backup.tgz file. Since we’re doing it to an external drive however, we don’t have to worry about that.
the / at the end tells it to start from the top level (or root) directory of my filesystem. It will start taring at / and get everything that lives beneath it except for those directories and files we told it not to get.
This will chug along for quite some time until eventually we’re left with a massive file called arsgeek.backup.tgz. So if things go horribly, horribly wrong how do I restore my computer?
Here’s how I would do it. I’d first reinstall my laptop with a fresh Dapper install. No updates, same hard drive partitions as before. Then, I’d log in, attach my external drive and go to the backup file.
cd /media/iee*/arsgeek_w*
sudo tar xvpfz backup.tgz -C /
Be warned however that this will overwrite anything and everything in any of the directories you’ve tared up. So /home will get completely over written with whatever’s in your tar file and the same for everything else. Again, this will take some time.
Once that’s done (and note that you’re doing it from within a running OS! Neat!) simply log off and log back in again. This is how I backup my personal documents along with the ArsGeek business website. Phew! Glad you had a backup plan!

Leave a Reply
33 Comments on "How to back up and restore your Ubuntu machine"
*Very* helpful post. This is the code I decided to go with. Obviously “asdf” is my user name.
asdf@laptoplaptoplinux:/media/JUMPDRIVE/linux_backup$ rsync -arvuz /home/asdf –exclude=”asdf/thumbbackup” –exclude=”asdf/.Trash” –exclude=”asdf/.mozilla/firefox/59qc01×9.default/Cache/*” .
When executing your command don’t forget the space and the period at the end. I decided to exclude the backup of my thumb drive (obviously!) and my Trash and the cache from Firefox.
Well done.
I think soon I’ll post about automating this task and using tar and rsync to back up over ssh. Between these three things I generally manage to preserve most of my data when I do something nasty to my system.
Glad you found it an easy read. That’s one of my goals, is to demystify computers a bit.
Hi, just a little question about the wholeshebang thing.
I have a partition for my /home directory, so I could theoratically exclude that dir too, so it will only backup the >>system
ARGH, sorry, seems wordpress doesn’t like the opening chevron in its comments…
My question:
I have my /home in a partition, so could I exclude that dir on the wholeshebang trick?
If I do, would I backup my /home with rsync (if my hard drive explodes or gets formatted)
Moreover, with the tar thing, if I have a link to let’s say “/home/user/blah/” in “/blah/”, would a system “restore” keep the symlink intact (if my blah folder is still in /home/user/)?
Sorry to triple-comment (but I’d like to get to backup things religiously)
stevejones,
Wouldn’t – -exclude=â€asdf/.mozilla/firefox/*/Cache/*†be more accurate?
Two weeks on and using rsync is a great start.
I’ve had plenty of freaking over nothing incidents. Particularly when I was just learning Linux (and currently while I’m brushing up on my OSX skills).
But then, I tend to leap before I look on systems that aren’t critical, so at worst it costs me a few hours of reinstalling and retinkering.
Keep trucking along and you’ll get the answers and the knowledge you were looking for.
My external drive looked more like drwxrwxr– when I backed up stuff to it via rsync.
Lately I’ve just been using Simple Backup.
AG
fast answer, I like that 🙂
Well, you answered my question, but not completely right. I don’t want to put my backup in my home, but it doesn’t change anything 🙂
My wonderings were about the already rsynced /home directory, why back it up in the tar, if anyway it is a separate partition (which every linux user should use, it saved my many times).
Anyway, I knew that you were excluding apt’s cache, I was answering to stevejones, This way I can backup my 3 firefox profiles without the cache, in only one exclude.
btw, nice content on the site 🙂
Take a look at dar. I switched over to it a couple of years ago, and the catalog functionality (dar_manager) is well worth it – it handles the details of working through full and differential backups to restore files to the latest state.
Good post, very helpful. Your command uses the z switch for gzip compression but you explain the j switch for bzip2 compression.
If you want to use bzip2 compression you should use the .tbz2 or .tar.bz2 file extension instead of the .tgz file extension.
– rmjb
Hey rmjb – I’ve changed the howto. You’re correct, you can use either gzip or bzip2 although the file itself won’t care, nor will tar, it could confuse other things like nautilus.
Thanks for pointing that out.
Ubuntu comes with a utility called simple backup (sbackupd).
I can’t see any reason not to use a tool like that and go pick files out by hand and then restore them by hand subsequently.
It does incremental backups also, and handles the scheduling.
“I think soon I will post about automating this task and using tar and rsync to back up over ssh. […]”
Sounds interesting! I’ll hold my breath.
Or, you could just use Bacula.
disclosure: I’m a Bacula developer.
Hey Folks,
Thanks for the comments. As I said in the article, there are a ton of ways to back things up. This is perhaps not the newest way to do it 🙂 but it’s a way I have success with.
Having said that though, I appreciate all of the suggestions both here and on digg, and I’m going to check them all out. Just ’cause it’s my way certainly doesn’t make it the right way.
What is the advantage of backups using rsync in lieu of tar?
(By the way, I recommend using the TextControl WordPress plugin to prevent all the character conversions that WP does, like smartquotes and em dashes.)
You might want to remove the “z” from your RSYNC commandline, as that only applies to network transfers using the rsync protocol (check its man page for more details). For local syncs, compression will either do nothing or waste CPU time :).
Tim,
It’s a personal preference thing. On my important machines (my laptop and my filer) I do a full backup using tar once a month. I also back up several directories where I’m often mucking about at least once a week.
I like the rsync method for my once a week stuff because it’s quick and painless to restore. I just rsync it back.
Angus, great point. Editing the article!
Be very careful when cutting and pasting command lines. I cut’n’paste the tar command to find that none of the –excludes worked. After an hour of experimentation I found that in the tar command on this page, the double quote is †(slanty), which is different from ” (straight), which is what tar actually needs.
And the comment system butchered my ’straight’ double quote – guess I should have escaped it: “
Hi, how can I backup my system with the tar command into multiple files, I have a fat32 external hdd and can’t create files bigger thatn 4Gb, I get an error when creating my backup
Hello
I think that excluding exclude “/var/cache/apt/*†/
would still restore the backup but the packages that are install by the restoration would not apear in the synaptic or other packages mangager as installed the would appear as uninstalled tought it is installed
Ah. You didn’t ad the ‘.’ at the end of /opt in that statement.
What normally resides in /opt? Usually not a whole heck of a lot.
I’ve got a few folders from manual installs that I did (songbird, flash, rainlendar2, vmware) and that’s it.
AG
Oh my god, I just realized that if I had included my mp3 directory at the end of that command line I would have lost my entire music collection!!!
Thanks for this article on backing up Linux. This is the first article I’ve seen as a newbie that makes sense to me. Going to try it out right now.
Hi, I’ve got vista/ubuntu gutsy gibbon system , could I put the back up onto the win NTFS harddrive ? Shouldn’t be problem on Gutsy gibbon now or I’m wrong ?
What hapens if you missed out the period at the end? I was trying to backup my home folder to a usb drive but I forgot to put in the period
– rsync -arvu /home/me
Will that have overwritten or changed any of my files in my home folder? I’m being slightly paranoid here as I have a lot of important stuff in there.
arsgeek,
I tried the rsync backup you suggested against the following directories in my PC: rsync -arvu /home /etc /opt .
I noticed that some of the files/dirs backed up have their owners and permissions changed. You’re saying if I restore my /opt from my backup, I will get the original permissions and ownerships back? And that is equally true if I am restoring a single file?
How can I test this? I am sorry, but the changes to the permissions and ownerships worries me.
Max