This is so wrong.
I want to perform a large copy operation; moving 250 GB from my laptop hard drive to an external drive.
OSX lion claims this will take about five hours.
After a couple of hours of chugging, it reports that one particular file could not be copied (for whatever reason; I cannot remember and I don’t have the patience to repeat the experiment at the moment).
And on that note it bails.
I am frankly left aghast.
That this problem persists in this day and age is to me scarcely believable. I remember hitting up against the same scenario 20 years back with Windows 3.1.
How hard would it be for the folks at Apple (or Microsoft for that matter) to implement file copying in such a way that it skips over failures, writing a list of failed operations on-the-fly to stderr? And how much more useful would that implementation be? (both these questions are rhetorical by the way; simply an expression of my utter bewilderment; please don’t answer them unless by means of comments or supplements to an answer to the actual question, which follows:).
More to the point (and this is my actual question), how can I implement this myself in OS X?
PS I’m open to all solutions here: programmatic / scripting / third-party software
I hear and understand your rant, but this is bordering on being a SuperUser-type question and not a programming question (saved only by the fact you said you would like to implement this yourself).
From the description, it sounds like the Finder bailed when it couldn’t copy one particular file (my guess is that it was looking for admin and/or root permission for some priviledged folder).
For massive copies like this, you can use the Terminal command line:
e.g.
or
with options like “-R” (which continues copying even if errors are detected — unless you’re using “legacy” mode) or “-n” (don’t copy if the file already exists at the destination). You can see all the possible options by typing in “
man cp” at the Terminal command line.If you really wanted to do this programatically, there are options in
NSWorkspace(theperformFileoperation:source:destination:files:tag:method (documentation linked for you, look at theNSWorkspaceCopyOperationconstant). You can also do more low level stuff via “NSFileManager” and it’scopyItemAtPath:toPath:error:method, but that’s really getting to brute-force approaches there.