From ArchWiki
Revision as of 11:40, 4 January 2009 by Jelly (talk | contribs) (Configuration)
Jump to navigation Jump to search


The rsync protocol can be used to make quick and easy backups, as it only transfers files that have changed, which means backups are much quicker, than if you just copied all your files over every time. This tutorial aims to show you how to make a scheduled backup, using rsync, typically to a removable media.


Obviously, to use rsync, you need rsync:

# pacman -S rsync


We need to make a script that tells rsync to backup your data.

Open a text editor, for example:

# nano /etc/cron.daily/rsync.backup

In this location, it will be run daily, without any further configuration.

You need to paste this script into the text editor:

rsync -ar --delete /folder_to_backup/ /location_to_backup/ &> /dev/null

-a means files are archived, -r means files are copied recursively, and --delete means files deleted on the source are deleted on the backup

Here, "folder_to_backup" needs to be changed to what you want to backup (/home/ , for example) and "location_to_backup" is where you want to back it up to (/media/disk , for example).

If you want to backup to a remote host using SSH, use this script instead:

rsync -ar --delete -e ssh /folder_to_backup/ remoteuser@remotehost:/location_to_backup/ &> /dev/null

-e ssh tells rsync to use ssh, remoteuser is the user on the host remotehost

We now need to make it executable:

#chmod +x /etc/cron.daily/rsync.backup

And that's it. It'll now run daily, as long as your cron daemon is configured correctly (which is out of the scope of this document).

To check if rsync actually has preformed a backup you can use a log, here's a simple example:

#echo  beginning backup `date` >> ~/RsyncBackupLog

Put this line in your backup script and it will write "beginning backup 02-01-2009" in the text file RsyncBackupLog now you can see when the last backup is made.

You can also log the output of rsync:

#rsync -ar --delete /folder_to_backup/ /location_to_backup/ >> ~/Rsync.log

The log can be find in your home directory and it's called Rsync.log

When you are making a backup to a server you can build in a check if the server is online:

#if ping -c 1 -w 5 > /dev/null ; 
#mount the share 
#rsync -ar --delete -e ssh /folder_to_backup/ remoteuser@remotehost:/location_to_backup/ &> /dev/null
#echo echo  backup failed `date` >> ~/RsyncBackupLog

For more examples of really great bash scripting you should just google for 'rsync backup script' or go to the 'General Programming Forum' of the Arch forum