summaryrefslogtreecommitdiff
path: root/ppsnapback
diff options
context:
space:
mode:
authorNicolas Schodet2011-11-03 14:02:26 +0100
committerNicolas Schodet2011-11-03 14:09:49 +0100
commitc1df5438e24628cfeab6af966ff2a1bf6dd4458b (patch)
tree461500730f40f9a9eeeee59711436b6cf4a9f0f0 /ppsnapback
parent37827bc32e60b1765047eded79f3dffd74b69f03 (diff)
use rsync to remove oldest snapshot
Diffstat (limited to 'ppsnapback')
-rwxr-xr-xppsnapback26
1 files 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