|
|
@ -6,8 +6,8 @@
|
|
|
|
PROGRAM="osync" # Rsync based two way sync engine with fault tolerance
|
|
|
|
PROGRAM="osync" # Rsync based two way sync engine with fault tolerance
|
|
|
|
AUTHOR="(C) 2013-2018 by Orsiris de Jong"
|
|
|
|
AUTHOR="(C) 2013-2018 by Orsiris de Jong"
|
|
|
|
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
|
|
|
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
|
|
|
PROGRAM_VERSION=1.3.0-beta1
|
|
|
|
PROGRAM_VERSION=1.3.0-pre-rc1
|
|
|
|
PROGRAM_BUILD=2018101801
|
|
|
|
PROGRAM_BUILD=2018122101
|
|
|
|
IS_STABLE=no
|
|
|
|
IS_STABLE=no
|
|
|
|
|
|
|
|
|
|
|
|
##### Execution order #__WITH_PARANOIA_DEBUG
|
|
|
|
##### Execution order #__WITH_PARANOIA_DEBUG
|
|
|
@ -2307,7 +2307,7 @@ function _TriggerInitiatorRunLocal {
|
|
|
|
Logger "Cannot fin initiator replica dir [$dirname ("$PUSH_FILE")]." "ERROR"
|
|
|
|
Logger "Cannot fin initiator replica dir [$dirname ("$PUSH_FILE")]." "ERROR"
|
|
|
|
return 1
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function _TriggerInitiatorRunRemote {
|
|
|
|
function _TriggerInitiatorRunRemote {
|
|
|
|
__CheckArguments 0 $# "$@" #__WITH_PARANOIA_DEBUG
|
|
|
|
__CheckArguments 0 $# "$@" #__WITH_PARANOIA_DEBUG
|
|
|
@ -2387,7 +2387,7 @@ function _SummaryFromDeleteFile {
|
|
|
|
Logger "$direction $replicaPath$file" "ALWAYS"
|
|
|
|
Logger "$direction $replicaPath$file" "ALWAYS"
|
|
|
|
done < "$summaryFile"
|
|
|
|
done < "$summaryFile"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function Summary {
|
|
|
|
function Summary {
|
|
|
|
__CheckArguments 0 $# "$@" #__WITH_PARANOIA_DEBUG
|
|
|
|
__CheckArguments 0 $# "$@" #__WITH_PARANOIA_DEBUG
|
|
|
@ -2420,23 +2420,21 @@ function LogConflicts {
|
|
|
|
local subject
|
|
|
|
local subject
|
|
|
|
local body
|
|
|
|
local body
|
|
|
|
|
|
|
|
|
|
|
|
# We keep this in a separate if check because of the subshell used for Logger with _LOGGER_PREFIX
|
|
|
|
|
|
|
|
if [ -f "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP" ]; then
|
|
|
|
if [ -f "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP" ]; then
|
|
|
|
Logger "File conflicts: INITIATOR << >> TARGET" "ALWAYS"
|
|
|
|
Logger "File conflicts: INITIATOR << >> TARGET" "ALWAYS"
|
|
|
|
fi
|
|
|
|
> "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
_LOGGER_PREFIX=""
|
|
|
|
|
|
|
|
if [ -f "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP" ]; then
|
|
|
|
|
|
|
|
echo "" > "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]}"
|
|
|
|
|
|
|
|
while read -r line; do
|
|
|
|
while read -r line; do
|
|
|
|
echo "${INITIATOR[$__replicaDir]}$(echo $line | awk -F';' '{print $1}') << >> ${TARGET[$__replicaDir]}$(echo $line | awk -F';' '{print $1}')" >> "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]}"
|
|
|
|
echo "${INITIATOR[$__replicaDir]}$(echo $line | awk -F';' '{print $1}') << >> ${TARGET[$__replicaDir]}$(echo $line | awk -F';' '{print $1}')" >> "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]}"
|
|
|
|
done < "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP"
|
|
|
|
done < "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
|
|
_LOGGER_PREFIX=""
|
|
|
|
Logger "$(cat ${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]})" "ALWAYS"
|
|
|
|
Logger "$(cat ${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]})" "ALWAYS"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
Logger "No conflictList file." "ERROR"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
)
|
|
|
|
|
|
|
|
if [ "$ALERT_CONFLICTS" == "yes" ] && [ -s "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP" ]; then
|
|
|
|
if [ "$ALERT_CONFLICTS" == "yes" ] && [ -s "$RUN_DIR/$PROGRAM.conflictList.compare.$SCRIPT_PID.$TSTAMP" ]; then
|
|
|
|
subject="Conflictual files found in [$INSTANCE_ID]"
|
|
|
|
subject="Conflictual files found in [$INSTANCE_ID]"
|
|
|
|
body="List of conflictual files:"$'\n'"$(cat ${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]})"
|
|
|
|
body="List of conflictual files:"$'\n'"$(cat ${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/${INITIATOR[$__conflictListFile]})"
|
|
|
@ -2780,7 +2778,7 @@ function SyncOnChanges {
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
watchDirectory="$TARGET_SYNC_DIR"
|
|
|
|
watchDirectory="$TARGET_SYNC_DIR"
|
|
|
|
Logger "#### Running $PROGRAM in target helper file monitor mode." "NOTICE"
|
|
|
|
Logger "#### Running $PROGRAM in target helper file monitor mode." "NOTICE"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
while true; do
|
|
|
|
if [ $isTargetHelper == false ]; then
|
|
|
|
if [ $isTargetHelper == false ]; then
|
|
|
@ -2792,10 +2790,10 @@ function SyncOnChanges {
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
else
|
|
|
|
# Notify initiator about target changes
|
|
|
|
# Notify initiator about target changes
|
|
|
|
TriggerInitiatorRun
|
|
|
|
TriggerInitiatorRun
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Logger "#### Monitoring now." "NOTICE"
|
|
|
|
Logger "#### Monitoring now." "NOTICE"
|
|
|
|
|
|
|
|
|
|
|
|