Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need to copy a /home/user folder from one hard disk to another one. It has 100,000 files and around 10G size.

I use

cp -r /origin /destination

sometimes I get some errors due to broken links, permissions and so on. So I fix the error, and need to start again the copy.

I wonder how could I tell the command "cp", once it tries to copy again, not to copy files again if they exist in the destination folder.

share|improve this question

migrated from Mar 11 '10 at 16:51

This question came from our site for professional and enthusiast programmers.

Don't us cp. Use rsync instead. – William Pursell Mar 11 '10 at 16:08
up vote 9 down vote accepted
cp -R -u -p /source /destination
share|improve this answer
To literally only copy files that don't exist and not update existing ones, yes n | cp -i /source/* /destination 2>/dev/null – sventechie Nov 21 '13 at 20:14
-u, --update copy only when the SOURCE file is newer than the destination file or when the destination file is missing -u, --update copy only when the SOURCE file is newer than the destination file or when the destination file is missing -p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,time‐ stamps), if possible additional attributes: context, links, xattr, all – Covich Feb 16 at 15:29

rsync -aq /src /dest

Apart from only copying newer files, it will even only copy the newer parts of files if the file has changed. It's intended for copying over network links where you want to minimise the amount of data - but it also works great locally.

share|improve this answer
I can't add `` formatting to your post because it's only two characters. How would you feel about editing this and adding `` characters around your command? – culix Apr 24 at 18:02

Look up the "-u" option for the cp command.

share|improve this answer
Disagree that using -u is a good idea. -u copies only when source is newer or destination is missing. Original poster's issue was caused by file copy breaking for whatever reason. OP would therefore have half-written file that wasn't updated when re-running the copy. That file might be important to someone! rsync solves this problem. – hazymat Dec 21 '13 at 21:47

You should be copying as root to maintain permissions/ownership

# cp -au

Also look at rsync

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .