Borg: 使用 --read-special 在 LVM 上备份 KVM 虚拟机

创建于 2016-11-11  ·  4评论  ·  资料来源: borgbackup/borg

我在 LVM 上有一个 KVM 虚拟机,在不同的逻辑卷 (LV) 上有两个驱动器。

当我用 borg 开始备份时,我首先要创建快照。

我如何在 bash 脚本中处理它?

首先创建驱动器的快照。 比用 borg 备份。 删除快照驱动器一。

第二个创建驱动器二的快照。 比用 borg 备份。 删除快照驱动器二。

脚本结束。

在下面的例子中,快照都是在用 borg 备份之前生成的,然后被删除。

处理它的最佳(或唯一)方法是什么?

谢谢你
迈克尔

#!/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

最有用的评论

好吧,您可以按照(未经测试)的方式做一些事情

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

所有4条评论

好吧,您可以按照(未经测试)的方式做一些事情

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 这是我在运行时备份 KVM libvirt管理的 VM 的方法,不需要快照; 我只是使用 QEMU 的写时复制映像类型来热交换它正在运行的映像:

https://gist.github.com/milkey-mouse/b8cb865910b4d574d9f63ffcd8db09f5

也许每个人都可以检查上面是否在那里已经存在的东西中添加了一些东西:

https://github.com/borgbackup/community/

如果是这样,请在那里添加链接,以便我们可以关闭此问题。

我正在使用 Python 开发该脚本的更强大版本(直接使用 libvirt 和 borg API)。 完成后,我将向社区回购提交 PR。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

russelldavis picture russelldavis  ·  3评论

chebee7i picture chebee7i  ·  5评论

ThomasWaldmann picture ThomasWaldmann  ·  6评论

rugk picture rugk  ·  3评论

rugk picture rugk  ·  4评论