From bf53d8aa1f23fd9daadd0c75074c14ca11261119 Mon Sep 17 00:00:00 2001 From: Someone Date: Wed, 25 Jun 2014 13:24:43 +0200 Subject: [PATCH] new snapshotter to have numbered snapshots back. --- cleaner.sh | 2 +- snapshot.sh | 47 ++++++++++++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/cleaner.sh b/cleaner.sh index eeacf78..9aeead0 100755 --- a/cleaner.sh +++ b/cleaner.sh @@ -28,7 +28,7 @@ LASTLIST="root home homeroot" # Autosnaps to keep. Counting/Considering *.snap only. There should be adate_*.snap snapshots only. let MINSNAPCNT=3*5 let MAXSNAPCNT=3*333 -MAXSPACEPERCENT=90 +MAXSPACEPERCENT=80 MAXDELLOOP="50" echo "***START: `date`***" diff --git a/snapshot.sh b/snapshot.sh index 59d21d7..3b08a55 100755 --- a/snapshot.sh +++ b/snapshot.sh @@ -20,32 +20,45 @@ # 0 * * * * /root/somescripts/btrfs/snapshot.sh &> /dev/null # This script will generate: current_$vol.snp/.txt + last_$vol.snp/.txt and date_$date_$vol.snp/.txt # -# Set volumes to autosnap -SNAPLIST="root home homeroot" - # Timestamp of creation. STARTTS="`date +'%Y-%m-%d--%H-%M'`" CALLPATH="`pwd`" +MAXSNAPP=25 +DELSNAPP=5 echo $STARTTS mount /mnt/btrfs &> /dev/null cd /mnt/btrfs +#exit 0 -for vol in $SNAPLIST; do - if [ -e "ahour_curr_${vol}.snp" -a -e "ahour_curr_${vol}.txt" ]; then - if [ -e "ahour_last_${vol}.snp" -a -e "ahour_last_${vol}.txt" ]; then - echo "Autosnap: Moving ahour_last_${vol}.snp to: `cat ahour_last_${vol}.txt`" - mv "ahour_last_${vol}.snp" "`cat ahour_last_${vol}.txt`" - fi - echo "Autosnap: Moving ahour_curr_${vol}.snp to: ahour_last_${vol}.snp" - mv "ahour_curr_${vol}.snp" "ahour_last_${vol}.snp" - mv "ahour_curr_${vol}.txt" "ahour_last_${vol}.txt" +#for every .autosnap subvol... +for vol in $(find /mnt/btrfs -xdev -maxdepth 1 -iname '*.autosnap'); do + VOLNAME=`echo "${vol}" | sed -e 's/\.autosnap//' ` + echo "VOL: ${VOLNAME}" + + # delete snap to allow move. + if [ -e "${VOLNAME}.$(echo "$MAXSNAPP+1"|bc).snap" ]; then + /sbin/btrfs subvolume delete "${VOLNAME}.$(echo "$MAXSNAPP+1"|bc).snap" fi - echo "Autosnap: Snapshotting ahour_curr_${vol}.snp (${STARTTS})" - echo "aadate_${STARTTS}_${vol}.snap" > ahour_curr_${vol}.txt - btrfs subvolume snapshot -r "${vol}" "ahour_curr_${vol}.snp" - touch -m -a "ahour_curr_${vol}.snp" - touch -m -a "${vol}" + + # move existing snapshots + for i in $(seq ${MAXSNAPP} -1 0) ; do + PLUSONE=$(echo "$i+1"|bc) + if [ -e "${VOLNAME}.${i}.snap" ]; then + mv "${VOLNAME}.${i}.snap" "${VOLNAME}.${PLUSONE}.snap" + fi + done + + # create new snapshot + touch -m -a "${VOLNAME}.autosnap" + /sbin/btrfs subvolume snapshot -r "${VOLNAME}.autosnap" "${VOLNAME}.0.snap" + + # delete snapshots... (also fixes off by one) + for i in $(seq 0 ${DELSNAPP}) ; do + if [ -e "${VOLNAME}.$(echo "$MAXSNAPP+$i"|bc).snap" ]; then + /sbin/btrfs subvolume delete "${VOLNAME}.$(echo "$MAXSNAPP+$i"|bc).snap" + fi + done done cd $CALLPATH -- 2.43.0