LVM-Backup mit Duplicity
Tim Riemenschneider
http://duplicity.nongnu.org/contrib/tmpback
- duplicity_lvm-backup.sh
#!/bin/sh # The Archive is encrypted with this (since it is transfered to FTP) export PASSPHRASE="foo" # The FTP-password (not exposed at cmdline export FTP_PASSWORD="bar" # Do a fullbackup weekly OPTIONS="--full-if-older-than 14D" KEEPFULLS=5 # Where to backup to TARGETBASE=ftp://user@server/backups/ #TARGETBASE=file:///tmp/test function create_mysql_snap { /usr/bin/mysql --defaults-extra-file=/etc/mysql/debian.cnf <<END FLUSH TABLES WITH READ LOCK; \! /sbin/lvcreate --size 10G --snapshot --name snap /dev/vg0/var UNLOCK TABLES; END } function backup_lvm { LVMNAME=$1 FILELIST=$2 CREATECMD=${3:-/sbin/lvcreate --size 10G --snapshot --name snap /dev/vg0/$LVMNAME} # Cleanup echo `date --rfc-3339=second` Backup LVM-Volume $LVMNAME echo `date --rfc-3339=second` Remove old backups: /usr/bin/duplicity remove-all-but-n-full $KEEPFULLS --force $TARGETBASE/$LVMNAME echo `date --rfc-3339=second` Create snapshot: eval $CREATECMD [ -d /snap ] || mkdir /snap /bin/mount /dev/vg0/snap /snap echo `date --rfc-3339=second` Backup: # include all files/directories from the filelist (which should be prefixed with /snap!!!) # exclude all files/directories prefixed with "- " in filelist # exclude snapshot-mountpoint itself /usr/bin/duplicity $OPTIONS \ --include-globbing-filelist $FILELIST \ --exclude /snap /snap $TARGETBASE/$LVMNAME /bin/umount /snap echo `date --rfc-3339=second` Destroy snapshot: /sbin/lvremove -f /dev/vg0/snap echo `date --rfc-3339=second` Done with LVM-Volume $LVMNAME } backup_lvm root /root/bin/root-include.txt >>/var/log/lvm-backup.log 2>&1 backup_lvm home /root/bin/home-include.txt >>/var/log/lvm-backup.log 2>&1 backup_lvm var /root/bin/var-include.txt create_mysql_snap >>/var/log/lvm-backup.log 2>&1
← zurück