How To Copy a Folder with cp Command

The cp command is a Linux command for copying files and directories. The syntax is as follows:

cp source destination cp dir1 dir2 cp -option  source destination cp -option1 -option2  source destination

Linux cp command examples

In this example copy /home/user/letters/ folder and all its files to /usb/backup/ directory:
cp -avr /home/user/letters /usb/backup
Where,

  • -a : Preserve the specified attributes  such as directory an file mode, ownership, timestamps, if possible  additional attributes: context, links, xattr, all.
  • -v : Verbose output.
  • -r : Copy directories recursively.

More examples of cp command to copy folders on Linux

Copy a folder called /tmp/conf/ to /tmp/backup/:
$ cp -avr /tmp/conf/ /tmp/backup/

All the files and subdirs/folders in a directory can be copied to  another folder by using the star wildcard. For example, the following  would copy all of the files in a folder named /home/user/Documents/  into another existing folder called /data/:
cp -v /home/user/Documents/* /data/

Use Linux rsync Command to copy a folder

You can also use rsync command which is a fast and extraordinarily  versatile file copying tool. It can make copies across the network. The  syntax is as follows for the rsync command

rsync -av /path/to/source/ /path/to/destination/rsync -av /path/to/source/ /path/to/destination/source/

To backup my home directory, which consists of large files and mail folders to /media/backup, enter:
$ rsync -avz /home/user /media/backup
I can copy a folder to remote machine called server1.cyberciti.biz as follows:
$ rsync -avz /home/user/ server1.cyberciti.biz:/home/backups/user/
Where,

  • -a : Archive mode i.e. copy a folder with all its permission and other information including recursive copy.
  • -v : Verbose mode.
  • -z : With this option, rsync compresses  the file data as it is sent to the destination machine, which reduces  the amount of data being transmitted something that is useful over a  slow connection.

You can show progress during transfer using –progress or -P option:
$ rsync -av --progress /path/to/source/ /path/to/dest

Conclusion

You just learned how to copy a folder on a Linux like operating system using the cp command and rsync command. In conclusion, use rsync for a network folder transfer and cp for a local disk transfer.