Ubuntu – Script for an incremental file system backup

backupbashrsyncscripts

I'd like to run the following incomplete script weekly in as a cron job to backup my home directory to an external drive mounted as /mnt/backups

#!/bin/bash
#

TIMEDATE=$(date +%b-%d-%Y-%k:%M)

LASTBACKUP=pathToDirWithLastBackup

rsync -avr --numeric-ids --link-dest=$LASTBACKUP /home/myfiles /mnt/backups/myfiles$TIMEDATE

My first question is how do I correctly set LASTBACKUP to the the the directory in /backs most recently created?

Secondly, I'm under the impression that using –link-desk will mean that files in previous backups will not will not copied in later backups if they still exist but will rather symbolically link back to the originally copied files? However, I don't want to retain old files forever. What would be the best way to remove all the backups before a certain date without losing files that may think linked in those backups by currents backups? Basically I'm looking to merge all the files before a certain date to a certain date if that makes more sense than the way I initially framed the question :). Can –link-dest create hard links, and if so, just deleting previous directories wouldn't actually remove linked file?

Finally I'd like to add a line to my script that compresses each newly created backup folder (/mnt/backups/myfiles$TIMEDATE). Based on reading this question, I was wondering if I could just use this line

gzip --rsyncable /backups/myfiles$TIMEDATE

after I run rsync so that sequential rsync –link-dest executions would find already copied and compressed files?

I know that's a lot, so many thanks in advance for your help!!

Best Answer

You may wish to use a tool that automates the whole process for you, such as rsnapshot, which seems to implement what you are trying to do.