snaprep

git mirror of https://ccx.te2000.cz/bzr/snaprep
git clone https://ccx.te2000.cz/git/snaprep
Log | Files | Refs

commit ae1e3fd6237aef61a6d234b4f89ae50dceedaf7e
parent 1c4cb050749b11bad42113cfdbaab09c290a10e6
Author: Jan Pobrislo <ccx@webprojekty.cz>
Date:   Fri, 14 Feb 2014 18:52:02 +0100

scripts
Diffstat:
Apost | 21+++++++++++++++++++++
Apre | 16++++++++++++++++
Mrsyncd.conf | 14++++++++++++++
3 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/post b/post @@ -0,0 +1,21 @@ +#!/bin/zsh +exec 1>&2 +env | grep RSYNC + +# for n in $(seq 5); do +# print $n... +# sleep 1 +# done +# print 'Done!' + +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 +fi diff --git a/pre b/pre @@ -0,0 +1,16 @@ +#!/bin/zsh +env | grep RSYNC 1>&2 +set -x +mkdir -p /tmp/snaprep || 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 diff --git a/rsyncd.conf b/rsyncd.conf @@ -7,9 +7,23 @@ #pid file = /var/run/rsyncd.pid use chroot = no 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 comment = Gentoo Portage tree exclude = /distfiles /packages + +[snaprep] + path = /tmp/snaprep + read only = yes + +[snaprep_new] + path = /tmp/snaprep/new + read only = no + refuse options = inplace