All our data files live on the server, so the backup routine need not handle any of the usual /home stuff on our desktop boxes. Rebuilding a dead box is a nuisance, but they’re all pretty much the same and it’s less of a nuisance not worrying about rare failures… haven’t had any failures in many years; they get replaced before they die.
The backup files go to an external 500 GB USB drive, which is not protection against a catastrophe in the basement. Mostly, this guards against finger fumbles; the external drive gets dumped to another hard drive in the fireproof safe more-or-less monthly.
So. To begin…
Install rsnapshot, which will also drag in ssh, the metapackage around the client & server sides of openssh. The server side is already installed so I can sign in using public-key authentication.
Set /etc/rsnapshot.conf thusly (comments snipped out):
snapshot_root /mnt/backup/snapshots no_create_root 1 cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger cmd_du /usr/bin/du cmd_rsnapshot_diff /usr/bin/rsnapshot-diff #interval hourly 6 interval daily 30 #interval weekly 4 interval monthly 12 #interval yearly 1 logfile /var/log/rsnapshot du_args -csh backup /mnt/userfiles/ oyster/ backup /mnt/bulkdata/ oyster/ backup /mnt/music/ oyster/ backup /mnt/diskimages/ oyster/
Basically, that creates a month of daily backups, plus monthly backups for a year. Haven’t ever gotten to a yearly backup, but you get the idea.
The no-create-root option prevents horrible things from happening if the USB drive wakes up dead and doesn’t mount; you don’t want to back up the drives to the /mnt/bulkdata mount point. The USB drive mounts using a UUID entry in /etc/fstab, as described there.
Create a pair of scripts in /root to mount the USB drive, do the backup, unmount it, and shut down the system:
#!/bin/sh logger "Mounting USB drive" mount /mnt/backup logger "Starting backup" /usr/bin/rsnapshot daily logger "Unmounting USB drive" umount /mnt/backup logger "Power off" shutdown -P now logger "Done!"
#!/bin/sh mount /mnt/backup /usr/bin/rsnapshot monthly umount /mnt/backup shutdown -P now
Note: the rsnapshot executable has moved from /usr/local/bin in Ubuntu 7.10 to /usr/bin in 8.10.
You could be more clever than that, but, eh, they’re simple & easy.
The Inspiron 531S 1.0.13 BIOS now powers off dependably with the 2.6.27-14-generic kernel in 8.10, a pleasant change from the 1.0.12 BIOS and the 2.6.22-16-generic kernel used in 7.10. That means the shutdown commands work and I can shave 25% off the server’s power bill. Not that it’s very big to begin with, but every little bit helps.
Set up /etc/crontab to run the backups (and sync the system clock with reality, for the reasons described there):
10 23 1 * * root /root/rsnapshot.monthly 30 23 * * * root /root/rsnapshot.daily # 00 01 * * * root ntpdate north-america.pool.ntp.org
And that’s it.
Memo to Self: add e2fsck to the monthly backup routine and move it an hour earlier.