#!/bin/bash [40/1057] #find the full backups and rsync them to remote host SOURCE=( "/srv/nfs-backup/host1/dump" "/srv/nfs-backup/host2/dump" ) HOST=1.2.3.4 ENCSRC="/srv/nfs-backup/latest-hardlink" ENCTARGET="/tmp/latest-encfs" ENCCONFIG="/etc/scripts/.encfs6.xml" ENCPASS=my_strong_password ### human_print(){ while read B dummy; do [ $B -lt 1024 ] && echo ${B} B && break KB=$(((B+512)/1024)) [ $KB -lt 1024 ] && echo ${KB} KB && break MB=$(((KB+512)/1024)) [ $MB -lt 1024 ] && echo ${MB} MB && break GB=$(((MB+512)/1024)) [ $GB -lt 1024 ] && echo ${GB} GB && break echo $(((GB+512)/1024)) TB done } rm /tmp/reclist.txt 2> /dev/null mkdir $ENCSRC mkdir $ENCTARGET for srcpath in "${SOURCE[@]}" do vmids=() if [ "$(ls -A $srcpath)" ]; then echo "[ok] $srcpath" cd $srcpath else echo "[skip] $srcpath" echo "" continue fi host=`echo $srcpath | rev | cut -d'/' -f 2 | rev` mkdir "$ENCSRC/$host" vmids+=`ls -1d *.vma.lzo 2> /dev/null | cut -d "-" -f3 | sort | uniq` vmids+=`ls -1d *.vma.gz 2> /dev/null | cut -d "-" -f3 | sort | uniq` for vmid in $vmids do last=`ls -1rt $srcpath | grep -E ".lzo$|.gz$" | grep -E "vzdump.*-$vmid-" | tail -1` size=`stat -c %s $last | human_print` echo "VM $vmid last backup is $last ($size)" ln $srcpath/$last $ENCSRC/$host/ echo "$srcpath/$last" >> /tmp/reclist.txt done echo "" done cat /tmp/reclist.txt | while read file do du "$file" done | awk '{i+=$1} END {print "Total bytes: " i / 1048576 " GB"}' #reverse encfs echo $ENCPASS | ENCFS6_CONFIG=$ENCCONFIG encfs --reverse --idle=60 -o ro --stdinpass $ENCSRC $ENCTARGET #sync #rsync -vap -e 'ssh -p 2222' --files-from=/tmp/reclist.txt / backup@$HOST:/srv/backup rsync -vap --copy-links -e 'ssh -p 2222' $ENCTARGET/ backup@$HOST:/srv/backup/weekly-encfs rsync -vap -e 'ssh -p 2222' $ENCCONFIG backup@$HOST:/srv/backup/weekly-encfs/.encfs6.xml #cleanup fusermount -u $ENCTARGET rmdir $ENCTARGET rm -fr $ENCSRC