copyFile is:exact

Copy a file with its permissions. If the destination file already exists, it is replaced atomically. Neither path may refer to an existing directory. No exceptions are thrown if the permissions could not be copied.
Copy a file with its permissions. If the destination file already exists, it is replaced atomically. Neither path may refer to an existing directory. No exceptions are thrown if the permissions could not be copied.
Lifted copyFile.
copyFile old new copies the existing file from old to new. If the new file already exists, it is atomically replaced by the old file. Neither path may refer to an existing directory. The permissions of old are copied to new, if possible.
Copy the content and permissions of a file to a new entry in the filesystem. If a file already exists at the new location, it will be replaced. Copying a file is not atomic. This computation throws IOError on failure. See “Classifying I/O errors” in the System.IO.Error documentation for information on why the failure occured. Since: 0.1.1
Lifted version of copyFile with well-typed filepaths.
Copy a file