Added bash 3.2 compat
This commit is contained in:
parent
7636ca0e29
commit
a9ec6fd50a
|
@ -1,13 +1,15 @@
|
||||||
KNOWN BUGS
|
KNOWN ISSUES
|
||||||
----------
|
------------
|
||||||
|
|
||||||
- Cannot write pidlock on remote slave with SUDO_EXEC=yes but insufficient rights (sudo does not work for command echo)
|
- Cannot write pidlock on remote slave with SUDO_EXEC=yes but insufficient rights (sudo does not work for command echo)
|
||||||
- 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 delete status for a file with space in name on master replica from slave remote replica
|
||||||
|
|
||||||
RECENT CHANGES
|
RECENT CHANGES
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
24 Jul. 2013: beta milestone
|
- Revamped a bit code to add bash 3.2 compatibility
|
||||||
|
- 24 Jul. 2013: beta milestone
|
||||||
- Fixed some bad error handling in CheckMasterSlaveDirs and LockDirectories
|
- Fixed some bad error handling in CheckMasterSlaveDirs and LockDirectories
|
||||||
- Added support for spaces in sync dirs and exclude lists
|
- Added support for spaces in sync dirs and exclude lists
|
||||||
- Fixed false exit code if no remote slave lock present
|
- Fixed false exit code if no remote slave lock present
|
||||||
|
|
164
osync.sh
164
osync.sh
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
###### 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.95
|
OSYNC_VERSION=0.96
|
||||||
OSYNC_BUILD=2407201304
|
OSYNC_BUILD=3107201301
|
||||||
|
|
||||||
DEBUG=no
|
DEBUG=no
|
||||||
SCRIPT_PID=$$
|
SCRIPT_PID=$$
|
||||||
|
@ -975,61 +975,133 @@ function Sync
|
||||||
resume_sync=none
|
resume_sync=none
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## In this case statement, ;& means executing every command below regardless of conditions
|
|
||||||
case $resume_sync in
|
################################################################################################################################################# Actual sync begins here
|
||||||
none|noresume)
|
|
||||||
;&
|
## This replaces the case statement below because ;& operator is not supported in bash 3.2... Code is more messy than case :(
|
||||||
master-replica-tree.fail)
|
if [ "$resume_sync" == "none" ] || [ "$resume_sync" == "noresume" ]
|
||||||
|
then
|
||||||
master_tree_current
|
master_tree_current
|
||||||
;&
|
resume_sync="resumed"
|
||||||
master-replica-tree.success|slave-replica-tree.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "master-replica-tree.success" ] || [ "$resume_sync" == "slave-replica-tree.fail" ]
|
||||||
|
then
|
||||||
slave_tree_current
|
slave_tree_current
|
||||||
;&
|
resume_sync="resumed"
|
||||||
slave-replica-tree.success|master-replica-deleted-list.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "slave-replica-tree.success" ] || [ "$resume_sync" == "master-replica-deleted-list.fail" ]
|
||||||
|
then
|
||||||
master_delete_list
|
master_delete_list
|
||||||
;&
|
resume_sync="resumed"
|
||||||
master-replica-deleted-list.success|slave-replica-deleted-list.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "master-replica-deleted-list.success" ] || [ "$resume_sync" == "slave-replica-deleted-list.fail" ]
|
||||||
|
then
|
||||||
slave_delete_list
|
slave_delete_list
|
||||||
;&
|
resume_sync="resumed"
|
||||||
slave-replica-deleted-list.success|update-master-replica.fail|update-slave-replica.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "slave-replica-deleted-list.success" ] || [ "$resume_sync" == "update-master-replica.fail" ] || [ "$resume_sync" == "update-slave-replica.fail" ]
|
||||||
|
then
|
||||||
if [ "$CONFLICT_PREVALANCE" != "master" ]
|
if [ "$CONFLICT_PREVALANCE" != "master" ]
|
||||||
then
|
then
|
||||||
case $resume_sync in
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "slave-replica-deleted-list.success" ] || [ "$resume_sync" == "update-master-replica.fail" ]
|
||||||
none)
|
then
|
||||||
;&
|
|
||||||
slave-replica-deleted-list.success|update-master-replica.fail)
|
|
||||||
sync_update_master
|
sync_update_master
|
||||||
;&
|
resume_sync="resumed"
|
||||||
update-master-replica.success|update-slave-replica.fail)
|
|
||||||
sync_update_master
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
case $resume_sync in
|
|
||||||
none)
|
|
||||||
;&
|
|
||||||
slave-replica-deleted-list.success|update-slave-replica.fail)
|
|
||||||
sync_update_slave
|
|
||||||
;&
|
|
||||||
update-slave-replica.success|update-master-replica.fail)
|
|
||||||
sync_update_master
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
fi
|
||||||
;&
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "update-master-replica.success" ] || [ "$resume_sync" == "update-slave-replica.fail" ]
|
||||||
update-slave-replica.success|update-master-replica.success|delete-propagation-slave.fail)
|
then
|
||||||
|
sync_update_slave
|
||||||
|
resume_sync="resumed"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "slave-replica-deleted-list.success" ] || [ "$resume_sync" == "update-slave-replica.fail" ]
|
||||||
|
then
|
||||||
|
sync_update_slave
|
||||||
|
resume_sync="resumed"
|
||||||
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "update-slave-replica.success" ] || [ "$resume_sync" == "update-master-replica.fail" ]
|
||||||
|
then
|
||||||
|
sync_update_master
|
||||||
|
resume_sync="resumed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "update-slave-replica.success" ] || [ "$resume_sync" == "update-master-replica.success" ] || [ "$resume_sync" == "delete-propagation-slave.fail" ]
|
||||||
|
then
|
||||||
delete_on_slave
|
delete_on_slave
|
||||||
;&
|
resume_sync="resumed"
|
||||||
delete-propagation-slave.success|delete-propagation-master.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "delete-propagation-slave.success" ] || [ "$resume_sync" == "delete-propagation-master.fail" ]
|
||||||
|
then
|
||||||
delete_on_master
|
delete_on_master
|
||||||
;&
|
resume_sync="resumed"
|
||||||
delete-propagation-master.success|master-replica-tree-after.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "delete-propagation-master.success" ] || [ "$resume_sync" == "master-replica-tree-after.fail" ]
|
||||||
|
then
|
||||||
master_tree_after
|
master_tree_after
|
||||||
;&
|
resume_sync="resumed"
|
||||||
master-replica-tree-after.success|slave-replica-tree-after.fail)
|
fi
|
||||||
|
if [ "$resume_sync" == "resumed" ] || [ "$resume_sync" == "master-replica-tree-after.success" ] || [ "$resume_sync" == "slave-replica-tree-after.fail" ]
|
||||||
|
then
|
||||||
slave_tree_after
|
slave_tree_after
|
||||||
;;
|
resume_sync="resumed"
|
||||||
esac
|
fi
|
||||||
|
|
||||||
|
# ## In this case statement, ;& means executing every command below regardless of conditions. Only works with bash v4
|
||||||
|
# case $resume_sync in
|
||||||
|
# none|noresume)
|
||||||
|
# ;&
|
||||||
|
# master-replica-tree.fail)
|
||||||
|
# master_tree_current
|
||||||
|
# ;&
|
||||||
|
# master-replica-tree.success|slave-replica-tree.fail)
|
||||||
|
# slave_tree_current
|
||||||
|
# ;&
|
||||||
|
# slave-replica-tree.success|master-replica-deleted-list.fail)
|
||||||
|
# master_delete_list
|
||||||
|
# ;&
|
||||||
|
# master-replica-deleted-list.success|slave-replica-deleted-list.fail)
|
||||||
|
# slave_delete_list
|
||||||
|
# ;&
|
||||||
|
# slave-replica-deleted-list.success|update-master-replica.fail|update-slave-replica.fail)
|
||||||
|
# if [ "$CONFLICT_PREVALANCE" != "master" ]
|
||||||
|
# then
|
||||||
|
# case $resume_sync in
|
||||||
|
# none)
|
||||||
|
# ;&
|
||||||
|
# slave-replica-deleted-list.success|update-master-replica.fail)
|
||||||
|
# sync_update_master
|
||||||
|
# ;&
|
||||||
|
# update-master-replica.success|update-slave-replica.fail)
|
||||||
|
# sync_update_master
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
# else
|
||||||
|
# case $resume_sync in
|
||||||
|
# none)
|
||||||
|
# ;&
|
||||||
|
# slave-replica-deleted-list.success|update-slave-replica.fail)
|
||||||
|
# sync_update_slave
|
||||||
|
# ;&
|
||||||
|
# update-slave-replica.success|update-master-replica.fail)
|
||||||
|
# sync_update_master
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
# fi
|
||||||
|
# ;&
|
||||||
|
# update-slave-replica.success|update-master-replica.success|delete-propagation-slave.fail)
|
||||||
|
# delete_on_slave
|
||||||
|
# ;&
|
||||||
|
# delete-propagation-slave.success|delete-propagation-master.fail)
|
||||||
|
# delete_on_master
|
||||||
|
# ;&
|
||||||
|
# delete-propagation-master.success|master-replica-tree-after.fail)
|
||||||
|
# master_tree_after
|
||||||
|
# ;&
|
||||||
|
# master-replica-tree-after.success|slave-replica-tree-after.fail)
|
||||||
|
# slave_tree_after
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
|
||||||
Log "Finished synchronization task."
|
Log "Finished synchronization task."
|
||||||
echo "sync.success" > "$MASTER_STATE_DIR/last-action"
|
echo "sync.success" > "$MASTER_STATE_DIR/last-action"
|
||||||
|
@ -1213,7 +1285,7 @@ function Usage
|
||||||
echo "--dry: will run osync without actuallyv doing anything; just testing"
|
echo "--dry: will run osync without actuallyv doing anything; just testing"
|
||||||
echo "--silent: will run osync without any output to stdout, usefull for cron jobs"
|
echo "--silent: will run osync without any output to stdout, usefull for cron jobs"
|
||||||
echo "--verbose: adds command outputs"
|
echo "--verbose: adds command outputs"
|
||||||
ecoh "--force-unlock: will override any existing active or dead locks on master and slave replica"
|
echo "--force-unlock: will override any existing active or dead locks on master and slave replica"
|
||||||
exit 128
|
exit 128
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue