file.copy: be smart with file changes

@kiorky Forgive me if I'm being dense--don't you want to say that if the hashes are the same, then the file did not change?  In other words, isn't the sense of the test reversed here?  Or is there something I'm missing?