Refactor mv calls to FileMove just because of macos
This commit is contained in:
parent
39a8a309f5
commit
bf86cc5f6f
|
@ -7,7 +7,7 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance
|
||||||
AUTHOR="(C) 2013-2019 by Orsiris de Jong"
|
AUTHOR="(C) 2013-2019 by Orsiris de Jong"
|
||||||
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
||||||
PROGRAM_VERSION=1.3.0-prerc1
|
PROGRAM_VERSION=1.3.0-prerc1
|
||||||
PROGRAM_BUILD=2019122405
|
PROGRAM_BUILD=2019122406
|
||||||
IS_STABLE=false
|
IS_STABLE=false
|
||||||
|
|
||||||
CONFIG_FILE_REVISION_REQUIRED=1.3.0
|
CONFIG_FILE_REVISION_REQUIRED=1.3.0
|
||||||
|
@ -798,11 +798,8 @@ function treeList {
|
||||||
retval=$?
|
retval=$?
|
||||||
|
|
||||||
if [ -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" ]; then
|
if [ -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" ]; then
|
||||||
# mv fails on MacOS when $RUN_DIR =/tmp because of some shady apple BS
|
# Cannot use standard mv function because of some Apple BS... see #175
|
||||||
# see https://apple.stackexchange.com/questions/275521/how-does-group-wheel-get-on-my-files and #175
|
FileMove "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" "$treeFilename"
|
||||||
#mv -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" "$treeFilename"
|
|
||||||
[ -f "$treeFileName" ] && rm -f "$treeFileName"
|
|
||||||
cp -p "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" "$treeFilename" && rm -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP"
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
Logger "Cannot move treeList files \"$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP\" => \"$treeFilename\"". "ERROR"
|
Logger "Cannot move treeList files \"$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP\" => \"$treeFilename\"". "ERROR"
|
||||||
return $retval
|
return $retval
|
||||||
|
@ -882,9 +879,7 @@ function deleteList {
|
||||||
# Make sure deletion list does not contain duplicates from faledDeleteListFile
|
# Make sure deletion list does not contain duplicates from faledDeleteListFile
|
||||||
uniq "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}" > "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP"
|
uniq "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}" > "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP"
|
||||||
if [ -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" ]; then
|
if [ -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" ]; then
|
||||||
#mv "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}"
|
FileMove "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}"
|
||||||
[ -f "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}" ] && rm -f "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}"
|
|
||||||
cp -p "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP" "${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}" && rm -f "$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP"
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
Logger "Cannot move \"$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP\" => \"${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}\"" "ERROR"
|
Logger "Cannot move \"$RUN_DIR/$PROGRAM.${FUNCNAME[0]}.$replicaType.$SCRIPT_PID.$TSTAMP\" => \"${INITIATOR[$__replicaDir]}${INITIATOR[$__stateDir]}/$replicaType${INITIATOR[$__deletedListFile]}\"" "ERROR"
|
||||||
fi
|
fi
|
||||||
|
@ -1375,34 +1370,11 @@ function _deleteLocal {
|
||||||
if [ "$parentdir" != "." ]; then
|
if [ "$parentdir" != "." ]; then
|
||||||
mkdir -p "$replicaDir$deletionDir/$parentdir"
|
mkdir -p "$replicaDir$deletionDir/$parentdir"
|
||||||
Logger "Moving deleted file [$replicaDir$files] to [$replicaDir$deletionDir/$parentdir] on $replicaType." "VERBOSE"
|
Logger "Moving deleted file [$replicaDir$files] to [$replicaDir$deletionDir/$parentdir] on $replicaType." "VERBOSE"
|
||||||
# Apple BS mv does not keep ownership, simulating move when subject is not a symlink
|
FileMove "$replicaDir$files" "$replicaDir$deletionDir/$parentdir"
|
||||||
if [ -L "$replicaDir$files" ]; then
|
retval=$?
|
||||||
mv -f "$replicaDir$files" "$replicaDir$deletionDir/$parentdir"
|
|
||||||
retval=$?
|
|
||||||
elif [ -w "$replicaDir$files" ]; then
|
|
||||||
[ -f "$replicaDir$deletionDir/$parentdir/$files" ] && rm -f "$replicaDir$deletionDir/$parentdir/$files"
|
|
||||||
cp -p "$replicaDir$files" "$replicaDir$deletionDir/$parentdir" && rm -f "$replicaDir$files"
|
|
||||||
retval=$?
|
|
||||||
else
|
|
||||||
Logger "File [$replicaDir$files] is not writable." "ERROR"
|
|
||||||
retval=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
else
|
||||||
Logger "Moving deleted file [$replicaDir$files] to [$replicaDir$deletionDir] on $replicaType." "VERBOSE"
|
FileMove "$replicaDir$files" "$replicaDir$deletionDir"
|
||||||
# Apple BS mv does not keep ownership, simulating move
|
retval=$?
|
||||||
if [ -L "$replicaDir$files" ]; then
|
|
||||||
mv -f "$replicaDir$files" "$replicaDir$deletionDir"
|
|
||||||
retval=$?
|
|
||||||
elif [ -w "$replicaDir$files" ]; then
|
|
||||||
[ -f "$replicaDir$deletionDir/$files" ] && rm -f "$replicaDir$deletionDir/$files"
|
|
||||||
cp -p "$replicaDir$files" "$replicaDir$deletionDir/" && rm -f "$replicaDir$files"
|
|
||||||
retval=$?
|
|
||||||
else
|
|
||||||
Logger "File [$replicaDir$files] is not writable." "ERROR"
|
|
||||||
retval=-1
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
if [ $retval -ne 0 ]; then
|
if [ $retval -ne 0 ]; then
|
||||||
Logger "Cannot move [$replicaDir$files] to deletion directory [$replicaDir$deletionDir] on $replicaType." "ERROR" $retval
|
Logger "Cannot move [$replicaDir$files] to deletion directory [$replicaDir$deletionDir] on $replicaType." "ERROR" $retval
|
||||||
|
@ -1498,6 +1470,7 @@ include #### DEBUG SUBSET ####
|
||||||
include #### TrapError SUBSET ####
|
include #### TrapError SUBSET ####
|
||||||
include #### RemoteLogger SUBSET ####
|
include #### RemoteLogger SUBSET ####
|
||||||
include #### CleanUp SUBSET ####
|
include #### CleanUp SUBSET ####
|
||||||
|
include #### FileMove SUBSET ####
|
||||||
|
|
||||||
function _deleteRemoteSub {
|
function _deleteRemoteSub {
|
||||||
## Empty earlier failed delete list
|
## Empty earlier failed delete list
|
||||||
|
@ -1537,32 +1510,12 @@ function _deleteRemoteSub {
|
||||||
if [ "$parentdir" != "." ]; then
|
if [ "$parentdir" != "." ]; then
|
||||||
RemoteLogger "Moving deleted file [$REPLICA_DIR$files] to [$REPLICA_DIR$DELETION_DIR/$parentdir] on $REPLICA_TYPE." "VERBOSE"
|
RemoteLogger "Moving deleted file [$REPLICA_DIR$files] to [$REPLICA_DIR$DELETION_DIR/$parentdir] on $REPLICA_TYPE." "VERBOSE"
|
||||||
mkdir -p "$REPLICA_DIR$DELETION_DIR/$parentdir"
|
mkdir -p "$REPLICA_DIR$DELETION_DIR/$parentdir"
|
||||||
# Apple BS mv does not keep ownership, simulating move
|
FileMove "$REPLICA_DIR$files" "$REPLICA_DIR$DELETION_DIR/$parentdir"
|
||||||
if [ -L "$REPLICA_DIR$files" ]; then
|
retval=$?
|
||||||
mv -f "$REPLICA_DIR$files" "$REPLICA_DIR$DELETION_DIR/$parentdir"
|
|
||||||
retval=$?
|
|
||||||
elif [ -w "$REPLICA_DIR$files" ]; then
|
|
||||||
[ -f "$REPLICA_DIR$DELETION_DIR/$parentdir/$files" ] && rm -f "$REPLICA_DIR$DELETION_DIR/$parentdir/$files"
|
|
||||||
cp -p "$REPLICA_DIR$files" "$REPLICA_DIR$DELETION_DIR/$parentdir/" && rm -f "$REPLICA_DIR$files"
|
|
||||||
retval=$?
|
|
||||||
else
|
|
||||||
RemoteLogger "File [$replicaDir$files] is not writable." "ERROR"
|
|
||||||
retval=-1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
RemoteLogger "Moving deleted file [$REPLICA_DIR$files] to [$REPLICA_DIR$DELETION_DIR] on $REPLICA_TYPE." "VERBOSE"
|
RemoteLogger "Moving deleted file [$REPLICA_DIR$files] to [$REPLICA_DIR$DELETION_DIR] on $REPLICA_TYPE." "VERBOSE"
|
||||||
# Apple BS mv does not keep ownership, simulating move
|
FileMove "$REPLICA_DIR$files" "$REPLICA_DIR$DELETION_DIR"
|
||||||
if [ -L "$REPLICA_DIR$files" ]; then
|
retval=$?
|
||||||
mv -f "$REPLICA_DIR$files" "$REPLICA_DIR$DELETION_DIR"
|
|
||||||
retval=$?
|
|
||||||
elif [ -w "$REPLICA_DIR$files" ]; then
|
|
||||||
[ -f "$REPLICA_DIR$DELETION_DIR/$files" ] && rm -f "$REPLICA_DIR$DELETION_DIR/$files"
|
|
||||||
cp -p "$REPLICA_DIR$files" "$REPLICA_DIR$DELETION_DIR/" && rm -f "$REPLICA_DIR$files"
|
|
||||||
retval=$?
|
|
||||||
else
|
|
||||||
RemoteLogger "File [$replicaDir$files] is not writable." "ERROR"
|
|
||||||
retval=-1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if [ $retval -ne 0 ]; then
|
if [ $retval -ne 0 ]; then
|
||||||
RemoteLogger "Cannot move [$REPLICA_DIR$files] to deletion directory [$REPLICA_DIR$DELETION_DIR] on $REPLICA_TYPE." "ERROR" $retval
|
RemoteLogger "Cannot move [$REPLICA_DIR$files] to deletion directory [$REPLICA_DIR$DELETION_DIR] on $REPLICA_TYPE." "ERROR" $retval
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#### OFUNCTIONS MINI SUBSET ####
|
#### OFUNCTIONS MINI SUBSET ####
|
||||||
#### OFUNCTIONS MICRO SUBSET ####
|
#### OFUNCTIONS MICRO SUBSET ####
|
||||||
_OFUNCTIONS_VERSION=2.3.0-RC3
|
_OFUNCTIONS_VERSION=2.3.0-RC3
|
||||||
_OFUNCTIONS_BUILD=2019120601
|
_OFUNCTIONS_BUILD=2019122501
|
||||||
#### _OFUNCTIONS_BOOTSTRAP SUBSET ####
|
#### _OFUNCTIONS_BOOTSTRAP SUBSET ####
|
||||||
_OFUNCTIONS_BOOTSTRAP=true
|
_OFUNCTIONS_BOOTSTRAP=true
|
||||||
#### _OFUNCTIONS_BOOTSTRAP SUBSET END ####
|
#### _OFUNCTIONS_BOOTSTRAP SUBSET END ####
|
||||||
|
@ -2423,4 +2423,25 @@ function WildcardFileExists () {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Some MacOS versions might loose file ownsership when using mv from /tmp dir (see #175)
|
||||||
|
# This is a "mv" function wrapper that helps out with macOS
|
||||||
|
#### FileMove SUBSET ####
|
||||||
|
function FileMove () {
|
||||||
|
local source="${1}"
|
||||||
|
local dest="${2}"
|
||||||
|
|
||||||
|
# If file is symlink or OS is not Mac, just make a standard mv
|
||||||
|
if [ -L "$source" ] || [ "$LOCAL_OS" != "MacOSX" ]; then
|
||||||
|
mv -f "$source" "$dest"
|
||||||
|
return $?
|
||||||
|
elif [ -w "$source" ]; then
|
||||||
|
[ -f "$dest" ] && rm -f "$dest"
|
||||||
|
cp -p "$source" "$dest" && rm -f "$source"
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#### FileMove SUBSET END ####
|
||||||
|
|
||||||
#### OFUNCTIONS FULL SUBSET END ####
|
#### OFUNCTIONS FULL SUBSET END ####
|
||||||
|
|
Loading…
Reference in New Issue