function coding style compliance

This commit is contained in:
deajan 2015-09-08 14:11:08 +02:00
parent ae8dd18fed
commit 4bfe74de59
1 changed files with 46 additions and 92 deletions

138
osync.sh Executable file → Normal file
View File

@ -52,13 +52,11 @@ export LC_ALL=C
ALERT_LOG_FILE=$RUN_DIR/osync_lastlog ALERT_LOG_FILE=$RUN_DIR/osync_lastlog
function Dummy function Dummy {
{
sleep .1 sleep .1
} }
function Log function Log {
{
if [ $sync_on_changes -eq 1 ]; then if [ $sync_on_changes -eq 1 ]; then
prefix="$(date) - " prefix="$(date) - "
else else
@ -72,21 +70,18 @@ function Log
fi fi
} }
function LogError function LogError {
{
Log "$1" Log "$1"
error_alert=1 error_alert=1
} }
function LogDebug function LogDebug {
{
if [ "$DEBUG" == "yes" ]; then if [ "$DEBUG" == "yes" ]; then
Log "$1" Log "$1"
fi fi
} }
function TrapError function TrapError {
{
local JOB="$0" local JOB="$0"
local LINE="$1" local LINE="$1"
local CODE="${2:-1}" local CODE="${2:-1}"
@ -95,8 +90,7 @@ function TrapError
fi fi
} }
function TrapStop function TrapStop {
{
if [ $soft_stop -eq 0 ]; then if [ $soft_stop -eq 0 ]; then
LogError " /!\ WARNING: Manual exit of osync is really not recommended. Sync will be in inconsistent state." LogError " /!\ WARNING: Manual exit of osync is really not recommended. Sync will be in inconsistent state."
LogError " /!\ WARNING: If you are sure, please hit CTRL+C another time to quit." LogError " /!\ WARNING: If you are sure, please hit CTRL+C another time to quit."
@ -111,8 +105,7 @@ function TrapStop
fi fi
} }
function TrapQuit function TrapQuit {
{
if [ $error_alert -ne 0 ]; then if [ $error_alert -ne 0 ]; then
if [ "$DEBUG" != "yes" ]; then if [ "$DEBUG" != "yes" ]; then
SendAlert SendAlert
@ -143,8 +136,7 @@ function TrapQuit
exit $exitcode exit $exitcode
} }
function Spinner function Spinner {
{
if [ $silent -eq 1 ]; then if [ $silent -eq 1 ]; then
return 1 return 1
fi fi
@ -177,20 +169,17 @@ function Spinner
esac esac
} }
function EscapeSpaces function EscapeSpaces {
{
echo $(echo "$1" | sed 's/ /\\ /g') echo $(echo "$1" | sed 's/ /\\ /g')
} }
function CleanUp function CleanUp {
{
if [ "$DEBUG" != "yes" ]; then if [ "$DEBUG" != "yes" ]; then
rm -f $RUN_DIR/osync_*_$SCRIPT_PID rm -f $RUN_DIR/osync_*_$SCRIPT_PID
fi fi
} }
function SendAlert function SendAlert {
{
if [ "$quick_sync" == "2" ]; then if [ "$quick_sync" == "2" ]; then
Log "Current task is a quicksync task. Will not send any alert." Log "Current task is a quicksync task. Will not send any alert."
return 0 return 0
@ -242,8 +231,7 @@ function SendAlert
fi fi
} }
function LoadConfigFile function LoadConfigFile {
{
if [ ! -f "$1" ]; then if [ ! -f "$1" ]; then
LogError "Cannot load configuration file [$1]. Sync cannot start." LogError "Cannot load configuration file [$1]. Sync cannot start."
exit 1 exit 1
@ -256,8 +244,7 @@ function LoadConfigFile
fi fi
} }
function CheckEnvironment function CheckEnvironment {
{
if [ "$REMOTE_SYNC" == "yes" ]; then if [ "$REMOTE_SYNC" == "yes" ]; then
if ! type -p ssh > /dev/null 2>&1 if ! type -p ssh > /dev/null 2>&1
then then
@ -272,8 +259,7 @@ function CheckEnvironment
fi fi
} }
function GetLocalOS function GetLocalOS {
{
LOCAL_OS_VAR=$(uname -spio 2>&1) LOCAL_OS_VAR=$(uname -spio 2>&1)
if [ $? != 0 ]; then if [ $? != 0 ]; then
LOCAL_OS_VAR=$(uname -v 2>&1) LOCAL_OS_VAR=$(uname -v 2>&1)
@ -303,8 +289,7 @@ function GetLocalOS
LogDebug "Local OS: [$LOCAL_OS_VAR]." LogDebug "Local OS: [$LOCAL_OS_VAR]."
} }
function GetRemoteOS function GetRemoteOS {
{
if [ "$REMOTE_SYNC" == "yes" ]; then if [ "$REMOTE_SYNC" == "yes" ]; then
CheckConnectivity3rdPartyHosts CheckConnectivity3rdPartyHosts
CheckConnectivityRemoteHost CheckConnectivityRemoteHost
@ -359,8 +344,7 @@ function GetRemoteOS
# Waits for pid $1 to complete. Will log an alert if $2 seconds passed since current task execution unless $2 equals 0. # Waits for pid $1 to complete. Will log an alert if $2 seconds passed since current task execution unless $2 equals 0.
# Will stop task and log alert if $3 seconds passed since current task execution unless $3 equals 0. # Will stop task and log alert if $3 seconds passed since current task execution unless $3 equals 0.
function WaitForTaskCompletion function WaitForTaskCompletion {
{
soft_alert=0 soft_alert=0
log_ttime=0 log_ttime=0
SECONDS_BEGIN=$SECONDS SECONDS_BEGIN=$SECONDS
@ -402,8 +386,7 @@ function WaitForTaskCompletion
# Waits for pid $1 to complete. Will log an alert if $2 seconds passed since script start unless $2 equals 0. # Waits for pid $1 to complete. Will log an alert if $2 seconds passed since script start unless $2 equals 0.
# Will stop task and log alert if $3 seconds passed since script start unless $3 equals 0. # Will stop task and log alert if $3 seconds passed since script start unless $3 equals 0.
function WaitForCompletion function WaitForCompletion {
{
soft_alert=0 soft_alert=0
log_time=0 log_time=0
while eval "$PROCESS_TEST_CMD" > /dev/null while eval "$PROCESS_TEST_CMD" > /dev/null
@ -442,8 +425,7 @@ function WaitForCompletion
} }
## Runs local command $1 and waits for completition in $2 seconds ## Runs local command $1 and waits for completition in $2 seconds
function RunLocalCommand function RunLocalCommand {
{
if [ $dryrun -ne 0 ]; then if [ $dryrun -ne 0 ]; then
Log "Dryrun: Local command [$1] not run." Log "Dryrun: Local command [$1] not run."
return 1 return 1
@ -469,8 +451,7 @@ function RunLocalCommand
} }
## Runs remote command $1 and waits for completition in $2 seconds ## Runs remote command $1 and waits for completition in $2 seconds
function RunRemoteCommand function RunRemoteCommand {
{
CheckConnectivity3rdPartyHosts CheckConnectivity3rdPartyHosts
CheckConnectivityRemoteHost CheckConnectivityRemoteHost
if [ $dryrun -ne 0 ]; then if [ $dryrun -ne 0 ]; then
@ -498,8 +479,7 @@ function RunRemoteCommand
fi fi
} }
function RunBeforeHook function RunBeforeHook {
{
if [ "$LOCAL_RUN_BEFORE_CMD" != "" ]; then if [ "$LOCAL_RUN_BEFORE_CMD" != "" ]; then
RunLocalCommand "$LOCAL_RUN_BEFORE_CMD" $MAX_EXEC_TIME_PER_CMD_BEFORE RunLocalCommand "$LOCAL_RUN_BEFORE_CMD" $MAX_EXEC_TIME_PER_CMD_BEFORE
fi fi
@ -509,8 +489,7 @@ function RunBeforeHook
fi fi
} }
function RunAfterHook function RunAfterHook {
{
if [ "$LOCAL_RUN_AFTER_CMD" != "" ]; then if [ "$LOCAL_RUN_AFTER_CMD" != "" ]; then
RunLocalCommand "$LOCAL_RUN_AFTER_CMD" $MAX_EXEC_TIME_PER_CMD_AFTER RunLocalCommand "$LOCAL_RUN_AFTER_CMD" $MAX_EXEC_TIME_PER_CMD_AFTER
fi fi
@ -520,8 +499,7 @@ function RunAfterHook
fi fi
} }
function CheckConnectivityRemoteHost function CheckConnectivityRemoteHost {
{
if [ "$REMOTE_HOST_PING" != "no" ] && [ "$REMOTE_SYNC" != "no" ]; then if [ "$REMOTE_HOST_PING" != "no" ] && [ "$REMOTE_SYNC" != "no" ]; then
eval "$PING_CMD $REMOTE_HOST > /dev/null 2>&1" eval "$PING_CMD $REMOTE_HOST > /dev/null 2>&1"
if [ $? != 0 ]; then if [ $? != 0 ]; then
@ -531,8 +509,7 @@ function CheckConnectivityRemoteHost
fi fi
} }
function CheckConnectivity3rdPartyHosts function CheckConnectivity3rdPartyHosts {
{
if [ "$REMOTE_3RD_PARTY_HOSTS" != "" ]; then if [ "$REMOTE_3RD_PARTY_HOSTS" != "" ]; then
remote_3rd_party_success=0 remote_3rd_party_success=0
OLD_IFS=$IFS OLD_IFS=$IFS
@ -670,8 +647,7 @@ _bsd_stat_readlink() {
### Specfic Osync function ### Specfic Osync function
function CreateOsyncDirs function CreateOsyncDirs {
{
if ! [ -d "$MASTER_STATE_DIR" ]; then if ! [ -d "$MASTER_STATE_DIR" ]; then
mkdir -p "$MASTER_STATE_DIR" mkdir -p "$MASTER_STATE_DIR"
if [ $? != 0 ]; then if [ $? != 0 ]; then
@ -699,8 +675,7 @@ function CreateOsyncDirs
fi fi
} }
function CheckMasterSlaveDirs function CheckMasterSlaveDirs {
{
MASTER_SYNC_DIR_CANN=$(realpath "$MASTER_SYNC_DIR") MASTER_SYNC_DIR_CANN=$(realpath "$MASTER_SYNC_DIR")
SLAVE_SYNC_DIR_CANN=$(realpath "$SLAVE_SYNC_DIR") SLAVE_SYNC_DIR_CANN=$(realpath "$SLAVE_SYNC_DIR")
@ -765,8 +740,7 @@ function CheckMasterSlaveDirs
fi fi
} }
function CheckMinimumSpace function CheckMinimumSpace {
{
Log "Checking minimum disk space on master and slave." Log "Checking minimum disk space on master and slave."
MASTER_SPACE=$(df -P "$MASTER_SYNC_DIR" | tail -1 | awk '{print $4}') MASTER_SPACE=$(df -P "$MASTER_SYNC_DIR" | tail -1 | awk '{print $4}')
@ -790,8 +764,7 @@ function CheckMinimumSpace
fi fi
} }
function RsyncExcludePattern function RsyncExcludePattern {
{
# Disable globbing so wildcards from exclusions don't get expanded # Disable globbing so wildcards from exclusions don't get expanded
set -f set -f
rest="$RSYNC_EXCLUDE_PATTERN" rest="$RSYNC_EXCLUDE_PATTERN"
@ -816,8 +789,7 @@ function RsyncExcludePattern
set +f set +f
} }
function RsyncExcludeFrom function RsyncExcludeFrom {
{
if [ ! "$RSYNC_EXCLUDE_FROM" == "" ]; then if [ ! "$RSYNC_EXCLUDE_FROM" == "" ]; then
## Check if the exclude list has a full path, and if not, add the config file path if there is one ## Check if the exclude list has a full path, and if not, add the config file path if there is one
if [ "$(basename $RSYNC_EXCLUDE_FROM)" == "$RSYNC_EXCLUDE_FROM" ]; then if [ "$(basename $RSYNC_EXCLUDE_FROM)" == "$RSYNC_EXCLUDE_FROM" ]; then
@ -830,8 +802,7 @@ function RsyncExcludeFrom
fi fi
} }
function WriteLockFiles function WriteLockFiles {
{
echo $SCRIPT_PID > "$MASTER_LOCK" echo $SCRIPT_PID > "$MASTER_LOCK"
if [ $? != 0 ]; then if [ $? != 0 ]; then
LogError "Could not set lock on master replica." LogError "Could not set lock on master replica."
@ -863,8 +834,7 @@ function WriteLockFiles
fi fi
} }
function LockDirectories function LockDirectories {
{
if [ $nolocks -eq 1 ]; then if [ $nolocks -eq 1 ]; then
return 0 return 0
fi fi
@ -932,8 +902,7 @@ function LockDirectories
WriteLockFiles WriteLockFiles
} }
function UnlockDirectories function UnlockDirectories {
{
if [ $nolocks -eq 1 ]; then if [ $nolocks -eq 1 ]; then
return 0 return 0
fi fi
@ -976,8 +945,7 @@ function UnlockDirectories
## tree_list(replica_path, replica type, tree_filename) Creates a list of files in replica_path for replica type (master/slave) in filename $3 ## tree_list(replica_path, replica type, tree_filename) Creates a list of files in replica_path for replica type (master/slave) in filename $3
function tree_list function tree_list {
{
Log "Creating $2 replica file list [$1]." Log "Creating $2 replica file list [$1]."
if [ "$REMOTE_SYNC" == "yes" ] && [ "$2" == "slave" ]; then if [ "$REMOTE_SYNC" == "yes" ] && [ "$2" == "slave" ]; then
CheckConnectivity3rdPartyHosts CheckConnectivity3rdPartyHosts
@ -1004,8 +972,7 @@ function tree_list
} }
# delete_list(replica, tree-file-after, tree-file-current, deleted-list-file, deleted-failed-list-file): Creates a list of files vanished from last run on replica $1 (master/slave) # delete_list(replica, tree-file-after, tree-file-current, deleted-list-file, deleted-failed-list-file): Creates a list of files vanished from last run on replica $1 (master/slave)
function delete_list function delete_list {
{
Log "Creating $1 replica deleted file list." Log "Creating $1 replica deleted file list."
if [ -f "$MASTER_STATE_DIR/$1$TREE_AFTER_FILENAME_NO_SUFFIX" ]; then if [ -f "$MASTER_STATE_DIR/$1$TREE_AFTER_FILENAME_NO_SUFFIX" ]; then
## Same functionnality, comm is much faster than grep but is not available on every platform ## Same functionnality, comm is much faster than grep but is not available on every platform
@ -1035,8 +1002,7 @@ function delete_list
} }
# sync_update(source replica, destination replica, delete_list_filename) # sync_update(source replica, destination replica, delete_list_filename)
function sync_update function sync_update {
{
Log "Updating $2 replica." Log "Updating $2 replica."
if [ "$1" == "master" ]; then if [ "$1" == "master" ]; then
SOURCE_DIR="$MASTER_SYNC_DIR" SOURCE_DIR="$MASTER_SYNC_DIR"
@ -1085,8 +1051,7 @@ function sync_update
} }
# delete_local(replica dir, delete file list, delete dir, delete failed file) # delete_local(replica dir, delete file list, delete dir, delete failed file)
function _delete_local function _delete_local {
{
## On every run, check wheter the next item is already deleted because it's included in a directory already deleted ## On every run, check wheter the next item is already deleted because it's included in a directory already deleted
previous_file="" previous_file=""
OLD_IFS=$IFS OLD_IFS=$IFS
@ -1143,8 +1108,7 @@ function _delete_local
} }
# delete_remote(replica dir, delete file list, delete dir, delete fail file list) # delete_remote(replica dir, delete file list, delete dir, delete fail file list)
function _delete_remote function _delete_remote {
{
## This is a special coded function. Need to redelcare local functions on remote host, passing all needed variables as escaped arguments to ssh command. ## 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 ## Anything beetween << ENDSSH and ENDSSH will be executed remotely
@ -1265,8 +1229,7 @@ ENDSSH
# delete_propagation(replica name, deleted_list_filename, deleted_failed_file_list) # delete_propagation(replica name, deleted_list_filename, deleted_failed_file_list)
# replica name = "master" / "slave" # replica name = "master" / "slave"
function deletion_propagation function deletion_propagation {
{
Log "Propagating deletions to $1 replica." Log "Propagating deletions to $1 replica."
if [ "$1" == "master" ]; then if [ "$1" == "master" ]; then
@ -1316,8 +1279,7 @@ function deletion_propagation
###### Step 4: Deleted file propagation to master and slave replicas (Steps 4M and 4S) ###### Step 4: Deleted file propagation to master and slave replicas (Steps 4M and 4S)
###### Step 5: Create after run tree list for master and slave replicas (Steps 5M and 5S) ###### Step 5: Create after run tree list for master and slave replicas (Steps 5M and 5S)
function Sync function Sync {
{
Log "Starting synchronization task." Log "Starting synchronization task."
CheckConnectivity3rdPartyHosts CheckConnectivity3rdPartyHosts
CheckConnectivityRemoteHost CheckConnectivityRemoteHost
@ -1475,8 +1437,7 @@ function Sync
echo "0" > "$MASTER_RESUME_COUNT" echo "0" > "$MASTER_RESUME_COUNT"
} }
function SoftDelete function SoftDelete {
{
if [ "$CONFLICT_BACKUP" != "no" ] && [ $CONFLICT_BACKUP_DAYS -ne 0 ]; then if [ "$CONFLICT_BACKUP" != "no" ] && [ $CONFLICT_BACKUP_DAYS -ne 0 ]; then
Log "Running conflict backup cleanup." Log "Running conflict backup cleanup."
_SoftDelete $CONFLICT_BACKUP_DAYS "$MASTER_SYNC_DIR$MASTER_BACKUP_DIR" "$SLAVE_SYNC_DIR$SLAVE_BACKUP_DIR" _SoftDelete $CONFLICT_BACKUP_DAYS "$MASTER_SYNC_DIR$MASTER_BACKUP_DIR" "$SLAVE_SYNC_DIR$SLAVE_BACKUP_DIR"
@ -1491,8 +1452,7 @@ function SoftDelete
# Takes 3 arguments # Takes 3 arguments
# $1 = ctime (CONFLICT_BACKUP_DAYS or SOFT_DELETE_DAYS), $2 = MASTER_(BACKUP/DELETED)_DIR, $3 = SLAVE_(BACKUP/DELETED)_DIR # $1 = ctime (CONFLICT_BACKUP_DAYS or SOFT_DELETE_DAYS), $2 = MASTER_(BACKUP/DELETED)_DIR, $3 = SLAVE_(BACKUP/DELETED)_DIR
function _SoftDelete function _SoftDelete {
{
if [ -d "$2" ]; then if [ -d "$2" ]; then
if [ $dryrun -eq 1 ]; then if [ $dryrun -eq 1 ]; then
Log "Listing files older than $1 days on master replica. Won't remove anything." Log "Listing files older than $1 days on master replica. Won't remove anything."
@ -1585,8 +1545,7 @@ function _SoftDelete
} }
function Init function Init {
{
# Set error exit code if a piped command fails # Set error exit code if a piped command fails
set -o pipefail set -o pipefail
set -o errtrace set -o errtrace
@ -1814,8 +1773,7 @@ function Init
ALERT_LOG_FILE="$ALERT_LOG_FILE$COMPRESSION_EXTENSION" ALERT_LOG_FILE="$ALERT_LOG_FILE$COMPRESSION_EXTENSION"
} }
function InitLocalOSSettings function InitLocalOSSettings {
{
## If running under Msys, some commands don't run the same way ## If running under Msys, some commands don't run the same way
## Using mingw version of find instead of windows one ## Using mingw version of find instead of windows one
## Getting running processes is quite different ## Getting running processes is quite different
@ -1839,8 +1797,7 @@ function InitLocalOSSettings
fi fi
} }
function InitRemoteOSSettings function InitRemoteOSSettings {
{
## MacOSX does not use the -E parameter like Linux or BSD does (-E is mapped to extended attrs instead of preserve executability) ## MacOSX does not use the -E parameter like Linux or BSD does (-E is mapped to extended attrs instead of preserve executability)
if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then
RSYNC_ARGS=$RSYNC_ARGS" -E" RSYNC_ARGS=$RSYNC_ARGS" -E"
@ -1853,15 +1810,13 @@ function InitRemoteOSSettings
fi fi
} }
function Main function Main {
{
CreateOsyncDirs CreateOsyncDirs
LockDirectories LockDirectories
Sync Sync
} }
function Usage function Usage {
{
echo "$PROGRAM $PROGRAM_VERSION $PROGRAM_BUILD" echo "$PROGRAM $PROGRAM_VERSION $PROGRAM_BUILD"
echo $AUTHOR echo $AUTHOR
echo $CONTACT echo $CONTACT
@ -1893,8 +1848,7 @@ function Usage
exit 128 exit 128
} }
function SyncOnChanges function SyncOnChanges {
{
if ! type -p inotifywait > /dev/null 2>&1 if ! type -p inotifywait > /dev/null 2>&1
then then
LogError "No inotifywait command found. Cannot monitor changes." LogError "No inotifywait command found. Cannot monitor changes."