sync-remote-private.sh from gzz at Krugle
Show sync-remote-private.sh syntax highlighted
#!/bin/sh -v
set -e
TMP=../ms-rsync-cache
cleanup() {
ssh gzzpriv@himalia.it.jyu.fi "sh -vc 'chmod 700 .lock ; rm -f .lock'"
}
if [ "$1" = "cleanup" ]; then
cleanup
exit
elif [ "$2" = "purgecache" ]; then
rm -R "$TMP"
exit
fi
# XXX makes no sense. Maybe we should require non-empty parameters?
MS="$1"
MSREMOTE="$2"
if [ "$1" != "" ]; then MS="$1"; fi
if [ "$2" != "" ]; then MSREMOTE="$2"; fi
mkdir -p $TMP/$MSREMOTE
echo -e "Trying to lock... "
ssh gzzpriv@himalia.it.jyu.fi lockfile -r2 .lock || (rmdir $TMP/$MSREMOTE; exit 1)
trap cleanup EXIT
echo "Success."
rsync --rsh=ssh -rtvz gzzpriv@himalia.it.jyu.fi:$MSREMOTE/ $TMP/$MSREMOTE/
if [ -e "MS-KILLFILE.$MSREMOTE" ]; then
# Don't fetch killed blocks from remote pool
<"MS-KILLFILE.$MSREMOTE" xargs --replace rm -f $TMP/$MSREMOTE/{}
# Don't use killed blocks nor inject them back to remote pool
<"MS-KILLFILE.$MSREMOTE" xargs --replace rm -f $MS/{}
fi
# XXX We need Synch when we start to have pointer conflicts
# ${JAVA:-java} gzz.client.Synch -dir $MS -dir $TMP/$MSREMOTE
# For now, simply update blocks to both directions
# Also, local pools must use dirstorer.maxlen=255
rsync -rt $TMP/$MSREMOTE/ $MS/
rsync -rt $MS/ $TMP/$MSREMOTE/
rsync --rsh=ssh -rtvz $TMP/$MSREMOTE/ gzzpriv@himalia.it.jyu.fi:$MSREMOTE/
See more files for this project here