diff --git a/dev/n_osync.sh b/dev/n_osync.sh index e171e39..67bb132 100755 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -4,11 +4,9 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.2-dev-parallel-unstable -PROGRAM_BUILD=2016080206 +PROGRAM_BUILD=2016080401 IS_STABLE=no -source "./ofunctions.sh" - # Function Name Is parallel #__WITH_PARANOIA_DEBUG # GetLocalOS no #__WITH_PARANOIA_DEBUG @@ -44,14 +42,12 @@ source "./ofunctions.sh" # UnlockReplicas yes #__WITH_PARANOIA_DEBUG # CleanUp no #__WITH_PARANOIA_DEBUG - +source "./ofunctions.sh" +_LOGGER_PREFIX="time" ## Working directory. This directory exists in any replica and contains state files, backups, soft deleted files etc OSYNC_DIR=".osync_workdir" -_LOGGER_PREFIX="time" -_LOGGER_STDERR=0 - function TrapStop { if [ $SOFT_STOP -eq 0 ]; then Logger " /!\ WARNING: Manual exit of osync is really not recommended. Sync will be in inconsistent state." "WARN" @@ -68,7 +64,7 @@ function TrapStop { } function TrapQuit { - local exitcode= + local exitcode if [ $ERROR_ALERT -ne 0 ]; then UnlockReplicas @@ -330,7 +326,7 @@ function _CreateStateDirsRemote { local replica_state_dir="${1}" __CheckArguments 1 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local cmd= + local cmd CheckConnectivity3rdPartyHosts CheckConnectivityRemoteHost @@ -589,8 +585,8 @@ function tree_list { local replica_type="${2}" # replica type: initiator, target local tree_filename="${3}" # filename to output tree (will be prefixed with $replica_type) - local escaped_replica_path= - local rsync_cmd= + local escaped_replica_path + local rsync_cmd __CheckArguments 3 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG @@ -629,7 +625,7 @@ function delete_list { local deleted_failed_list_file="${5}" # file containing files that could not be deleted on last run, will be prefixed with replica type __CheckArguments 5 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local cmd= + local cmd Logger "Creating $replica_type replica deleted file list." "NOTICE" if [ -f "${INITIATOR[1]}${INITIATOR[3]}/$replica_type$TREE_AFTER_FILENAME_NO_SUFFIX" ]; then @@ -674,7 +670,8 @@ function _get_file_ctime_mtime_remote { local file_list="${3}" __CheckArguments 3 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local cmd= + local cmd + cmd='cat "'$file_list'" | '$SSH_CMD' "while read file; do '$REMOTE_STAT_CTIME_MTIME_CMD' \"'$replica_path'\$file\"; done | sort" > "'$RUN_DIR/$PROGRAM.ctime_mtime.$replica_type.$SCRIPT_PID'"' Logger "CMD: $cmd" "DEBUG" eval $cmd @@ -696,8 +693,8 @@ function sync_attrs { local delete_list_filename="$DELETED_LIST_FILENAME" # Contains deleted list filename, will be prefixed with replica type __CheckArguments 2 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local rsync_cmd= - local retval= + local rsync_cmd + local retval Logger "Getting list of files that need updates." "NOTICE" @@ -811,8 +808,8 @@ function sync_update { local delete_list_filename="${3}" # Contains deleted list filename, will be prefixed with replica type __CheckArguments 3 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local rsync_cmd= - local retval= + local rsync_cmd + local retval Logger "Updating $destination_replica replica." "NOTICE" if [ "$source_replica" == "${INITIATOR[0]}" ]; then @@ -868,7 +865,7 @@ function _delete_local { local deleted_failed_list_file="${4}" # file containing files that could not be deleted on last run, will be prefixed with replica type __CheckArguments 4 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local parentdir= + local parentdir ## On every run, check wheter the next item is already deleted because it is included in a directory already deleted local previous_file="" @@ -930,8 +927,8 @@ function _delete_remote { local deleted_failed_list_file="${4}" # file containing files that could not be deleted on last run, will be prefixed with replica type __CheckArguments 4 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local esc_dest_dir= - local rsync_cmd= + local esc_dest_dir + local rsync_cmd ## This is a special coded function. Need to redelcare local functions on remote host, passing all needed variables as escaped arguments to ssh command. ## Anything beetween << ENDSSH and ENDSSH will be executed remotely @@ -1065,8 +1062,8 @@ function deletion_propagation { local deleted_failed_list_file="${3}" # file containing files that could not be deleted on last run, will be prefixed with replica type __CheckArguments 3 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local replica_dir= - local delete_dir= + local replica_dir + local delete_dir Logger "Propagating deletions to $replica_type replica." "NOTICE" @@ -1293,7 +1290,7 @@ function _SoftDeleteLocal { local change_time="${3}" __CheckArguments 3 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local retval= + local retval if [ -d "$replica_deletion_path" ]; then if [ $_DRYRUN -eq 1 ]; then @@ -1332,7 +1329,7 @@ function _SoftDeleteRemote { local change_time="${3}" __CheckArguments 3 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local retval= + local retval CheckConnectivity3rdPartyHosts CheckConnectivityRemoteHost @@ -1387,8 +1384,8 @@ function SoftDelete { _SoftDeleteRemote "${TARGET[0]}" "${TARGET[1]}${TARGET[4]}" $CONFLICT_BACKUP_DAYS & pids="$pids;$!" fi + WaitForTaskCompletion $pids 720 1800 ${FUNCNAME[0]} false fi - WaitForTaskCompletion $pids 720 1800 ${FUNCNAME[0]} false if [ "$SOFT_DELETE" != "no" ] && [ $SOFT_DELETE_DAYS -ne 0 ]; then Logger "Running soft deletion cleanup." "NOTICE" @@ -1402,8 +1399,8 @@ function SoftDelete { _SoftDeleteRemote "${TARGET[0]}" "${TARGET[1]}${TARGET[5]}" $SOFT_DELETE_DAYS & pids="$pids;$!" fi + WaitForTaskCompletion $pids 720 1800 ${FUNCNAME[0]} false fi - WaitForTaskCompletion $pids 720 1800 ${FUNCNAME[0]} false } function Init { @@ -1618,8 +1615,8 @@ function Usage { function SyncOnChanges { __CheckArguments 0 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG - local cmd= - local retval= + local cmd + local retval if ! type inotifywait > /dev/null 2>&1 ; then Logger "No inotifywait command found. Cannot monitor changes." "CRITICAL"