diff --git a/CHANGELOG.md b/CHANGELOG.md index 3332747..8649a63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,8 +13,12 @@ KNOWN ISSUES RECENT CHANGES -------------- - +#TODO: clock compare in doc +#TODO: explain why osync is lowband friendly in doc +#TODO: explain why osync daemon process can still exist after quit for 30s ! XX Apr 2016: osync v1.1 released +! Paranoia debug gives incorrect number of arguments in rsyncpatternsadd +! cat vv | ssh -p 49999 -i /root/.ssh/id_rsa_netpower root@netpower.fr cat | xargs -I {} stat -c "%n;%Z;%Y" "{}" | sort > tes ! Updated documentation (+README.md file) - Redirected ERROR and WARN messages to stderr to systemd catches them into it's journal !- Added a systemd unit file (needs testing in file monitor mode yet) diff --git a/CODING_STYLE.TXT b/CODING_STYLE.TXT index c0e89f2..524c639 100644 --- a/CODING_STYLE.TXT +++ b/CODING_STYLE.TXT @@ -8,7 +8,7 @@ Always use the following header #!/usr/bin/env bash PROGRAM="program-name" # Long description -AUTHOR="(L) 20XX-20YY by Orsiris \"Ozy\" de Jong" +AUTHOR="(C) 20XX-20YY by Orsiris \"Ozy\" de Jong" CONTACT="http://www.example.com me@example.com" PROGRAM_BUILD=YYYYMMDDVV @@ -145,3 +145,12 @@ As obackup and osync share alot of common functions, ofunctions.sh will host all Dev programs n_osync.sh and n_obackup.sh will source ofunctions.sh Release programs will still include ofunctions.sh in order to enhance ease of use. +Ofunctions are defined like: + +#__FUNC:FunctionName +function FunctionName { + +} +#__ENDFUNC + +These functions are inserted into code that has placeholders like #__FUNC:FuncName diff --git a/LICENCE.TXT b/LICENCE.TXT index 0359985..2e340d4 100644 --- a/LICENCE.TXT +++ b/LICENCE.TXT @@ -1,4 +1,4 @@ -Copyright (c) 2013-2015, Orsiris "Ozy" de Jong. ozy@netpower.fr +Copyright (c) 2013-2016, Orsiris de Jong. ozy@netpower.fr All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index db3e567..2001939 100644 --- a/README.md +++ b/README.md @@ -127,10 +127,10 @@ You may run the install.sh script which should work in most cases or copy the fi $ service osync-srv start $ chkconfig osync-srv on -Systemd specific +Systemd specific (one service per config file) - $ systemctl start osync-srv@configfile - $ systemctl enable osync-srv@configfile + $ systemctl start osync-srv@configfile.conf + $ systemctl enable osync-srv@configfile.conf Troubleshooting --------------- diff --git a/dev/de b/dev/de index 892db79..5ac2adf 100755 --- a/dev/de +++ b/dev/de @@ -3,7 +3,7 @@ #TODO: test if trapquit works on kill (sigterm) PROGRAM="osync" # Rsync based two way sync engine with fault tolerance -AUTHOR="(L) 2013-2016 by Orsiris de Jong" +AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-dev PROGRAM_BUILD=2016021804 diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index 7367952..e296052 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -4,7 +4,11 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-dev +<<<<<<< HEAD PROGRAM_BUILD=2016040101 +======= +PROGRAM_BUILD=2016033101 +>>>>>>> master IS_STABLE=yes ## FUNC_BUILD=2016033105 @@ -1134,14 +1138,14 @@ function CheckCurrentConfig { fi # Check all variables that should contain "yes" or "no" - declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION REMOTE_HOST_PING PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR) + declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION SSH_IGNORE_KNOWN_HOSTS REMOTE_HOST_PING PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR) for i in "${yes_no_vars[@]}"; do test="if [ \"\$$i\" != \"yes\" ] && [ \"\$$i\" != \"no\" ]; then Logger \"Bogus $i value defined in config file.\" \"CRITICAL\"; exit 1; fi" eval "$test" done # Check all variables that should contain a numerical value >= 0 - declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY) + declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY MAX_EXEC_TIME_PER_CMD_BEFORE MAX_EXEC_TIME_PER_CMD_AFTER) for i in "${num_vars[@]}"; do test="if [ $(IsNumeric \"\$$i\") -eq 0 ]; then Logger \"Bogus $i value defined in config file.\" \"CRITICAL\"; exit 1; fi" eval "$test" diff --git a/dev/n_osync.sh b/dev/n_osync.sh index 00d19c7..0997f20 100755 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -4,7 +4,11 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-dev +<<<<<<< HEAD PROGRAM_BUILD=2016040101 +======= +PROGRAM_BUILD=2016033101 +>>>>>>> master IS_STABLE=yes source "./ofunctions.sh" @@ -99,14 +103,14 @@ function CheckCurrentConfig { fi # Check all variables that should contain "yes" or "no" - declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION REMOTE_HOST_PING PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR) + declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION SSH_IGNORE_KNOWN_HOSTS REMOTE_HOST_PING PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR) for i in "${yes_no_vars[@]}"; do test="if [ \"\$$i\" != \"yes\" ] && [ \"\$$i\" != \"no\" ]; then Logger \"Bogus $i value defined in config file.\" \"CRITICAL\"; exit 1; fi" eval "$test" done # Check all variables that should contain a numerical value >= 0 - declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY) + declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY MAX_EXEC_TIME_PER_CMD_BEFORE MAX_EXEC_TIME_PER_CMD_AFTER) for i in "${num_vars[@]}"; do test="if [ $(IsNumeric \"\$$i\") -eq 0 ]; then Logger \"Bogus $i value defined in config file.\" \"CRITICAL\"; exit 1; fi" eval "$test" diff --git a/install.sh b/install.sh index 46a647e..e1f947d 100755 --- a/install.sh +++ b/install.sh @@ -135,7 +135,7 @@ fi function Statistics { local link="http://instcount.netpower.fr?program=$PROGRAM&version=$PROGRAM_VERSION" - if type wget > /dev/null; then + if type wget -qO- > /dev/null; then wget $link > /dev/null 2>&1 if [ $? == 0 ]; then exit 0 diff --git a/osync-batch.sh b/osync-batch.sh index b291e7f..63f292e 100755 --- a/osync-batch.sh +++ b/osync-batch.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash SUBPROGRAM=osync PROGRAM="$SUBPROGRAM-batch" # Batch program to run osync / obackup instances sequentially and rerun failed ones -AUTHOR="(C) 2013-2016 by Orsiris de Jong" +AUTHOR="(L) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr - ozy@netpower.fr" PROGRAM_BUILD=2016031301 diff --git a/osync-srv b/osync-srv index 82f034a..7a39965 100755 --- a/osync-srv +++ b/osync-srv @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # # osync-srv Two way directory sync daemon # diff --git a/osync.sh b/osync.sh index 07487ee..1ec3724 100755 --- a/osync.sh +++ b/osync.sh @@ -4,7 +4,11 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-dev +<<<<<<< HEAD PROGRAM_BUILD=2016040101 +======= +PROGRAM_BUILD=2016033101 +>>>>>>> master IS_STABLE=yes ## FUNC_BUILD=2016033105 @@ -1060,14 +1064,14 @@ function CheckCurrentConfig { fi # Check all variables that should contain "yes" or "no" - declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION REMOTE_HOST_PING PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR) + declare -a yes_no_vars=(CREATE_DIRS SUDO_EXEC SSH_COMPRESSION SSH_IGNORE_KNOWN_HOSTS REMOTE_HOST_PING PRESERVE_ACL PRESERVE_XATTR COPY_SYMLINKS KEEP_DIRLINKS PRESERVE_HARDLINKS CHECKSUM RSYNC_COMPRESS CONFLICT_BACKUP CONFLICT_BACKUP_MULTIPLE SOFT_DELETE RESUME_SYNC FORCE_STRANGER_LOCK_RESUME PARTIAL DELTA_COPIES STOP_ON_CMD_ERROR) for i in "${yes_no_vars[@]}"; do test="if [ \"\$$i\" != \"yes\" ] && [ \"\$$i\" != \"no\" ]; then Logger \"Bogus $i value defined in config file.\" \"CRITICAL\"; exit 1; fi" eval "$test" done # Check all variables that should contain a numerical value >= 0 - declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY) + declare -a num_vars=(MINIMUM_SPACE BANDWIDTH SOFT_MAX_EXEC_TIME HARD_MAX_EXEC_TIME MIN_WAIT MAX_WAIT CONFLICT_BACKUP_DAYS SOFT_DELETE_DAYS RESUME_TRY MAX_EXEC_TIME_PER_CMD_BEFORE MAX_EXEC_TIME_PER_CMD_AFTER) for i in "${num_vars[@]}"; do test="if [ $(IsNumeric \"\$$i\") -eq 0 ]; then Logger \"Bogus $i value defined in config file.\" \"CRITICAL\"; exit 1; fi" eval "$test" diff --git a/tests/run.sh b/tests/run.sh index ecdf1d2..f3dfe3d 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Test dir TMP="/tmp/osync_tests" diff --git a/upgrade-v1.0x-v1.1x.sh b/upgrade-v1.0x-v1.1x.sh index 002d63c..bb1405c 100755 --- a/upgrade-v1.0x-v1.1x.sh +++ b/upgrade-v1.0x-v1.1x.sh @@ -6,7 +6,7 @@ AUTHOR="(C) 2015 by Orsiris \"Ozy\" de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" OLD_PROGRAM_VERSION="1.0x" NEW_PROGRAM_VERSION="v1.1x" -PROGRAM_BUILD=2016033101 +PROGRAM_BUILD=2016033102 function Init { OSYNC_DIR=".osync_workdir" @@ -311,8 +311,8 @@ function RewriteConfigFiles { exit 1 fi - echo "Backing up [$config_file] as [$config_file.v1.0x.save]" - cp --preserve "$config_file" "$config_file.v1.0x.save" + echo "Backing up [$config_file] as [$config_file.save]" + cp --preserve "$config_file" "$config_file.save" if [ $? != 0 ]; then echo "Cannot backup config file." exit 1