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/dev/debug_osync.sh b/dev/debug_osync.sh index 55b6502..3973084 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -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" ;; @@ -2221,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" @@ -2663,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 @@ -2929,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 @@ -3080,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" \ @@ -5297,7 +5319,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 +5372,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..bd558e5 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 @@ -506,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" == "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" \ @@ -2173,7 +2187,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 +2240,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..08a966f 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" ;; @@ -2240,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 7872ec1..6d7926c 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" ;; @@ -2309,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 f688df2..8993505 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" ;; @@ -1934,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 9257e20..c624ef1 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" ;; @@ -2072,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" @@ -2510,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 @@ -2766,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 @@ -2914,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" \ @@ -5086,7 +5108,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 +5160,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