diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index 6dae0dd..dbee41d 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -2477,8 +2477,16 @@ function FileMove () { mv -f "$source" "$dest" return $? elif [ -w "$source" ]; then - [ -f "$dest" ] && rm -f "$dest" - cp -p "$source" "$dest" && rm -f "$source" + if [ -f "$dest" ]; then # for files we don't need recursive delete + rm -f "$dest" + elif [ -d "$dest" ]; then # for directories we need recursive delete + rm -rf "$dest" + fi + if [ -f "$source" ]; then + cp -p "$source" "$dest" && rm -f "$source" # for files we don't need recursive copy & delete + elif [ -d "$source" ]; then + cp -rp "$source" "$dest" && rm -rf "$source" # for directories we need recursive copy & delete + fi return $? else return -1 @@ -4865,8 +4873,16 @@ function FileMove () { mv -f "$source" "$dest" return $? elif [ -w "$source" ]; then - [ -f "$dest" ] && rm -f "$dest" - cp -p "$source" "$dest" && rm -f "$source" + if [ -f "$dest" ]; then # for files we don't need recursive delete + rm -f "$dest" + elif [ -d "$dest" ]; then # for directories we need recursive delete + rm -rf "$dest" + fi + if [ -f "$source" ]; then + cp -p "$source" "$dest" && rm -f "$source" # for files we don't need recursive copy & delete + elif [ -d "$source" ]; then + cp -rp "$source" "$dest" && rm -rf "$source" # for directories we need recursive copy & delete + fi return $? else return -1 diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 835b9b9..71eb703 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -2504,8 +2504,16 @@ function FileMove () { mv -f "$source" "$dest" return $? elif [ -w "$source" ]; then - [ -f "$dest" ] && rm -f "$dest" - cp -p "$source" "$dest" && rm -f "$source" + if [ -f "$dest" ]; then # for files we don't need recursive delete + rm -f "$dest" + elif [ -d "$dest" ]; then # for directories we need recursive delete + rm -rf "$dest" + fi + if [ -f "$source" ]; then + cp -p "$source" "$dest" && rm -f "$source" # for files we don't need recursive copy & delete + elif [ -d "$source" ]; then + cp -rp "$source" "$dest" && rm -rf "$source" # for directories we need recursive copy & delete + fi return $? else return -1 diff --git a/osync.sh b/osync.sh index e3e94e6..2631f41 100755 --- a/osync.sh +++ b/osync.sh @@ -2327,8 +2327,16 @@ function FileMove () { mv -f "$source" "$dest" return $? elif [ -w "$source" ]; then - [ -f "$dest" ] && rm -f "$dest" - cp -p "$source" "$dest" && rm -f "$source" + if [ -f "$dest" ]; then # for files we don't need recursive delete + rm -f "$dest" + elif [ -d "$dest" ]; then # for directories we need recursive delete + rm -rf "$dest" + fi + if [ -f "$source" ]; then + cp -p "$source" "$dest" && rm -f "$source" # for files we don't need recursive copy & delete + elif [ -d "$source" ]; then + cp -rp "$source" "$dest" && rm -rf "$source" # for directories we need recursive copy & delete + fi return $? else return -1 @@ -4657,8 +4665,16 @@ function FileMove () { mv -f "$source" "$dest" return $? elif [ -w "$source" ]; then - [ -f "$dest" ] && rm -f "$dest" - cp -p "$source" "$dest" && rm -f "$source" + if [ -f "$dest" ]; then # for files we don't need recursive delete + rm -f "$dest" + elif [ -d "$dest" ]; then # for directories we need recursive delete + rm -rf "$dest" + fi + if [ -f "$source" ]; then + cp -p "$source" "$dest" && rm -f "$source" # for files we don't need recursive copy & delete + elif [ -d "$source" ]; then + cp -rp "$source" "$dest" && rm -rf "$source" # for directories we need recursive copy & delete + fi return $? else return -1