From 45304c608cbfed308c8f97c1483e0a084669ef5e Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Wed, 4 Nov 2020 12:09:53 +0100 Subject: [PATCH 1/9] Support for Qnap without ctime --- dev/debug_osync.sh | 12 +++++++++--- dev/n_osync.sh | 4 ++-- dev/ofunctions.sh | 6 ++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index 55b6502..7a82acc 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -759,7 +759,7 @@ function _PerfProfiler { #__WITH_PARANOIA_DEBUG perfString=$(ps -p $$ -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan) #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG for i in $(pgrep -P $$); do #__WITH_PARANOIA_DEBUG - perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | :| tail -1) #__WITH_PARANOIA_DEBUG + perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | tail -1) #__WITH_PARANOIA_DEBUG done #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG if type iostat > /dev/null 2>&1; then #__WITH_PARANOIA_DEBUG @@ -1471,6 +1471,9 @@ function GetLocalOS { *"Android"*) LOCAL_OS="Android" ;; + *"qnap"*) + LOCAL_OS="Qnap" + ;; *"Linux"*) LOCAL_OS="Linux" ;; @@ -1697,6 +1700,9 @@ ENDSSH *"Android"*) REMOTE_OS="Android" ;; + *"qnap"*) + REMOTE_OS="Qnap" + ;; *"Linux"*) REMOTE_OS="Linux" ;; @@ -5297,7 +5303,7 @@ function _SoftDeleteLocal { local retval - if [ "$LOCAL_OS" == "Busybox" ] || [ "$LOCAL_OS" == "Android" ]; then + if [ "$LOCAL_OS" == "Busybox" ] || [ "$LOCAL_OS" == "Android" ] || [ "$LOCAL_OS" == "Qnap" ]; then Logger "Skipping $deletionType deletion on $replicaType. Busybox find -ctime not supported." "NOTICE" return 0 fi @@ -5350,7 +5356,7 @@ function _SoftDeleteRemote { local retval - if [ "$REMOTE_OS" == "BusyBox" ] || [ "$REMOTE_OS" == "Android" ]; then + if [ "$REMOTE_OS" == "BusyBox" ] || [ "$REMOTE_OS" == "Android" ] || [ "$REMOTE_OS" == "Qnap" ]; then Logger "Skipping $deletionType deletion on $replicaType. Busybox find -ctime not supported." "NOTICE" return 0 fi diff --git a/dev/n_osync.sh b/dev/n_osync.sh index 91c4c77..30919f0 100644 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -2173,7 +2173,7 @@ function _SoftDeleteLocal { local retval - if [ "$LOCAL_OS" == "Busybox" ] || [ "$LOCAL_OS" == "Android" ]; then + if [ "$LOCAL_OS" == "Busybox" ] || [ "$LOCAL_OS" == "Android" ] || [ "$LOCAL_OS" == "Qnap" ]; then Logger "Skipping $deletionType deletion on $replicaType. Busybox find -ctime not supported." "NOTICE" return 0 fi @@ -2226,7 +2226,7 @@ function _SoftDeleteRemote { local retval - if [ "$REMOTE_OS" == "BusyBox" ] || [ "$REMOTE_OS" == "Android" ]; then + if [ "$REMOTE_OS" == "BusyBox" ] || [ "$REMOTE_OS" == "Android" ] || [ "$REMOTE_OS" == "Qnap" ]; then Logger "Skipping $deletionType deletion on $replicaType. Busybox find -ctime not supported." "NOTICE" return 0 fi diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 0c458c2..0179116 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -1488,6 +1488,9 @@ function GetLocalOS { *"Android"*) LOCAL_OS="Android" ;; + *"qnap"*) + LOCAL_OS="Qnap" + ;; *"Linux"*) LOCAL_OS="Linux" ;; @@ -1716,6 +1719,9 @@ ENDSSH *"Android"*) REMOTE_OS="Android" ;; + *"qnap"*) + REMOTE_OS="Qnap" + ;; *"Linux"*) REMOTE_OS="Linux" ;; From 81437b58242586a181da508ffdb5ab4837007b8c Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Wed, 4 Nov 2020 12:13:18 +0100 Subject: [PATCH 2/9] Support for Qnap without ctime --- README.md | 2 +- install.sh | 9 +++++++++ osync-batch.sh | 6 ++++++ osync.sh | 10 ++++++++-- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f816cca..624ac84 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ osync uses pidlocks to prevent multiple concurrent sync processes on/to the same You may launch concurrent sync processes on the same system but as long as the replicas to synchronize are different. Multiple osync tasks may be launched sequentially by osync osync-batch tool. -Currently, it has been tested on CentOS 5.x, 6.x, 7.x, Fedora 22-25, Debian 6-8, Linux Mint 14-18, Ubuntu 12.04-12.10, FreeBSD 8.3-11, Mac OS X and pfSense 2.3.x. +Currently, it has been tested on CentOS 5.x, 6.x, 7.x, Fedora 22-25, Debian 6-8, Linux Mint 14-18, Ubuntu 12.04-12.10, FreeBSD 8.3-11, Mac OS X, QTS 4.5.1(x86) and pfSense 2.3.x. Microsoft Windows is supported via MSYS or Cygwin and now via Windows 10 bash. Android support works via Termux. Some users also have successfully used osync on Gentoo and created an openRC init scriptt for it. diff --git a/install.sh b/install.sh index 7872ec1..8746566 100755 --- a/install.sh +++ b/install.sh @@ -483,6 +483,9 @@ function GetLocalOS { *"Android"*) LOCAL_OS="Android" ;; + *"qnap"*) + LOCAL_OS="Qnap" + ;; *"Linux"*) LOCAL_OS="Linux" ;; @@ -1630,6 +1633,9 @@ function GetLocalOS { *"Android"*) LOCAL_OS="Android" ;; + *"qnap"*) + LOCAL_OS="Qnap" + ;; *"Linux"*) LOCAL_OS="Linux" ;; @@ -1802,6 +1808,9 @@ ENDSSH *"Android"*) REMOTE_OS="Android" ;; + *"qnap"*) + REMOTE_OS="Qnap" + ;; *"Linux"*) REMOTE_OS="Linux" ;; diff --git a/osync-batch.sh b/osync-batch.sh index f688df2..5f82aa1 100755 --- a/osync-batch.sh +++ b/osync-batch.sh @@ -1255,6 +1255,9 @@ function GetLocalOS { *"Android"*) LOCAL_OS="Android" ;; + *"qnap"*) + LOCAL_OS="Qnap" + ;; *"Linux"*) LOCAL_OS="Linux" ;; @@ -1427,6 +1430,9 @@ ENDSSH *"Android"*) REMOTE_OS="Android" ;; + *"qnap"*) + REMOTE_OS="Qnap" + ;; *"Linux"*) REMOTE_OS="Linux" ;; diff --git a/osync.sh b/osync.sh index 9257e20..3a9dd39 100755 --- a/osync.sh +++ b/osync.sh @@ -1395,6 +1395,9 @@ function GetLocalOS { *"Android"*) LOCAL_OS="Android" ;; + *"qnap"*) + LOCAL_OS="Qnap" + ;; *"Linux"*) LOCAL_OS="Linux" ;; @@ -1565,6 +1568,9 @@ ENDSSH *"Android"*) REMOTE_OS="Android" ;; + *"qnap"*) + REMOTE_OS="Qnap" + ;; *"Linux"*) REMOTE_OS="Linux" ;; @@ -5086,7 +5092,7 @@ function _SoftDeleteLocal { local retval - if [ "$LOCAL_OS" == "Busybox" ] || [ "$LOCAL_OS" == "Android" ]; then + if [ "$LOCAL_OS" == "Busybox" ] || [ "$LOCAL_OS" == "Android" ] || [ "$LOCAL_OS" == "Qnap" ]; then Logger "Skipping $deletionType deletion on $replicaType. Busybox find -ctime not supported." "NOTICE" return 0 fi @@ -5138,7 +5144,7 @@ function _SoftDeleteRemote { local retval - if [ "$REMOTE_OS" == "BusyBox" ] || [ "$REMOTE_OS" == "Android" ]; then + if [ "$REMOTE_OS" == "BusyBox" ] || [ "$REMOTE_OS" == "Android" ] || [ "$REMOTE_OS" == "Qnap" ]; then Logger "Skipping $deletionType deletion on $replicaType. Busybox find -ctime not supported." "NOTICE" return 0 fi From cc21cc6acc882c16054b07ecd8ff6c4afa6f9c51 Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Wed, 4 Nov 2020 15:44:54 +0100 Subject: [PATCH 3/9] ps -a instead of ps -A, % diskspace --- dev/n_osync.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dev/n_osync.sh b/dev/n_osync.sh index 30919f0..912e01e 100644 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -287,6 +287,9 @@ function _CheckReplicasLocal { if [ $MINIMUM_SPACE -ne 0 ]; then Logger "Checking minimum disk space in local replica [$replicaPath]." "NOTICE" diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $4}') + if [[ $diskSpace == *"%"* ]]; then + diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $3}') + fi retval=$? if [ $retval -ne 0 ]; then Logger "Cannot get free space." "ERROR" $retval @@ -355,6 +358,9 @@ function _CheckReplicasRemoteSub { if [ $MINIMUM_SPACE -ne 0 ]; then RemoteLogger "Checking minimum disk space in remote replica [$replicaPath]." "NOTICE" diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $4}') + if [[ $diskSpace == *"%"* ]]; then + diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $3}') + fi retval=$? if [ $retval -ne 0 ]; then RemoteLogger "Cannot get free space." "ERROR" $retval @@ -508,7 +514,7 @@ function _HandleLocksRemote { CheckConnectivityRemoteHost # Create an array of all currently running pids - read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + read -a initiatorRunningPids <<< $(ps -a | tail -n +2 | awk '{print $1}') # passing initiatorRunningPids as litteral string (has to be run through eval to be an array again) $SSH_CMD env _REMOTE_TOKEN="$_REMOTE_TOKEN" \ From 009a4aabe0a06a913cf6c905acbbffbbf3c5d049 Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Thu, 5 Nov 2020 08:49:40 +0000 Subject: [PATCH 4/9] Updated with suggestions --- dev/n_osync.sh | 10 +++++++++- dev/ofunctions.sh | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dev/n_osync.sh b/dev/n_osync.sh index 912e01e..dd275ed 100644 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -512,9 +512,17 @@ function _HandleLocksRemote { CheckConnectivity3rdPartyHosts CheckConnectivityRemoteHost + + # Check if -A exists on target + ps -A > /dev/null 2>&1 + notExistaCapitalA=$? # Create an array of all currently running pids - read -a initiatorRunningPids <<< $(ps -a | tail -n +2 | awk '{print $1}') + if [ "$notExistaCapitalA" == "1"]; then + read -a initiatorRunningPids <<< $(ps -e | tail -n +2 | awk '{print $1}') + else + read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + fi # passing initiatorRunningPids as litteral string (has to be run through eval to be an array again) $SSH_CMD env _REMOTE_TOKEN="$_REMOTE_TOKEN" \ diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 0179116..5b2cfea 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -767,7 +767,7 @@ function _PerfProfiler { #__WITH_PARANOIA_DEBUG perfString=$(ps -p $$ -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan) #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG for i in $(pgrep -P $$); do #__WITH_PARANOIA_DEBUG - perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | tail -1) #__WITH_PARANOIA_DEBUG + perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | :| tail -1) #__WITH_PARANOIA_DEBUG done #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG if type iostat > /dev/null 2>&1; then #__WITH_PARANOIA_DEBUG From ca822566d4e1a0e09528ce1cc87dff9fadb7ba87 Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Thu, 5 Nov 2020 08:52:55 +0000 Subject: [PATCH 5/9] Updated with suggestions --- dev/n_osync.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev/n_osync.sh b/dev/n_osync.sh index dd275ed..bd558e5 100644 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -518,10 +518,10 @@ function _HandleLocksRemote { notExistaCapitalA=$? # Create an array of all currently running pids - if [ "$notExistaCapitalA" == "1"]; then - read -a initiatorRunningPids <<< $(ps -e | tail -n +2 | awk '{print $1}') - else + if [ "$notExistaCapitalA" == "0" ]; then read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + else + read -a initiatorRunningPids <<< $(ps -e | tail -n +2 | awk '{print $1}') fi # passing initiatorRunningPids as litteral string (has to be run through eval to be an array again) From 2ebd22c441a4456ae69e8e52773ec30664dc6347 Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Thu, 5 Nov 2020 09:14:55 +0000 Subject: [PATCH 6/9] Changed support for -z/-zz on Qnap --- dev/debug_osync.sh | 22 +++++++++++++++++++--- dev/ofunctions.sh | 4 +++- install.sh | 4 +++- osync-batch.sh | 4 +++- osync.sh | 20 ++++++++++++++++++-- 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index 7a82acc..3973084 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -759,7 +759,7 @@ function _PerfProfiler { #__WITH_PARANOIA_DEBUG perfString=$(ps -p $$ -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan) #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG for i in $(pgrep -P $$); do #__WITH_PARANOIA_DEBUG - perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | tail -1) #__WITH_PARANOIA_DEBUG + perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | :| tail -1) #__WITH_PARANOIA_DEBUG done #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG if type iostat > /dev/null 2>&1; then #__WITH_PARANOIA_DEBUG @@ -2227,7 +2227,9 @@ function InitRemoteOSDependingSettings { fi fi if [ "$RSYNC_COMPRESS" == true ]; then - if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then + if [ "$LOCAL_OS" == "Qnap" ] || [ "$REMOTE_OS" == "Qnap" ]; then + RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -z --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" + elif [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -zz --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" else Logger "Disabling compression skips on synchronization on [$LOCAL_OS] due to lack of support." "NOTICE" @@ -2669,6 +2671,9 @@ function _CheckReplicasLocal { if [ $MINIMUM_SPACE -ne 0 ]; then Logger "Checking minimum disk space in local replica [$replicaPath]." "NOTICE" diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $4}') + if [[ $diskSpace == *"%"* ]]; then + diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $3}') + fi retval=$? if [ $retval -ne 0 ]; then Logger "Cannot get free space." "ERROR" $retval @@ -2935,6 +2940,9 @@ function _CheckReplicasRemoteSub { if [ $MINIMUM_SPACE -ne 0 ]; then RemoteLogger "Checking minimum disk space in remote replica [$replicaPath]." "NOTICE" diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $4}') + if [[ $diskSpace == *"%"* ]]; then + diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $3}') + fi retval=$? if [ $retval -ne 0 ]; then RemoteLogger "Cannot get free space." "ERROR" $retval @@ -3086,9 +3094,17 @@ function _HandleLocksRemote { CheckConnectivity3rdPartyHosts CheckConnectivityRemoteHost + + # Check if -A exists on target + ps -A > /dev/null 2>&1 + notExistaCapitalA=$? # Create an array of all currently running pids - read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + if [ "$notExistaCapitalA" == "0" ]; then + read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + else + read -a initiatorRunningPids <<< $(ps -e | tail -n +2 | awk '{print $1}') + fi # passing initiatorRunningPids as litteral string (has to be run through eval to be an array again) $SSH_CMD env _REMOTE_TOKEN="$_REMOTE_TOKEN" \ diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 5b2cfea..4a1ec8f 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -2246,7 +2246,9 @@ function InitRemoteOSDependingSettings { fi fi if [ "$RSYNC_COMPRESS" == true ]; then - if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then + if [ "$LOCAL_OS" == "Qnap" ] || [ "$REMOTE_OS" == "Qnap" ]; then + RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -z --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" + elif [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -zz --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" else Logger "Disabling compression skips on synchronization on [$LOCAL_OS] due to lack of support." "NOTICE" diff --git a/install.sh b/install.sh index 8746566..6d7926c 100755 --- a/install.sh +++ b/install.sh @@ -2318,7 +2318,9 @@ function InitRemoteOSDependingSettings { fi fi if [ "$RSYNC_COMPRESS" == true ]; then - if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then + if [ "$LOCAL_OS" == "Qnap" ] || [ "$REMOTE_OS" == "Qnap" ]; then + RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -z --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" + elif [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -zz --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" else Logger "Disabling compression skips on synchronization on [$LOCAL_OS] due to lack of support." "NOTICE" diff --git a/osync-batch.sh b/osync-batch.sh index 5f82aa1..8993505 100755 --- a/osync-batch.sh +++ b/osync-batch.sh @@ -1940,7 +1940,9 @@ function InitRemoteOSDependingSettings { fi fi if [ "$RSYNC_COMPRESS" == true ]; then - if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then + if [ "$LOCAL_OS" == "Qnap" ] || [ "$REMOTE_OS" == "Qnap" ]; then + RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -z --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" + elif [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -zz --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" else Logger "Disabling compression skips on synchronization on [$LOCAL_OS] due to lack of support." "NOTICE" diff --git a/osync.sh b/osync.sh index 3a9dd39..c624ef1 100755 --- a/osync.sh +++ b/osync.sh @@ -2078,7 +2078,9 @@ function InitRemoteOSDependingSettings { fi fi if [ "$RSYNC_COMPRESS" == true ]; then - if [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then + if [ "$LOCAL_OS" == "Qnap" ] || [ "$REMOTE_OS" == "Qnap" ]; then + RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -z --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" + elif [ "$LOCAL_OS" != "MacOSX" ] && [ "$REMOTE_OS" != "MacOSX" ]; then RSYNC_DEFAULT_ARGS=$RSYNC_DEFAULT_ARGS" -zz --skip-compress=3fr/3g2/3gp/3gpp/7z/aac/ace/amr/apk/appx/appxbundle/arc/arj/arw/asf/avi/bz/bz2/cab/cr2/crypt[5678]/dat/dcr/deb/dmg/drc/ear/erf/flac/flv/gif/gpg/gz/iiq/jar/jp2/jpeg/jpg/h26[45]/k25/kdc/kgb/lha/lz/lzma/lzo/lzx/m4[apv]/mef/mkv/mos/mov/mp[34]/mpeg/mp[gv]/msi/nef/oga/ogg/ogv/opus/orf/pak/pef/png/qt/rar/r[0-9][0-9]/rz/rpm/rw2/rzip/s7z/sfark/sfx/sr2/srf/svgz/t[gb]z/tlz/txz/vob/wim/wma/wmv/xz/zip" else Logger "Disabling compression skips on synchronization on [$LOCAL_OS] due to lack of support." "NOTICE" @@ -2516,6 +2518,9 @@ function _CheckReplicasLocal { if [ $MINIMUM_SPACE -ne 0 ]; then Logger "Checking minimum disk space in local replica [$replicaPath]." "NOTICE" diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $4}') + if [[ $diskSpace == *"%"* ]]; then + diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $3}') + fi retval=$? if [ $retval -ne 0 ]; then Logger "Cannot get free space." "ERROR" $retval @@ -2772,6 +2777,9 @@ function _CheckReplicasRemoteSub { if [ $MINIMUM_SPACE -ne 0 ]; then RemoteLogger "Checking minimum disk space in remote replica [$replicaPath]." "NOTICE" diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $4}') + if [[ $diskSpace == *"%"* ]]; then + diskSpace=$($DF_CMD "$replicaPath" | tail -1 | awk '{print $3}') + fi retval=$? if [ $retval -ne 0 ]; then RemoteLogger "Cannot get free space." "ERROR" $retval @@ -2920,9 +2928,17 @@ function _HandleLocksRemote { CheckConnectivity3rdPartyHosts CheckConnectivityRemoteHost + + # Check if -A exists on target + ps -A > /dev/null 2>&1 + notExistaCapitalA=$? # Create an array of all currently running pids - read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + if [ "$notExistaCapitalA" == "0" ]; then + read -a initiatorRunningPids <<< $(ps -A | tail -n +2 | awk '{print $1}') + else + read -a initiatorRunningPids <<< $(ps -e | tail -n +2 | awk '{print $1}') + fi # passing initiatorRunningPids as litteral string (has to be run through eval to be an array again) $SSH_CMD env _REMOTE_TOKEN="$_REMOTE_TOKEN" \ From 88c74dda704eed930d0226298174a1bbefed89f3 Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Thu, 5 Nov 2020 09:17:34 +0000 Subject: [PATCH 7/9] Changed support for -z/-zz on Qnap --- dev/ofunctions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 4a1ec8f..08a966f 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -767,7 +767,7 @@ function _PerfProfiler { #__WITH_PARANOIA_DEBUG perfString=$(ps -p $$ -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan) #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG for i in $(pgrep -P $$); do #__WITH_PARANOIA_DEBUG - perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | :| tail -1) #__WITH_PARANOIA_DEBUG + perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | tail -1) #__WITH_PARANOIA_DEBUG done #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG if type iostat > /dev/null 2>&1; then #__WITH_PARANOIA_DEBUG From 536f8ce6f08a5ae1d042ab1f36e85d88ce689dfc Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Thu, 5 Nov 2020 09:25:07 +0000 Subject: [PATCH 8/9] Changed support for -z/-zz on Qnap --- dev/ofunctions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 08a966f..4a1ec8f 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -767,7 +767,7 @@ function _PerfProfiler { #__WITH_PARANOIA_DEBUG perfString=$(ps -p $$ -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan) #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG for i in $(pgrep -P $$); do #__WITH_PARANOIA_DEBUG - perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | tail -1) #__WITH_PARANOIA_DEBUG + perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | :| tail -1) #__WITH_PARANOIA_DEBUG done #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG if type iostat > /dev/null 2>&1; then #__WITH_PARANOIA_DEBUG From 4076423d98f992c72f43b1ee07c79efed83033f9 Mon Sep 17 00:00:00 2001 From: Enrico Da Ros Date: Thu, 5 Nov 2020 09:31:41 +0000 Subject: [PATCH 9/9] Changed ofunctions to prev version --- dev/ofunctions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 4a1ec8f..08a966f 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -767,7 +767,7 @@ function _PerfProfiler { #__WITH_PARANOIA_DEBUG perfString=$(ps -p $$ -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan) #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG for i in $(pgrep -P $$); do #__WITH_PARANOIA_DEBUG - perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | :| tail -1) #__WITH_PARANOIA_DEBUG + perfString="$perfString\n"$(ps -p $i -o args,pid,ppid,%cpu,%mem,time,etime,state,wchan | tail -1) #__WITH_PARANOIA_DEBUG done #__WITH_PARANOIA_DEBUG #__WITH_PARANOIA_DEBUG if type iostat > /dev/null 2>&1; then #__WITH_PARANOIA_DEBUG