Thursday, July 9, 2020

#1 2020-06-29 10:04:14 am

brown_jeus
Member
Registered: 2020-05-23
Posts: 9

Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

Hi,

After Updating to Jun 1, 2020,  Security Update 2020-003 (High Sierra),
it is taking a considerably longer time than usual for Move, Copy commands (approx. 5 mins for 15-20 files avg. 2 MB files). These scripts  were working fine before this update.
Script taking very long time to Move, Copy multiple files.
Single File Move, Copy works fine. Fresh/reinstall produces the same result

I appreciate a solution for this pattern move.

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

tell application "Finder"
    # long time delay on this block
    # File Sample : Sub A_Data 001.jpg,   Sub M2 A_Data Table 7.jpg,  Sub 5 Q_Data 36.jpg,  Sub Q_Data 63.jpg,  Sub P4 Q_Data 02.jpg
    set F_Answer to ("/Volumes/SSD_D2/Exam Data/Answer") as POSIX file as alias
    set F_Question to ("/Volumes/SSD_D2/Exam Data/Question") as POSIX file as alias
    set F_Source to ("/Volumes/SSD_D2/Exam Data/Source Data") as POSIX file as alias
   
    set Pattern_A to "A_Data"
    set Pattern_Q to "Q_Data"
   
    move (every file of folder F_Source whose name contains Pattern_A) to folder F_Answer
    move (every file of folder F_Source whose name contains Pattern_Q) to folder F_Question
   
end tell

Offline

 

#2 2020-06-29 10:41:14 am

Yvan Koenig
Member
Registered: 2006-09-14
Posts: 4544

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

It seems useful to check the state of your device or the state of the files themselves.

With the same system updated the same,
I ran your script using a mechanical HD as a substitute of your "SSD_D2"
Source Data contained 22 files for a total of 21 Mbytes.

"That took 0.769198060036 seconds."

Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) lundi 29 juin 2020 18:37:31

Offline

 

#3 2020-06-29 10:59:03 am

brown_jeus
Member
Registered: 2020-05-23
Posts: 9

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

Before posting I reverted to previous state (through time machine backup). Before the update everything same data / script worked very fast. No issues. Even fresh update produces the same result very slow.

No device state is changed. If I move or copy these files in Loop, each one by their name, it works fine but when a wild card or pattern is used, it dies.

Offline

 

#4 2020-06-29 11:28:39 am

Yvan Koenig
Member
Registered: 2006-09-14
Posts: 4544

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

I took your exact script, replaced the string "SSD_D2" by the name of my mechanical HD.
The list of fileNames was :
Sub A_Data 001 copie 2.jpg
Sub A_Data 001 copie.jpg
Sub A_Data 001.jpg
Sub M2 A_Data Table 7 copie 2.jpg
Sub M2 A_Data Table 7 copie.jpg
Sub M2 A_Data Table 7.jpg
Sub 5 Q_Data 36 copie 2.jpg
Sub 5 Q_Data 36 copie 3.jpg
Sub 5 Q_Data 36 copie 4.jpg
Sub 5 Q_Data 36 copie 5.jpg
Sub 5 Q_Data 36 copie.jpg
Sub 5 Q_Data 36.jpg
Sub Q_Data 63 copie 2.jpg
Sub Q_Data 63 copie.jpg
Sub Q_Data 63.jpg
Sub P4 Q_Data 02 copie 2.jpg
Sub P4 Q_Data 02 copie 3.jpg
Sub P4 Q_Data 02 copie 4.jpg
Sub P4 Q_Data 02 copie 5.jpg
Sub P4 Q_Data 02 copie.jpg
Sub P4 Q_Data 02.jpg

As I wrote, the timer reported :  "That took 0,769198060036 seconds."

I will write a modified version using ASObjC but it would use a loop, not a whose clause.

How are you using your machine ?
Some users let their mac on 24 hours a day, 7 days a week without switching it off from time to time.
Mine is switched off every evening and switched on every morning.
May it make the difference ?

You may look at Activity Manager to see if there is an extraneous process able to fool the machine but I don't see why it would strike only upon whose clause.

Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) lundi 29 juin 2020 19:25:36

Offline

 

#5 2020-06-29 12:02:32 pm

brown_jeus
Member
Registered: 2020-05-23
Posts: 9

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

i shut down the mac once every 5-8 hours but the total daily up-time is approx. 10-14 hours.
Activity is normal, idle above 70% nothing unusual as per my knowledge.

Backup using freefilesync works very fast. No change before and after update, copy/move with finder window is as usual.

Can we use shell script 'mv' with pattern? I am unable to make syntax for mv command with pattern i.e something like this:

