I remember somebody asking how to do this on the CLUG lists a while back. But here’s the problem:
You’ve got an automated backup system, but you want offsite backups. DVDs are too small, external hard drives are the only option. You want the user to be able to plug in the firewire disk, have the backup start automatically, and let them know when it’s done.
Here’s how I implemented it:
The backups are implemented with backup-manager, they backup into /mnt/backup-tmp/
The external hard drive connects by firewire. Running udevinfo -a -p /sys/block/sdd
on it showed me it’s ID:
ATTRS{ieee1394_id}=="0090a9787b339de6:1:0"
I created this UDEV rule file /etc/udev/rules.d/local-backup.rules
:
ATTRS{ieee1394_id}=="0090a9787b339de6:1:0", SYMLINK="backupdisk", RUN+="/usr/local/sbin/backup-to-external.sh"
And the relevant fstab entry:
/dev/backupdisk /mnt/backup-disk vfat sync 0 0
And the backup script /usr/local/sbin/backup-to-external.sh
:
#!/bin/sh -e
LOCKFILE=/var/run/backup-to-external.lock
logger "Backup disk detected"
# Test for expired locks
if [ -e "$LOCKFILE" ]; then
if ! kill -0 `cat "$LOCKFILE"`; then
rm "$LOCKFILE"
fi
fi
lockfile -r0 "$LOCKFILE"
echo $$ > "$LOCKFILE"
sleep 5s
logger "Backup to external begun"
mount /mnt/backup-disk
rsync -a /mnt/backup-tmp/ /mnt/backup-disk/
umount /mnt/backup-disk
beep -l 1000 -f 3000 -r 5
echo -e "You can disconnect the disk now.\nThank you.\n\nThe backup System." | mail -s "Backup completed" the-secretary@email.address
rm "$LOCKFILE"
logger "Backup to external completed"