@ -2,8 +2,8 @@
###### Osync - Rsync based two way sync engine with fault tolerance
###### (L) 2013 by Orsiris "Ozy" de Jong (www.netpower.fr)
OSYNC_VERSION = 0.91
OSYNC_BUILD = 240720130 2
OSYNC_VERSION = 0.92
OSYNC_BUILD = 240720130 3
DEBUG = yes
SCRIPT_PID = $$
@ -759,7 +759,7 @@ function sync_update_slave
Log "Updating slave replica."
if [ " $REMOTE_SYNC " = = "yes" ]
then
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $SLAVE_BACKUP --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" \" $MASTER_SYNC_DIR /\" $REMOTE_USER @ $REMOTE_HOST :\" $ SLAVE_SYNC_DIR/\" > /dev/shm/osync_update_slave_replica_ $SCRIPT_PID 2>&1 & "
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $SLAVE_BACKUP --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" \" $MASTER_SYNC_DIR /\" $REMOTE_USER @ $REMOTE_HOST :\" $ ESC_ SLAVE_SYNC_DIR/\" > /dev/shm/osync_update_slave_replica_ $SCRIPT_PID 2>&1 & "
else
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" -rlptgodEui $SLAVE_BACKUP --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" \" $MASTER_SYNC_DIR /\" \" $SLAVE_SYNC_DIR /\" > /dev/shm/osync_update_slave_replica_ $SCRIPT_PID 2>&1 & "
fi
@ -793,7 +793,7 @@ function sync_update_master
if [ " $REMOTE_SYNC " = = "yes" ]
then
#rsync_cmd="$(which $RSYNC_EXECUTABLE) $RSYNC_ARGS -rlptgodEui -e \"$RSYNC_SSH_CMD\" $MASTER_BACKUP --exclude \"$OSYNC_DIR\" $RSYNC_EXCLUDE --exclude-from \"$MASTER_STATE_DIR/slave-deleted-list\" --exclude-from \"$MASTER_STATE_DIR/master-deleted-list\" $REMOTE_USER@$REMOTE_HOST:\"$SLAVE_SYNC_DIR/\" \"$MASTER_SYNC_DIR\" > /dev/shm/osync_update_master_replica_$SCRIPT_PID 2>&1 &"
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $MASTER_BACKUP --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" $REMOTE_USER @ $REMOTE_HOST :\" $ SLAVE_SYNC_DIR/\" \" $MASTER_SYNC_DIR \" > /dev/shm/osync_update_master_replica_ $SCRIPT_PID 2>&1 & "
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $MASTER_BACKUP --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" $REMOTE_USER @ $REMOTE_HOST :\" $ ESC_ SLAVE_SYNC_DIR/\" \" $MASTER_SYNC_DIR \" > /dev/shm/osync_update_master_replica_ $SCRIPT_PID 2>&1 & "
else
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui $MASTER_BACKUP --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" \" $SLAVE_SYNC_DIR /\" \" $MASTER_SYNC_DIR /\" > /dev/shm/osync_update_master_replica_ $SCRIPT_PID 2>&1 & "
fi
@ -826,7 +826,7 @@ function delete_on_slave
Log "Propagating deletitions to slave replica."
if [ " $REMOTE_SYNC " = = "yes" ]
then
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $SLAVE_DELETE --delete --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" --include-from \" $MASTER_STATE_DIR /master-deleted-list\" \" $MASTER_SYNC_DIR /\" $REMOTE_USER @ $REMOTE_HOST :\" $ SLAVE_SYNC_DIR/\" > /dev/shm/osync_deletition_on_slave_ $SCRIPT_PID 2>&1 & "
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $SLAVE_DELETE --delete --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" --include-from \" $MASTER_STATE_DIR /master-deleted-list\" \" $MASTER_SYNC_DIR /\" $REMOTE_USER @ $REMOTE_HOST :\" $ ESC_ SLAVE_SYNC_DIR/\" > /dev/shm/osync_deletition_on_slave_ $SCRIPT_PID 2>&1 & "
else
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui $SLAVE_DELETE --delete --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /slave-deleted-list\" --include-from \" $MASTER_STATE_DIR /master-deleted-list\" \" $MASTER_SYNC_DIR /\" \" $SLAVE_SYNC_DIR /\" > /dev/shm/osync_deletition_on_slave_ $SCRIPT_PID 2>&1 & "
fi
@ -858,7 +858,7 @@ function delete_on_master
Log "Propagating deletitions to master replica."
if [ " $REMOTE_SYNC " = = "yes" ]
then
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $MASTER_DELETE --delete --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" --include-from \" $MASTER_STATE_DIR /slave-deleted-list\" $REMOTE_USER @ $REMOTE_HOST :\" $ SLAVE_SYNC_DIR/\" \" $MASTER_SYNC_DIR /\" > /dev/shm/osync_deletition_on_master_ $SCRIPT_PID 2>&1 & "
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui -e \" $RSYNC_SSH_CMD \" $MASTER_DELETE --delete --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" --include-from \" $MASTER_STATE_DIR /slave-deleted-list\" $REMOTE_USER @ $REMOTE_HOST :\" $ ESC_ SLAVE_SYNC_DIR/\" \" $MASTER_SYNC_DIR /\" > /dev/shm/osync_deletition_on_master_ $SCRIPT_PID 2>&1 & "
else
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" $RSYNC_ARGS -rlptgodEui $MASTER_DELETE --delete --exclude \" $OSYNC_DIR \" $RSYNC_EXCLUDE --exclude-from \" $MASTER_STATE_DIR /master-deleted-list\" --include-from \" $MASTER_STATE_DIR /slave-deleted-list\" \" $SLAVE_SYNC_DIR /\" \" $MASTER_SYNC_DIR /\" > /dev/shm/osync_deletition_on_master_ $SCRIPT_PID 2>&1 & "
fi
@ -908,9 +908,9 @@ function slave_tree_after
Log "Creating after run slave replica file list."
if [ " $REMOTE_SYNC " = = "yes" ]
then
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" -rlptgodE -e \" $RSYNC_SSH_CMD \" --exclude \" $OSYNC_DIR \" --list-only $REMOTE_USER @ $REMOTE_HOST :\" $ESC_SLAVE_SYNC_DIR /\" | grep \"^-\|^d\" | awk '{print $5 }' | (grep -v \"^\.$\" || :) > /dev/shm/osync_slave-tree-after_ $SCRIPT_PID & "
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" -rlptgodE -e \" $RSYNC_SSH_CMD \" --exclude \" $OSYNC_DIR \" --list-only $REMOTE_USER @ $REMOTE_HOST :\" $ESC_SLAVE_SYNC_DIR /\" | grep \"^-\|^d\" | awk '{print \$5 }' | (grep -v \"^\.$\" || :) > /dev/shm/osync_slave-tree-after_ $SCRIPT_PID & "
else
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" -rlptgodE --exclude \" $OSYNC_DIR \" --list-only \" $SLAVE_SYNC_DIR /\" | grep \"^-\|^d\" | awk '{print $5 }' | (grep -v \"^\.$\" || :) > /dev/shm/osync_slave-tree-after_ $SCRIPT_PID & "
rsync_cmd = " $( which $RSYNC_EXECUTABLE ) --rsync-path=\" $RSYNC_PATH \" -rlptgodE --exclude \" $OSYNC_DIR \" --list-only \" $SLAVE_SYNC_DIR /\" | grep \"^-\|^d\" | awk '{print \$5 }' | (grep -v \"^\.$\" || :) > /dev/shm/osync_slave-tree-after_ $SCRIPT_PID & "
fi
if [ " $DEBUG " = = "yes" ]
then
@ -1088,7 +1088,9 @@ function Init
MAIL_ALERT_MSG = " Warning: Execution of osync instance $OSYNC_ID (pid $SCRIPT_PID ) as $LOCAL_USER @ $LOCAL_HOST produced errors. "
## Rsync does not like spaces in directory names, considering it as two different directories. Handling this schema by escaping space
## It seems that this scenario only happens when trying to execute an rsync command through eval $rsync_cmd
## It seems this only happens when trying to execute an rsync command through eval $rsync_cmd... on a remote host. This is freaking unholy to find a workaround...
## So actually useM$MASTER_SYNC_DIR for local rsync calls and $ESC_MASTER_SYNC_DIR for remote rsync calls like user@host:$ESC_MASTER_SYNC_DIR
## The same applies for slave sync dir..............................................T.H.I.S..I.S..A..P.R.O.G.R.A.M.M.I.N.G..N.I.G.H.T.M.A.R.E
ESC_MASTER_SYNC_DIR = $( EscapeSpaces " $MASTER_SYNC_DIR " )
ESC_SLAVE_SYNC_DIR = $( EscapeSpaces " $SLAVE_SYNC_DIR " )