abc0012383

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
#!/bin/bash 

echo  "USB backup routine for copying local sondrel ZFS pool and LVM volumes to USB raid array mounted at /BackupBox"

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.3"


if [  -f /run/backup2.sh.pid ]; then
    echo "Pid file found in /run exiting"
    exit 1
fi

MOUNTED=$(cat /proc/mounts | grep /BackupBox)

if [ -z  "$MOUNTED" ]; then
    echo "backup box not mounted exiting"
    exit 2
fi
    

echo $$ >> /run/backup2.sh.pid

POOL="xxx"

echo "Starting with ZFS volumes"

echo " remove any old backup ZFS snapshots"
zfs destroy -r "$POOL@USB2"
echo " cleaned creating fresh ones for backup"
zfs snapshot -r "$POOL@USB2"


for LISTING in $(ls -1d /xxx/*/.zfs/snapshot/USB2)
do
    OUTPUT2=$(echo $LISTING | cut -d "." -f1 )
    OUTPUT=$(echo $OUTPUT2 | cut -d "/" -f3)
    echo "processing $OUTPUT"
    rsync -aAv  --delete-before $LISTING/  /BackupBox/$OUTPUT/    | mailx  -s "Backup volume information $OUTPUT"  xxx@xxx.com
    sync; sync; sync;

done

zfs destroy -r "$POOL@USB2"

echo "completed ZFS volumes starting LVM processes"
echo "remove all snapshots created with bk_ prefix from any failed previous backups"
for RemoveMe in $(lvs --aligned -o lv_path 2>/dev/null | grep bk_ )
do
    lvremove -f $RemoveMe 2>/dev/null

done

for VolumesToBackup in $(lvs -o lv_path,lv_name,vg_name --noheadings --separator : 2> /dev/null )
do

        Device=$(echo $VolumesToBackup | cut -d : -f 1) 
        Name=$(echo $VolumesToBackup | cut -d : -f 2)
        VolumeGroup=$(echo $VolumesToBackup | cut -d : -f 3)

        lvcreate -L100G  -n bk_$Name  -s  $Device 2> /dev/null
        mount -onouuid,ro /dev/$VolumeGroup/bk_$Name  /snapshot
    echo "backing up $Name"
        rsync -aAv  --delete-before /snapshot/  /BackupBox/$Name/ | mailx  -s "Backup volume information $Name" backups@xxx.com 
    sync; sync; sync;
        umount /snapshot

        lvremove -f  /dev/$VolumeGroup/bk_$Name 2> /dev/null


        #lvs --aligned 2>/dev/null

done
echo "completed LVM volumes"

echo "backup complete all user data volumes rsync'd to USB BackupBox"


if [ -f /run/backup2.sh.pid ]; then
    rm /run/backup2.sh.pid
fi
exit 0

 

posted on 2024-08-27 09:38  abc0012383  阅读(4)  评论(0编辑  收藏  举报