How To Create An Off-Site Backup Of Your Site With Rsync On CentOS 7
Full Backup
Full backup typically does the following:
- Make an archive of all the files in a folder
- Copy the resulting archive to a remote server.
Step 1: Create a backup file for your site
Use the following command to create a backup file
mkdir -p /backup/mysite
Step 2: Compress your site directory
Tar will create a gzip archive in a file initial_backup.tar.gz. We could add a v flag (so we get tar -czvf) if we want a verbose output (list of filenames).
tar -czf /backup/mysite/initial_backup.tar.gz /var/www/samplewebsite
You can pass multiple arguments in the above command for naming the backups after the date.
tar -czf /backup/mysite/backup-`date '+%m%d%y'`.tar.gz /var/www/samplewebsite
Step 3: Schedule the Backup
We can schedule the Backup using cron
command
crontab -e
Add the following line of code into the file
30 3 * * * /bin/tar -czf /backup/mysite/backup-`date +\%m\%d\%y`.tar.gz /var/www/samplewebsite
The above command will tell linux to repeat our command every day at 3:30.
Copy the Backups to Another Remote Server
To copy the backups to another remote server, we will use scp - secure copy. First, we need to generate an SSH key:
ssh-keygen
Copy the public part of the SSH key to the remote server where do you want create the backup of your website
scp .ssh/id_rsa_backup.pub [email protected]:/home/backup/backup_key.pub
The few commands above created a directory for SSH to work with, if it didn’t exist, and also the authorized_keys file, which needs to be present for backups to work. We also created a backups directory to store our files to. Now what is left is to copy our public key to that file.
ssh [email protected] "cat /home/backup/backup_key.pub >> /home/backup/.ssh/authorized_keys"
Let’s copy the backup file over there:
scp -i .ssh/id_rsa_backup /backup/mysite/backup-041713.tar.gz [email protected]:/home/backup/backups
Automate the backup using cron command
Open the cron tab file
crontab -e
Paste the following code
30 3 * * * /bin/tar -czf /backup/mysite/backup-`date +\%m\%d\%y`.tar.gz /var/www/samplewebsite;/usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/mysite/backup-`date +\%m\%d\%y`.tar.gz [email protected]:/home/backup/backups
Incremental Backup
Increamental backups come into play when we use a software from the other server to do the the backup in the other server. We use the rsync command for this
Following simple command will do the Incremental backup
ssh [email protected] "mkdir -p /home/backup/sync" rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" /var/www/samplewebsite [email protected]:home/backup/sync
Use the cron command for automating this
30 3 * * * /usr/bin/rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup" /var/www/samplewebsite [email protected]:/home/backup/sync
Conclusion
Backing up your website is a must and you can follow any of the above three techniques to backup your website securely and easily. TheStack also performs offsite backups to prevent disaster, if you are looking for an affordable and reliable dedicated server hosting plans, reach out to our team of experts to know more.