Borg: Backup von virtuellen KVM-Maschinen auf LVM mit --read-special

Erstellt am 11. Nov. 2016  ·  4Kommentare  ·  Quelle: borgbackup/borg

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
question

Hilfreichster Kommentar

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

Alle 4 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen