My daily backup
February 23, 2007 [Tech]I recently recovered my files from my daily backup, which had actually worked!
(Pop quiz: this is how I deleted half my home dir - what is wrong with this Makefile?
TMP_DIR=/tmp/gssmp blah: blah1 blah ... blah7: ... rm -rf $TMPDIR/ ...)
Anyway, I am extremely grateful that the backup did work, but a slight problem was that I have been backing up absolutely everything, and never deleting anything that was backed up until I ran out of disk space.
So when I restored from backup, every file I had ever deleted (since I started backing up) re-appeared. This included files and dirs (and email) that had just been moved somewhere else - I now had 2 copies of them.
I've spent the night deleting stuff that I didn't actually want restored, and this has encouraged me to create an improved backup script that puts deleted stuff into a separate folder, named after the day it was deleted. I can delete those folders at my leisure when they get too big, but when a disaster happens like it did on Wednesday, I can restore back to a sane state by just ignoring any irrelevant deleted folders.
It's quite simple, but I hadn't thought of it before, so it might be helpful to others. Enjoy:
#!/bin/bash # Copy this to /etc/cron.daily and make it owned by root, and executable # Back up everything important from my main drive (hda) to the backup # drive (hdb). # Keep stuff that has been deleted from the real drive in a separate # backup dir, named after the day it was deleted. BKP_DRIVE=/media/hdb1 FLAGS="-a --delete-during --max-delete 100 --backup" DT=`date +%F` DELETED_DIR=deleted-$DT function run_rsync { THIS_DIR=$1 EXCLUDES=$2 echo rsync $FLAGS --backup-dir=$BKP_DRIVE/$DELETED_DIR$THIS_DIR \ $EXCLUDES $THIS_DIR/ $BKP_DRIVE$THIS_DIR/ rsync $FLAGS --backup-dir=$BKP_DRIVE/$DELETED_DIR$THIS_DIR \ $EXCLUDES $THIS_DIR/ $BKP_DRIVE$THIS_DIR/ } run_rsync /home/andy \ "--exclude /iRiver --exclude /downloads --exclude /.Trash --exclude /misc/qemu" run_rsync /etc run_rsync /var run_rsync /boot