Use rsync and SSHFS to create incremental backups!
Good system administrator always keeps their critical data backed up, their are various ways you can backup your data, but some times it can be a hectic job, how ever we can use rsync and sshfs to create incremental backups (and automate the backup using cron jobs).
What is SSHFS?
SSHFS can mount a remote machine on your backup server as just another folder, lets consider a use case:
- Machine A (Backup server)
- Machine B (Server to be backed up)
We can use SSHFS to mount machine B on machine A, and machine A will be able to access machine B’s data as it is actually mounted on machine A.
How can we install SSHFS
#on cent os yum install sshfs #on debian/ubuntu sudo apt-get install sshfs
This will install SSHFS on your backup server (You need to install sshfs on machine A since its your backup server). Follow the steps below to backup your machine B on machine A.
We will only backup machine B’s /home directory, since it contains most of the important user data, how ever you can use the same method to even backup complete machine B, or some other directories as well.
Step 1: Mount machine B
Login to machine A’s ssh, and create a directory where we will mount the remote machine.
This will create an empty directory for us to mount machine B, now run the following command to mount machine B on machine A.
sshfs [email protected]:/ /mnt/serverB
Please replace the IP with the actual IP of machine B, now machine B is mounted at “/mnt/serverB”, you can use
cd /mnt/serverB to move to this directory and see its contents using
ls . It will display the contents of machine B.
Step 2: Create backup directory
Now you need to create a directory on your machine A, where you can place the backup, use the mkdir command to create the backup directory.
We can use rsync to backup the data, for the first run rsync will backup the whole data, how ever sub-sequent runs will only backup the changed bytes.
Step 3: Backup data
Since we will only backup the /home directory, you can run the command below to backup home directory
rsync -r /mnt/serverB/home ~/serverBData
It will take some time depending on the data and network speed, after its executed successfully backup will be on the “~/serverBData” directory, you can move to this directory and verify the files as well.
Step 4: Set up cron
You can use cron job to automate this process, I would recommend to run cron every 24 hours. Run the command below
It will ask you for the editor to edit the cron job file, you can use the one that suits you, and then append this line at the end of the file
0 5 * * * rsync -r /mnt/serverB/home ~/serverBData
Save and close the file, now each increment of your backup will be performed at 5AM every day (Choose the time when you have the least load on machine B).