Minor improvements.

pull/2/head
deajan 11 years ago
parent fe3ab75278
commit b231a4eff2

@ -12,10 +12,14 @@ KNOWN ISSUES
- If master and remote slave aren't the same distros and rsync binary isn't in the same path, execution may fail (RSYNC_PATH should be configurable) - If master and remote slave aren't the same distros and rsync binary isn't in the same path, execution may fail (RSYNC_PATH should be configurable)
- Possible non deleted file with space in name on master replica from slave remote replica - Possible non deleted file with space in name on master replica from slave remote replica
- can load configuration files that don't have .conf extension... - can load configuration files that don't have .conf extension...
- Softdelete functions do not honor maximum execution time
RECENT CHANGES RECENT CHANGES
-------------- --------------
- Fixed LoadConfigFile function will not warn on wrong config file
- Without --verbose parameter, last sync details are still logged to /tmp/osync_(pid)
- Added --no-maxtime parameter for sync big changes without enforcing execution time checks
- 03 Aug. 2013: beta 3 milestone - 03 Aug. 2013: beta 3 milestone
- Softdelete functions do now honor --dry switch - Softdelete functions do now honor --dry switch
- Simplified sync delete functions - Simplified sync delete functions

@ -3,7 +3,7 @@
###### Osync - Rsync based two way sync engine with fault tolerance ###### Osync - Rsync based two way sync engine with fault tolerance
###### (L) 2013 by Orsiris "Ozy" de Jong (www.netpower.fr) ###### (L) 2013 by Orsiris "Ozy" de Jong (www.netpower.fr)
OSYNC_VERSION=0.98 OSYNC_VERSION=0.98
OSYNC_BUILD=0308201303 OSYNC_BUILD=0408201301
DEBUG=no DEBUG=no
SCRIPT_PID=$$ SCRIPT_PID=$$
@ -144,8 +144,8 @@ function CleanUp
rm -f /dev/shm/osync_slave-tree-after_$SCRIPT_PID rm -f /dev/shm/osync_slave-tree-after_$SCRIPT_PID
rm -f /dev/shm/osync_update_master_replica_$SCRIPT_PID rm -f /dev/shm/osync_update_master_replica_$SCRIPT_PID
rm -f /dev/shm/osync_update_slave_replica_$SCRIPT_PID rm -f /dev/shm/osync_update_slave_replica_$SCRIPT_PID
rm -f /dev/shm/osync_deletition_on_master_$SCRIPT_PID rm -f /dev/shm/osync_deletion_on_master_$SCRIPT_PID
rm -f /dev/shm/osync_deletition_on_slave_$SCRIPT_PID rm -f /dev/shm/osync_deletion_on_slave_$SCRIPT_PID
rm -f /dev/shm/osync_remote_slave_lock_$SCRIPT_PID rm -f /dev/shm/osync_remote_slave_lock_$SCRIPT_PID
rm -f /dev/shm/osync_slave_space_$SCRIPT_PIDx rm -f /dev/shm/osync_slave_space_$SCRIPT_PIDx
fi fi
@ -193,9 +193,10 @@ function LoadConfigFile
then then
LogError "Cannot load configuration file [$1]. Sync cannot start." LogError "Cannot load configuration file [$1]. Sync cannot start."
return 1 return 1
elif [[ $1 != *.conf ]] elif [[ "$1" != *".conf" ]]
then then
LogError "Wrong configuration file supplied [$1]. Sync cannot start." LogError "Wrong configuration file supplied [$1]. Sync cannot start."
return 1
else else
egrep '^#|^[^ ]*=[^;&]*' "$1" > "/dev/shm/osync_config_$SCRIPT_PID" egrep '^#|^[^ ]*=[^;&]*' "$1" > "/dev/shm/osync_config_$SCRIPT_PID"
source "/dev/shm/osync_config_$SCRIPT_PID" source "/dev/shm/osync_config_$SCRIPT_PID"
@ -786,6 +787,9 @@ function sync_update_slave
if [ $verbose -eq 1 ] if [ $verbose -eq 1 ]
then then
Log "List:\n$(cat /dev/shm/osync_update_slave_replica_$SCRIPT_PID)" Log "List:\n$(cat /dev/shm/osync_update_slave_replica_$SCRIPT_PID)"
else
echo "#### Update slave result" >> /tmp/osync_$SCRIPT_PID
cat /dev/shm/osync_update_slave_replica_$SCRIPT_PID >> /tmp/osync_$SCRIPT_PID
fi fi
if [ $retval != 0 ] if [ $retval != 0 ]
@ -820,6 +824,9 @@ function sync_update_master
if [ $verbose -eq 1 ] if [ $verbose -eq 1 ]
then then
Log "List:\n$(cat /dev/shm/osync_update_master_replica_$SCRIPT_PID)" Log "List:\n$(cat /dev/shm/osync_update_master_replica_$SCRIPT_PID)"
else
echo "#### Update master result" >> /tmp/osync_$SCRIPT_PID
cat /dev/shm/osync_update_master_replica_$SCRIPT_PID >> /tmp/osync_$SCRIPT_PID
fi fi
if [ $retval != 0 ] if [ $retval != 0 ]
@ -835,13 +842,13 @@ function sync_update_master
function delete_on_slave function delete_on_slave
{ {
Log "Propagating deletitions to slave replica." Log "Propagating deletions to slave replica."
if [ "$REMOTE_SYNC" == "yes" ] if [ "$REMOTE_SYNC" == "yes" ]
then then
rsync_cmd="$(which $RSYNC_EXECUTABLE) --rsync-path=\"$RSYNC_PATH\" $RSYNC_ARGS -rlptgoDEui -e \"$RSYNC_SSH_CMD\" $SLAVE_DELETE --delete --exclude \"$OSYNC_DIR\" --include-from \"$MASTER_STATE_DIR/master-deleted-list\" --exclude=\"*\" \"$MASTER_SYNC_DIR/\" $REMOTE_USER@$REMOTE_HOST:\"$ESC_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\" --include-from \"$MASTER_STATE_DIR/master-deleted-list\" --exclude=\"*\" \"$MASTER_SYNC_DIR/\" $REMOTE_USER@$REMOTE_HOST:\"$ESC_SLAVE_SYNC_DIR/\" > /dev/shm/osync_deletion_on_slave_$SCRIPT_PID 2>&1 &"
else 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 &" #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_deletion_on_slave_$SCRIPT_PID 2>&1 &"
rsync_cmd="$(which $RSYNC_EXECUTABLE) --rsync-path=\"$RSYNC_PATH\" $RSYNC_ARGS -rlptgoDEui $SLAVE_DELETE --delete --exclude \"$OSYNC_DIR\" --include-from \"$MASTER_STATE_DIR/master-deleted-list\" --exclude=\"*\" \"$MASTER_SYNC_DIR/\" \"$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 $SLAVE_DELETE --delete --exclude \"$OSYNC_DIR\" --include-from \"$MASTER_STATE_DIR/master-deleted-list\" --exclude=\"*\" \"$MASTER_SYNC_DIR/\" \"$SLAVE_SYNC_DIR/\" > /dev/shm/osync_deletion_on_slave_$SCRIPT_PID 2>&1 &"
fi fi
if [ "$DEBUG" == "yes" ] if [ "$DEBUG" == "yes" ]
then then
@ -853,12 +860,15 @@ function delete_on_slave
retval=$? retval=$?
if [ $verbose -eq 1 ] if [ $verbose -eq 1 ]
then then
Log "List:\n$(cat /dev/shm/osync_deletition_on_slave_$SCRIPT_PID)" Log "List:\n$(cat /dev/shm/osync_deletion_on_slave_$SCRIPT_PID)"
else
echo "#### Deletion on slave result" >> /tmp/osync_$SCRIPT_PID
cat /dev/shm/osync_deletion_on_slave_$SCRIPT_PID >> /tmp/osync_$SCRIPT_PID
fi fi
if [ $retval != 0 ] if [ $retval != 0 ]
then then
LogError "Deletition on slave failed." LogError "Deletion on slave failed."
echo "delete-propagation-slave.fail" > "$MASTER_STATE_DIR/last-action" echo "delete-propagation-slave.fail" > "$MASTER_STATE_DIR/last-action"
exit 1 exit 1
else else
@ -868,13 +878,13 @@ function delete_on_slave
function delete_on_master function delete_on_master
{ {
Log "Propagating deletitions to master replica." Log "Propagating deletions to master replica."
if [ "$REMOTE_SYNC" == "yes" ] if [ "$REMOTE_SYNC" == "yes" ]
then then
rsync_cmd="$(which $RSYNC_EXECUTABLE) --rsync-path=\"$RSYNC_PATH\" $RSYNC_ARGS -rlptgoDEui -e \"$RSYNC_SSH_CMD\" $MASTER_DELETE --delete --exclude \"$OSYNC_DIR\" --include-from \"$MASTER_STATE_DIR/slave-deleted-list\" --exclude=\"*\" $REMOTE_USER@$REMOTE_HOST:\"$ESC_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\" --include-from \"$MASTER_STATE_DIR/slave-deleted-list\" --exclude=\"*\" $REMOTE_USER@$REMOTE_HOST:\"$ESC_SLAVE_SYNC_DIR/\" \"$MASTER_SYNC_DIR/\" > /dev/shm/osync_deletion_on_master_$SCRIPT_PID 2>&1 &"
else 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 &" #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_deletion_on_master_$SCRIPT_PID 2>&1 &"
rsync_cmd="$(which $RSYNC_EXECUTABLE) --rsync-path=\"$RSYNC_PATH\" $RSYNC_ARGS -rlptgoDEui $MASTER_DELETE --delete --exclude \"$OSYNC_DIR\" --include-from \"$MASTER_STATE_DIR/slave-deleted-list\" --exclude=\"*\" \"$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 $MASTER_DELETE --delete --exclude \"$OSYNC_DIR\" --include-from \"$MASTER_STATE_DIR/slave-deleted-list\" --exclude=\"*\" \"$SLAVE_SYNC_DIR/\" \"$MASTER_SYNC_DIR/\" > /dev/shm/osync_deletion_on_master_$SCRIPT_PID 2>&1 &"
fi fi
if [ "$DEBUG" == "yes" ] if [ "$DEBUG" == "yes" ]
then then
@ -886,12 +896,15 @@ function delete_on_master
retval=$? retval=$?
if [ $verbose -eq 1 ] if [ $verbose -eq 1 ]
then then
Log "List:\n$(cat /dev/shm/osync_deletition_on_master_$SCRIPT_PID)" Log "List:\n$(cat /dev/shm/osync_deletion_on_master_$SCRIPT_PID)"
else
echo "#### Deletion on master result" >> /tmp/osync_$SCRIPT_PID
cat /dev/shm/osync_deletion_on_master_$SCRIPT_PID >> /tmp/osync_$SCRIPT_PID
fi fi
if [ $retval != 0 ] if [ $retval != 0 ]
then then
LogError "Deletition on master failed." LogError "Deletion on master failed."
echo "delete-propagation-master.fail" > "$MASTER_STATE_DIR/last-action" echo "delete-propagation-master.fail" > "$MASTER_STATE_DIR/last-action"
exit 1 exit 1
else else
@ -1077,7 +1090,7 @@ function Sync
# sync_update_master # sync_update_master
# ;& # ;&
# update-master-replica.success|update-slave-replica.fail) # update-master-replica.success|update-slave-replica.fail)
# sync_update_master # sync_update_slave
# ;; # ;;
# esac # esac
# else # else
@ -1327,6 +1340,7 @@ function Usage
dryrun=0 dryrun=0
silent=0 silent=0
force_unlock=0 force_unlock=0
no_maxtime=0
if [ "$DEBUG" == "yes" ] if [ "$DEBUG" == "yes" ]
then then
verbose=1 verbose=1
@ -1359,6 +1373,9 @@ do
--force-unlock) --force-unlock)
force_unlock=1 force_unlock=1
;; ;;
--no-maxtime)
no_maxtime=1
;;
--help|-h|--version|-v) --help|-h|--version|-v)
Usage Usage
;; ;;
@ -1378,6 +1395,11 @@ then
Log "-------------------------------------------------------------" Log "-------------------------------------------------------------"
Log " $DRY_WARNING $DATE - Osync v$OSYNC_VERSION script begin." Log " $DRY_WARNING $DATE - Osync v$OSYNC_VERSION script begin."
Log "-------------------------------------------------------------" Log "-------------------------------------------------------------"
if [ $no_maxtime -eq 1 ]
then
SOFT_MAX_EXEC_TIME=0
HARD_MAX_EXEC_TIME=0
fi
CheckMasterSlaveDirs CheckMasterSlaveDirs
CheckMinimumSpace CheckMinimumSpace
if [ $? == 0 ] if [ $? == 0 ]

Loading…
Cancel
Save