Copy probably wants separate options to indicate whether the input or the output should be cached.

For instance 
copying a file remotely in roxie - probably don't want to cache input or output
copying a dll locally in thor - probably want to cache the target, not the source
performing a tree copy - cache the source but not the target??
replicating a file part - may want to cache source (depends on the kind of file/whether likely to be used soon?), but not the target

It may be similarly useful to pass options rather than a flag to make it easy to extend.  (You may I guess need two option flags if you're doing that.)