diff --git a/osync.sh b/osync.sh index 6ba5cf0..a139f66 100755 --- a/osync.sh +++ b/osync.sh @@ -1980,9 +1980,9 @@ function SyncOnChanges do if [ "$ConfigFile" != "" ] then - cmd="bash $osync_cmd \"$ConfigFile\" $opts --no-locks" + cmd="bash $osync_cmd \"$ConfigFile\" $opts" else - cmd="bash $osync_cmd $opts --no-locks" + cmd="bash $osync_cmd $opts" fi eval $cmd retval=$? @@ -1993,11 +1993,21 @@ function SyncOnChanges fi Log "#### Monitoring now." - inotifywait --exclude $OSYNC_DIR $RSYNC_EXCLUDE -qq -r -e create -e modify -e delete -e move -e attrib "$MASTER_SYNC_DIR" & + inotifywait --exclude $OSYNC_DIR $RSYNC_EXCLUDE -qq -r -e create -e modify -e delete -e move -e attrib --timeout "$MAX_WAIT" "$MASTER_SYNC_DIR" & sub_pid=$! wait $sub_pid - Log "#### Changes detected, waiting $MIN_WAIT seconds before running next sync." - sleep $MIN_WAIT + retval=$? + if [ $retval == 0 ] + then + Log "#### Changes detected, waiting $MIN_WAIT seconds before running next sync." + sleep $MIN_WAIT + elif [ $retval == 2 ] + then + Log "#### $MAX_WAIT timeout reached, running sync." + else + Log "#### inotify error detected, waiting $MIN_WAIT seconds before running next sync." + sleep $MIN_WAIT + fi done } @@ -2086,6 +2096,7 @@ do ;; --on-changes) sync_on_changes=1 + nolocks=1 ;; --no-locks) nolocks=1 diff --git a/sync.conf b/sync.conf index bc8bef2..c1e12ad 100755 --- a/sync.conf +++ b/sync.conf @@ -87,6 +87,10 @@ HARD_MAX_EXEC_TIME=10600 ## Minimum time (in seconds) in file monitor /daemon mode between modification detection and sync task in order to let copy operations finish. MIN_WAIT=60 +## Maximum time (in seconds) waiting in file monitor / daemon mode. After this time, sync is run. +## Use 0 to wait indefinitely. +MAX_WAIT=300 + ## ---------- BACKUP AND DELETION OPTIONS ## Enabling this option will keep a backup of a file on the target replica if it gets updated from the source replica. Backups will be made to .osync_workdir/backups