Celeb Glow
general | March 08, 2026

Copy a directory on Unix

How can I copy a directory structure, dir1, to dir2, (with all the subdirectories) on Unix using the terminal window?

2

3 Answers

cp -rf /source/path/ /destination/path/

-r = recursive, copies all the sub-directories

-f = force, if an existing destination file cannot be opened, remove it and try again

Note You should be careful when using the -f flag because it will forcefully overwrite anything you copy to. Thank @Nifle for this suggestion.

You may want to use the * wildcard to copy all of the files in the directory if you need to.

6

While the cp -R answers are right (BTW the case of the flag on BSD must be capital, both are supported on linux), there is an old incantation involving tar:

$ tar cf - . | (cd DIR; tar xf - )

Why the heck would you do that? Because tar has a fairly sophisticated understanding of links both hard and symbolic.

Do you want you copy to replace existing symbolic links with one that have the same text? Or with links to the same target (adjusting relative paths to compensate)? Or with bitwise copies of the target?

If two files in the original are hard linked should the new structure have two copies of the data or just one?

Decisions, decisions. Tar has sensible defaults, but lets you be very specific about it.

I like

cp -axv source dest

Rsync is another good tool for this

rsync -va source dest

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy