From 52515e08540419058a81f7ce613b1f2f7ec02be7 Mon Sep 17 00:00:00 2001 From: Ricardo Martins Date: Tue, 29 Apr 2014 01:12:18 +0100 Subject: [PATCH] filesystem: added sync-digest script. --- rules/filesystem/fs/etc/rc.d/sync-digest | 14 +++++ rules/filesystem/fs/sbin/sync-digest | 74 ++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 rules/filesystem/fs/etc/rc.d/sync-digest create mode 100755 rules/filesystem/fs/sbin/sync-digest diff --git a/rules/filesystem/fs/etc/rc.d/sync-digest b/rules/filesystem/fs/etc/rc.d/sync-digest new file mode 100644 index 0000000..25d8b0c --- /dev/null +++ b/rules/filesystem/fs/etc/rc.d/sync-digest @@ -0,0 +1,14 @@ +start() +{ + for peer in $cfg_sync_digest_peers; do + /sbin/sync-digest "$peer" < /dev/null > /dev/null 2>&1 & + done +} + +stop() +{ + pids="$(echo $(ps | grep /sbin/sync-digest | grep -v grep | cut -f1 -dr))" + if [ -n "$pids" ]; then + kill $pids + fi +} diff --git a/rules/filesystem/fs/sbin/sync-digest b/rules/filesystem/fs/sbin/sync-digest new file mode 100755 index 0000000..e9668be --- /dev/null +++ b/rules/filesystem/fs/sbin/sync-digest @@ -0,0 +1,74 @@ +#! /bin/sh + +# I/O timeout (s). +TIMEOUT_IO="45" +# Connection timeout (s). +TIMEOUT_CN="30" +# Repeat delay if last rsync completed (s). +DELAY_OK="60" +# Repeat delay if last rsync failed (s). +DELAY_KO="30" +# Local root folder. +LROOT="/opt/lsts/sync" +# Local hostname +LHOST="$(hostname)" + +get_addr() +{ + case "$1" in + lauv-xplore-1) + echo "10.0.10.120" + ;; + lauv-seacon-2) + echo "10.0.10.20" + ;; + lauv-seacon-3) + echo "10.0.10.30" + ;; + *) + echo "" + ;; + esac +} + +sync() +{ + echo -e "\n------------------------------------------------------\n" + + rsync -a \ + -v \ + --progress \ + --partial \ + --timeout="$TIMEOUT_IO" \ + --contimeout="$TIMEOUT_CN" \ + --exclude 'Data.837' \ + --exclude 'Data.jsf' \ + --exclude 'Data.lsf.gz' \ + --exclude 'core.*' \ + "$RADDR::log" \ + "$LROOT" +} + +if [ $# -ne 1 ]; then + echo "Usage: $0 hostname" + exit 1 +fi + +RHOST="$1" +RADDR=$(get_addr "$RHOST") + +if [ -z "$RADDR" ]; then + echo "ERROR: unknown hostname '$RHOST'." + exit 1 +fi + +mkdir -p "$LROOT" + +while [ 1 ]; do + sync >> "$LROOT/.${LHOST}_${RHOST}.log" 2>&1 + if [ $? -eq 0 ]; then + sleep "$DELAY_OK" + else + sleep "$DELAY_KO" + fi +done