do shell script ("mv  -f " & "*" & Pattern_A & "*.jpg" & space & F_Source & space & F_Answer)

Offline

 

#6 2020-06-29 01:14:04 pm

Yvan Koenig
Member
Registered: 2006-09-14
Posts: 4544

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

Here is an ASObjC script which moved the described set in 0.009299039841 second

Applescript:

-- Yvan KOENIG (VALLAURIS, France) lundi 29 juin 2020 23:51:12
----------------------------------------------------------------
use AppleScript version "2.5"
use framework "Foundation"
use scripting additions
----------------------------------------------------------------

property |⌘| : a reference to current application

my germaine()

on germaine()
   -- Define several datas used by the script
   set volName to "SSD_D2" # Edit to fit your needs
   set hfsRoot to volName & ":Exam Data:"
   set F_Answer to hfsRoot & "Answer:"
   set F_Question to hfsRoot & "Question:"
   set F_Source to hfsRoot & "Source Data:"
   set keyA to "A_Data"
   set keyQ to "Q_Data"
   set startDate to current application's NSDate's |date|()
   
   set fileManager to a reference to |⌘|'s NSFileManager's defaultManager()
   -- Define the URL objects pointing to the three used folders
   set URL_Answer to |⌘|'s NSURL's fileURLWithPath:(POSIX path of F_Answer)
   set URL_Question to |⌘|'s NSURL's fileURLWithPath:(POSIX path of F_Question)
   set URL_Source to |⌘|'s NSURL's fileURLWithPath:(POSIX path of F_Source)
   -- Define the options used to rule the enumeration process
   set skipsPackageDescendants to |⌘|'s NSDirectoryEnumerationSkipsPackageDescendants as integer --> 2
   set skipsHiddenFiles to |⌘|'s NSDirectoryEnumerationSkipsHiddenFiles as integer --> 4
   -- Here we warn the tool that we don't want to list available hidden files
   -- and that we don't want to scan the content of possible packages available in the source folder
   set theOptions to skipsPackageDescendants + skipsHiddenFiles
   -- Grab the list of URLs available in the source folder
   set theURLs to (fileManager's enumeratorAtURL:URL_Source includingPropertiesForKeys:{} options:theOptions errorHandler:(missing value))'s allObjects()
   if (count theURLs) = 0 then error "Le dossier “" & hfsPath & "” est vide."
   
   -- Filter to keep only jpeg files whose name contain "A_Data" or "Q_Data".
   -- This way, deciding what to do with each file would be an easy task.
   set theFormat to "((self.pathExtension =[c] 'jpg') OR (self.pathExtension =[c] 'jpeg')) AND ((self.lastPathComponent CONTAINS[c] '" & keyA & "') OR (self.lastPathComponent CONTAINS[c] '" & keyQ & "'))" -- Format enhanced
   set thePredicate to |⌘|'s NSPredicate's predicateWithFormat:theFormat
   set theURLs to (theURLs's filteredArrayUsingPredicate:thePredicate)
   
   if (count theURLs) = 0 then error "Le dossier “" & hfsPath & "” ne contient pas de fichier “jpg” or “jpeg”."
   -- loop among the jpeg URLs
   repeat with aURL in theURLs -- theURLs is an array
       -- grab the name of an URL
       set itsName to aURL's lastPathComponent() as string
       -- According to the name, define the destination URL
       if itsName contains keyA then
           set destURL to (URL_Answer's URLByAppendingPathComponent:itsName)
       else
           set destURL to (URL_Question's URLByAppendingPathComponent:itsName)
       end if
       -- Move the file into the wanted location
       set {theResult, theError} to (fileManager's moveItemAtURL:aURL toURL:destURL |error|:(reference))
   end repeat
   set timeDiff to startDate's timeIntervalSinceNow()
   display dialog "That took " & (-timeDiff as real) & " seconds." --> "That took 0.009299039841 seconds."
end germaine

#=====

Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) lundi 29 juin 2020 21:13:58

Last edited by Yvan Koenig (2020-06-30 04:14:29 am)

Offline

 

#7 2020-06-29 02:10:52 pm

brown_jeus
Member
Registered: 2020-05-23
Posts: 9

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

It's a lightning fast solution. Thank you for your solution. It will be a bit tricky for me to learn this but I will try my best. Thank you so much once again!

Offline

 

#8 2020-06-30 04:15:45 am

Yvan Koenig
Member
Registered: 2006-09-14
Posts: 4544

Re: Taking too much Time for Move, Copy commands. 2020-003 (High Sierra)

In message #6, I added several comments which may help you to understand what is done.

Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) mardi 30 juin 2020 12:15:40

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)