Backup mit LVM und fsarchiver

LVM und der fsarchiver ist eine echt gute Kombo. Mit dem root volume auf dem LVM und einem snapshot hat man automatisch ein read only Volume.

lvcreate -s -L1G --name=root_snap /dev/vg/root
umount /boot
fsarchiver savefs -v -j4 root.fsa /dev/vg/root_snap /dev/sda1
mount /boot
lvremove /dev/vg/root_snap

root_snap ist mit dem 1G nur dazu da, die Änderungen aufzunehmen die währen dem erzeugen des Backups auftreten. Am Ende wird der snapshot wieder entfernt. Da fsarchiver “ungern” gemountete Dateisysteme sichert, wird es vorher ausgehängt.

Das ganze kann man auch noch verbessern mit gpg. Das Script macht meine Backups und verschlüsselt diese auch noch mit meinem öffentlichen gpg key. So kann nur ich die Backups öffnen. Das verhindert das Backups manipuliert werden können wenn diese auf dem Backup Laufwerk von Hetzner oder “in der Cloud” liegen.

#!/bin/sh
GPGHOME=/root/.gnupg
umount /boot
mount /mnt/backup

lvcreate -s -L1G --name=root_snap /dev/server/root
#lvcreate -s -L1G --name=home_snap /dev/server/home
lvcreate -s -L1G --name=var_snap /dev/server/var

# delete old backups
find /mnt/backup -mtime +14 -and -name "*.gpg" -exec rm {} \;

date=`date +%F`
fsarchiver savefs -j8  /mnt/backup/$date.fsa /dev/md126 /dev/server/root_snap /dev/server/var_snap
gpg --homedir $GPGHOME -q -r mykeyid --encrypt /mnt/backup/$date.fsa
rm /mnt/backup/$date.fsa

lvremove -f /dev/server/root_snap
lvremove -f /dev/server/var_snap

umount /mnt/backup
mount /boot