commit f19fb2a9e112392ea14e3e51f5cdf38fd32d331c
parent ae1e3fd6237aef61a6d234b4f89ae50dceedaf7e
Author: Jan Pobrislo <ccx@webprojekty.cz>
Date: Tue, 18 Feb 2014 10:54:08 +0100
pre/post scripts archive new under timestamp taken from .snapshot.NNNN
Diffstat:
4 files changed, 43 insertions(+), 19 deletions(-)
diff --git a/post b/post
@@ -12,10 +12,26 @@ set -x
[[ $RSYNC_MODULE_NAME != 'snaprep_new' ]] && exit 0
-marks=( $RSYNC_MODULE_PATH/.snapshot.[1-9]*(N) )
-if (($#marks)); then
- mark=$marks[1]
- dst=${RSYNC_MODULE_PATH:h}/${mark##*.snapshot.}
- [[ -e $dst ]] && exit 1
- mv -v $RSYNC_MODULE_PATH $dst
+f=( $RSYNC_MODULE_PATH/.snapshot.[0-9]*(N) )
+if (($#f == 0)); then
+ exit 0
+elif (($#f > 1)); then
+ rm -rf $f || exit $?
+else
+ ts=${f##*.}
+ d=$RSYNC_MODULE_PATH:h
+ if [[ -a $d/.snapshot.$ts ]]; then
+ rm -rf $f || exit $?
+ else
+ rsync -a --exclude=/.snapshot.\* --link-dest=$RSYNC_MODULE_PATH/ $RSYNC_MODULE_PATH/ $d/$ts/ || exit $?
+ mv $f $d/ || exit $?
+ fi
fi
+
+#marks=( $RSYNC_MODULE_PATH/.snapshot.[1-9]*(N) )
+#if (($#marks)); then
+# mark=$marks[1]
+# dst=${RSYNC_MODULE_PATH:h}/${mark##*.snapshot.}
+# [[ -e $dst ]] && exit 1
+# mv -v $RSYNC_MODULE_PATH $dst
+#fi
diff --git a/pre b/pre
@@ -1,16 +1,19 @@
#!/bin/zsh
env | grep RSYNC 1>&2
set -x
-mkdir -p /tmp/snaprep || exit $?
+# mkdir -p /tmp/snaprep/new || exit $?
[[ $RSYNC_MODULE_NAME != 'snaprep_new' ]] && exit 0
-if ! [[ -d $RSYNC_MODULE_PATH ]]; then
- snapshots=( ${RSYNC_MODULE_PATH:h}/[1-9]*(N) )
- if (($#snapshots)); then
- src=$snapshots[-1]
- rsync -a --exclude=/.snapshot.\* --link-dest=$src $src/ $RSYNC_MODULE_PATH/ || exit $?
- else
- mkdir -p $RSYNC_MODULE_PATH/ || exit $?
- fi
-fi
+f=( $RSYNC_MODULE_PATH/.snapshot.[0-9]*(N) )
+if (($#f)); then $0:h/post; fi
+
+#if ! [[ -d $RSYNC_MODULE_PATH ]]; then
+# snapshots=( ${RSYNC_MODULE_PATH:h}/[1-9]*(N) )
+# if (($#snapshots)); then
+# src=$snapshots[-1]
+# rsync -a --exclude=/.snapshot.\* --link-dest=$src $src/ $RSYNC_MODULE_PATH/ || exit $?
+# else
+# mkdir -p $RSYNC_MODULE_PATH/ || exit $?
+# fi
+#fi
diff --git a/rsyncd.conf b/rsyncd.conf
@@ -10,9 +10,6 @@ read only = yes
transfer logging = yes
max verbosity = 2
-pre-xfer exec = /home/ccx/bzr/snaprep/pre
-post-xfer exec = /home/ccx/bzr/snaprep/post
-
# Simple example for enabling your own local rsync server
[gentoo-portage]
path = /usr/portage
@@ -26,4 +23,7 @@ post-xfer exec = /home/ccx/bzr/snaprep/post
[snaprep_new]
path = /tmp/snaprep/new
read only = no
+ write only = yes
refuse options = inplace
+ pre-xfer exec = /home/ccx/bzr/snaprep/pre
+ post-xfer exec = /home/ccx/bzr/snaprep/post
diff --git a/snap.push.single b/snap.push.single
@@ -0,0 +1,5 @@
+#!/bin/zsh
+src=$1;shift
+dst=$1;shift
+rsync -a --delete "$@" --exclude=/.snapshot.\* $src/ $dst/ && \
+rsync -a --delete "$@" $src/ $dst/