move files copy

This commit is contained in:
Vincent Riquer 2013-04-08 01:54:16 +02:00
parent e9c47391cd
commit 0f52325ac0
3 changed files with 76 additions and 73 deletions

74
atom
View File

@ -518,7 +518,7 @@ do
getDestFile
if (( copied ))
then
copyFile
copyFiles_matching
else
encodeFile::${destinationformat[$destination]}
fi
@ -790,77 +790,7 @@ do
unset count
done
echo '
SELECT
source_files.filename,
source_files.last_change,
destinations.id,
destination_files.id
FROM source_files
INNER JOIN destination_files
ON source_files.id
= destination_files.source_file_id
INNER JOIN destinations
ON destination_files.destination_id=destinations.id
INNER JOIN mime_type_actions
ON mime_type_actions.id = source_files.mime_type
WHERE CAST(destination_files.last_change AS TEXT)
<> CAST(source_files.last_change AS TEXT)
AND mime_type_actions.destination_id = destinations.id
AND mime_type_actions.action = 2;
SELECT "AtOM:NoMoreFiles";' >&3
read -u4 line
while ! [[ $line = AtOM:NoMoreFiles ]]
do
copyfiles+=("$line")
read -u4 line
done
for copyfile in "${copyfiles[@]}"
do
sourcefilename=${copyfile%%|*}
rest="${copyfile#*|}|"
lastchange=${rest%%|*}
rest=${rest#*|}
destinationid=${rest%%|*}
rest=${rest#*|}
destfileid=${rest%%|*}
rest=${rest#*|}
echo 'SELECT IFNULL( (
SELECT destination_files.filename
FROM destination_files
INNER JOIN source_files
ON destination_files.source_file_id=source_files.id
INNER JOIN mime_type_actions
ON
mime_type_actions.id=source_files.mime_type
INNER JOIN destinations
ON destinations.id=destination_files.destination_id
WHERE destinations.id = '$destinationid'
AND source_files.filename LIKE "'"${sourcefilename%/*}"'/%"
AND mime_type_actions.action = 1
LIMIT 1
),"AtOM:NotFound");
'>&3
read -u4 filename
if [[ $filename != AtOM:NotFound ]]
then
destdir=${filename%/*}
if cp -al "$sourcepath/$sourcefilename" "$destdir" 2>/dev/null\
|| cp -a "$sourcepath/$sourcefilename" "$destdir"
then
Update destination_files \
filename "$destdir/${sourcefilename##*/}"\
rename_pattern "${destinationrenamepath[$destination]}/${destinationrename[$destination]}:${destinationfat32compat["$destination"]}"\
<<-EOWhere
id = $destfileid
last_change = $lastchange
EOWhere
progressSpin
fi
fi
done
copyFiles_action
echo '
SELECT id,

73
lib/copy/copyFiles_action Normal file
View File

@ -0,0 +1,73 @@
copyFiles_action() {
echo '
SELECT
source_files.filename,
source_files.last_change,
destinations.id,
destination_files.id
FROM source_files
INNER JOIN destination_files
ON source_files.id
= destination_files.source_file_id
INNER JOIN destinations
ON destination_files.destination_id=destinations.id
INNER JOIN mime_type_actions
ON mime_type_actions.id = source_files.mime_type
WHERE CAST(destination_files.last_change AS TEXT)
<> CAST(source_files.last_change AS TEXT)
AND mime_type_actions.destination_id = destinations.id
AND mime_type_actions.action = 2;
SELECT "AtOM:NoMoreFiles";' >&3
read -u4 line
while ! [[ $line = AtOM:NoMoreFiles ]]
do
copyfiles+=("$line")
read -u4 line
done
for copyfile in "${copyfiles[@]}"
do
sourcefilename=${copyfile%%|*}
rest="${copyfile#*|}|"
lastchange=${rest%%|*}
rest=${rest#*|}
destinationid=${rest%%|*}
rest=${rest#*|}
destfileid=${rest%%|*}
rest=${rest#*|}
echo 'SELECT IFNULL( (
SELECT destination_files.filename
FROM destination_files
INNER JOIN source_files
ON destination_files.source_file_id=source_files.id
INNER JOIN mime_type_actions
ON
mime_type_actions.id=source_files.mime_type
INNER JOIN destinations
ON destinations.id=destination_files.destination_id
WHERE destinations.id = '$destinationid'
AND source_files.filename LIKE "'"${sourcefilename%/*}"'/%"
AND mime_type_actions.action = 1
LIMIT 1
),"AtOM:NotFound");
'>&3
read -u4 filename
if [[ $filename != AtOM:NotFound ]]
then
destdir=${filename%/*}
if cp -al "$sourcepath/$sourcefilename" "$destdir" 2>/dev/null\
|| cp -a "$sourcepath/$sourcefilename" "$destdir"
then
Update destination_files \
filename "$destdir/${sourcefilename##*/}"\
rename_pattern "${destinationrenamepath[$destination]}/${destinationrename[$destination]}:${destinationfat32compat["$destination"]}"\
<<-EOWhere
id = $destfileid
last_change = $lastchange
EOWhere
progressSpin
fi
fi
done
}

View File

@ -1,4 +1,4 @@
copyFile() {
copyFiles_matching() {
extension="${filename##*.}"
cp -al \
"$sourcepath/$filename" \