From c1df5438e24628cfeab6af966ff2a1bf6dd4458b Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Thu, 3 Nov 2011 14:02:26 +0100 Subject: use rsync to remove oldest snapshot --- ppsnapback | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/ppsnapback b/ppsnapback index a495aba..6bc21e3 100755 --- a/ppsnapback +++ b/ppsnapback @@ -27,6 +27,20 @@ fi source $MD/config backlog=${backlog:-3} +rotate () { + # Rotate backlog directories + if [[ -d $MD/$backlog ]]; then + # Use rsync to handle write protected directories. + [[ -d $MD/empty ]] || mkdir $MD/empty + rsync -a --delete $MD/empty/ $MD/$backlog + rmdir $MD/$backlog $MD/empty + fi + for ((i=backlog-1; i >= 0; i--)); do + [[ -d $MD/$i ]] && mv $MD/$i $MD/$((i+1)) + done + mv $MD/new $MD/0 +} + if [[ $path ]]; then # The tabulation is a rsync quirk to disable word splitting. RSH="ssh${privkey:+ -o IdentitiesOnly yes -i $MD/$privkey}" @@ -52,11 +66,7 @@ if [[ $path ]]; then --link-dest=../0 "$path" $MD/new touch $MD/new # Rotate. - [[ -d $MD/$backlog ]] && rm -rf $MD/$backlog - for ((i=backlog-1; i >= 0; i--)); do - [[ -d $MD/$i ]] && mv $MD/$i $MD/$((i+1)) - done - mv $MD/new $MD/0 + rotate fi elif [[ $fakeroot && -w $MD/$fakeroot && $UID -ne 0 ]]; then # Restart using fakeroot. @@ -67,11 +77,7 @@ else $extra --link-dest=../0 . $MD/new touch $MD/new # Rotate. - [[ -d $MD/$backlog ]] && rm -rf $MD/$backlog - for ((i=backlog-1; i >= 0; i--)); do - [[ -d $MD/$i ]] && mv $MD/$i $MD/$((i+1)) - done - mv $MD/new $MD/0 + rotate fi exit 0 -- cgit v1.2.3