From 0ae4ea17ec2e2f21aaa720fa71dd64cd1ca156cf Mon Sep 17 00:00:00 2001 From: max/sooulix Date: Mon, 3 Feb 2025 02:51:33 +0100 Subject: [PATCH] initial commit --- backup_lvm.sh | 19 +++++++++++++++++++ run_backup_lvm.sh | 5 +++++ snapshot_lvm.sh | 10 ++++++++++ 3 files changed, 34 insertions(+) create mode 100755 backup_lvm.sh create mode 100755 run_backup_lvm.sh create mode 100755 snapshot_lvm.sh diff --git a/backup_lvm.sh b/backup_lvm.sh new file mode 100755 index 0000000..4da08e3 --- /dev/null +++ b/backup_lvm.sh @@ -0,0 +1,19 @@ +#!/bin/bash +DIR=/mnt/backups_filesystems + +VG=`echo $0|rev|cut -d_ -f2|rev`; +LV=`echo $0|rev|cut -d_ -f1|rev`; +FREE=`vgs --noheadings $VG --units b|rev|cut -d' ' -f1|rev|cut -dB -f1`; +if [[ "$FREE" -lt 104857600 ]]; +then + echo "Not enough space to make snapshot"; + exit 1; +fi; +TIMESTAMP=`date +%Y%m%d-%H%M%S` +lvcreate --addtag backup --snapshot --size 100M --name $LV-$TIMESTAMP $VG/$LV > /dev/null +[[ -f "$DIR/$VG_$LV.img" ]] && rm $DIR/$VG_$LV.img +[[ -f "$DIR/$VG_$LV.img.gz" ]] && rm $DIR/$VG_$LV.img.gz +dd if=/dev/$VG/$LV-$TIMESTAMP bs=1024 conv=noerror,sync status=none | gzip -c -9 > $DIR/$VG_$LV.img.gz +lvremove -y $VG/$LV-$TIMESTAMP > /dev/null +exit 0; + diff --git a/run_backup_lvm.sh b/run_backup_lvm.sh new file mode 100755 index 0000000..d1e054e --- /dev/null +++ b/run_backup_lvm.sh @@ -0,0 +1,5 @@ +#!/usr/bin/bash +find ~/backup_lvm.d/ -type l | while read file +do + $file +done diff --git a/snapshot_lvm.sh b/snapshot_lvm.sh new file mode 100755 index 0000000..1b1f96c --- /dev/null +++ b/snapshot_lvm.sh @@ -0,0 +1,10 @@ +#!/bin/bash +VG="vg0" +TS=`date +%Y%m%dT%H%M%S` +set -xe +while read -r line; +do + DISK=`echo $line|cut -d' ' -f1` + SIZE=`echo $line|cut -d' ' -f2` + lvcreate --snapshot --name "$DISK-$TS" -L $SIZE $VG/$DISK; +done