Ich habe eine KVM Virtual Machine auf LVM mit zwei Laufwerken auf separaten logischen Volumes (LVs).
Wenn ich mein Backup mit borg starte, muss ich zuerst Snapshots erstellen.
Wie handhabe ich das in einem Bash-Skript?
Erstellen Sie zuerst einen Snapshot von Laufwerk eins. Als Backup mit Borg. Löschen Sie das Snapshot-Laufwerk eins.
Zweitens erstellen Sie einen Snapshot von Laufwerk zwei. Als Backup mit Borg. Löschen Sie das Snapshot-Laufwerk zwei.
Ende des Skripts.
Im folgenden Beispiel werden die Snapshots alle vor dem Backup mit borg erstellt und danach gelöscht.
Was ist der beste (oder einzige) Weg, damit umzugehen?
Danke schön
Michael
#!/bin/bash
echo "Backup `hostname`"
REPOSITORY=/media/vmbackup/server1/
LVPATH=/dev/vg_vmimages/
LVNAME=`lvs --noheadings -o lv_name | tr -d ' '`
#remove old snapshots
for VM in $LVNAME;
do
lvremove -f /dev/vg_vmimages/$VM-snapshot
echo "old snapshots deleted"
done
#create snapshots
for VM in $LVNAME;
do
lvcreate --size 5120M --snapshot --name "$VM-snapshot" $LVPATH$VM
echo "Snapshots created"
done
#create lvdisplay.txt
lvdisplay > lvdisplay.txt
echo "lvdisplay created"
#create borg backup
borg create --progress --info --list --stats --compress lz4 --read-special \
$REPOSITORY::`hostname`-`date +%Y-%m-%d` lvdisplay.txt $LVPATH*-snapshot
#remove lvdisplay.txt
rm -f lvdisplay.txt
echo "lvdisplay.txt deleted"
#remove snapshots
for VM in $LVNAME;
do
lvremove -f /dev/vg_vmimages/$VM-snapshot
echo "Snapshots deleted"
done
#delete all files which do not meet "keep-conditions"
borg prune --info --list $REPOSITORY --prefix `hostname`- \
--keep-daily=7 --keep-weekly=4 --keep-monthly=3
Nun, du könntest etwas in der Art von (ungetestet) tun
echo "Backup `hostname`"
REPOSITORY=/media/vmbackup/server1/
LVPATH=/dev/vg_vmimages/
LVNAME=`lvs --noheadings -o lv_name | tr -d ' '`
backup_LV() {
echo "Backing up LV $1"
echo " => Creating snapshot $1-snapshot"
lvcreate --size 5120M --snapshot --name "$1-snapshot" $LVPATH$1
echo " => Creating archive"
SNAPSHOT=$LVPATH$1-snapshot
borg create -svp --list -C lz4 --read-special \
$REPOSITORY::`hostname`-`date +%Y-%m-%d` lvdisplay.txt $SNAPSHOT
# ^- can also use https://borgbackup.rtfd.io/en/latest/usage.html#borg-help-placeholders
echo " => Deleting snapshot"
lvremove -f $SNAPSHOT
echo "Done with LV $1"
}
for VM in $LVNAME;
do
backup_LV $VM
done
#delete all files which do not meet "keep-conditions"
borg prune --info --list $REPOSITORY --prefix `hostname`- \
--keep-daily=7 --keep-weekly=4 --keep-monthly=3
FWIW So sichere ich meine KVM libvirt
-verwalteten VMs, während sie ausgeführt werden, keine Snapshots erforderlich; Ich verwende nur die Copy-on-Write-Image-Typen von QEMU, um das Image, von dem es ausgeführt wird, im laufenden Betrieb auszutauschen:
https://gist.github.com/milkey-mouse/b8cb865910b4d574d9f63ffcd8db09f5
Vielleicht könnte jeder überprüfen, ob oben etwas zu den bereits vorhandenen Sachen hinzufügt:
https://github.com/borgbackup/community/
Wenn ja, fügen Sie dort einen Link hinzu, damit wir dieses Problem schließen können.
Ich arbeite an einer robusteren Version dieses Skripts in Python (unter Verwendung der libvirt- und borg-APIs direkt). Wenn ich damit fertig bin, werde ich eine PR an das Community-Repository senden.
Hilfreichster Kommentar
Nun, du könntest etwas in der Art von (ungetestet) tun