Backup

Tags: tech, Date: 2008-03-28

My carefully updated list of files to back up had grown so long that it made me worry about losing something important.

The backup didn't fit on a single DVD, so I invested in a WD Passport and created an encrypted file system on it:

modprobe cryptoloop
modprobe aes
losetup -e aes /dev/loop0 /dev/sdb
mke2fs /dev/loop0
tune2fs -i 0 -c 0 -j /dev/loop0

Then, taking a backup is an rsync and some setup-up/tear-down code away:

 #!/bin/sh
 set -e -x

 NAME=`hostname`

 modprobe cryptoloop
 modprobe aes

 cleanup () {
     umount /mnt/root-snapshot
     lvremove -f /dev/vg/snap
     umount /mnt/backup
     losetup -d /dev/loop0
 }

 cleanup || true

 losetup -e aes /dev/loop0 /dev/sdb
 mkdir -p /mnt/backup
 mount /dev/loop0 /mnt/backup

 lvcreate --size 2g --snapshot --name snap /dev/vg/root
 mkdir -p /mnt/root-snapshot
 mount /dev/vg/snap /mnt/root-snapshot -oro

 mkdir -p /mnt/backup/${name}
 # note the lack of trailing slash after /boot
 rsync -v -a --delete --one-file-system --sparse /mnt/root-snapshot/ \
   /boot /mnt/backup/${NAME}/

 cleanup

Note, that it's this easy since I basically have only one file system (only /boot is separate), and that resides on LVM, which makes it trivial to snapshot.

end-of-post