I am trying to copy the contents of a folder to another folder in a different directory using terminal.
Would somebody be able to provide me an example of the command line syntax required to achieve this?
08 Answers
You can copy the content of a folder /source to another existing folder /dest with the command
cp -a /source/. /dest/The -a option is an improved recursive option, that preserve all file attributes, and also preserve symlinks.
The . at end of the source path is a specific cp syntax that allow to copy all files and folders, included hidden ones.
An alternate is rsync:
rsync -a source/ destinationThe advantages of rsync are:
- After the initial sync, it will then copy only the files that have changed.
- You can use it over a network, convenient for files in $HOME, especially config files.
Lets say you have a folder called folder1 in your ~, inside folder1 is 1 file called file1 and 2 folders called sub1 and sub2 each with other files and folders inside them.
To copy all the contents of ~/folder1 to ~/new_folder1 you would use
cp -r ~/folder1/. ~/new_folder1new_folder1 would then contain all the files and folders from folder1.
cp is the command to copy using a terminal, -r makes it recursively (so, current directory + further directories inside current) ~/folder1 is the origin folder, ~/new_folder1 is the destination folder for the files/folders inside the origin.
Simple example.
Copy the directory dir_1 and its contents (files) into directory dir_2:
cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_Copy only the contents (files) of dir_1 into directory dir_2:
cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files__files_ is a placeholder for the actual files located in the directory.
Check this for more information on copying folder. Hope this helps.
cp Commandcp 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 destinationIn this example copy /home/vivek/letters folder and all its files to /usb/backup directory:
cp -avr /home/vivek/letters /usb/backupWhere,
-a : Preserve the specified attributes such as directory an file mode, ownership, timestamps, if possible additional attributes: context, links, xattr, all.
-v : Explain what is being done.
-r : Copy directories recursively.
Example
Copy a folder called /tmp/conf to /tmp/backup:
$ cp -avr /tmp/conf/ /tmp/backup 3 I like this command
rsync -av --progress ~/code/project-source/. ~/code/project-destination --exclude .git --exclude node_modulesSome of the commonly used options in rsync command are listed below:
- -v, –verbose: Verbose output
- -q, –quiet: suppress message output
- -a, –archive: archive files and directory while synchronizing ( -an equal to following options -rlptgoD)
- -r, –recursive: sync files and directories recursively
- -b, –backup: take the backup during synchronization
- -u, –update: don’t copy the files from source to destination if destination files are newer
- -l, –links: copy symlinks as symlinks during the sync
- -n, –dry-run: perform a trial run without synchronization
- -e, –rsh=COMMAND: mention the remote shell to use in rsync
- -z, –compress: compress file data during the transfer
- -h, –human-readable: display the output numbers in a human-readable format
- –progress: show the sync progress during transfer
If there are two folders: (with write permission)
drwxr-xr-x 4 vimal vimal 4096 Sep 9 12:17 .
drwxr-xr-x 3 root root 4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal 4096 Sep 9 12:15 DATA
drwxrwxrwx 7 vimal vimal 4096 Sep 9 12:15 PORTALIf you are inside the folder called PORTAL where you want to copy all content of another folder say DATA at the same level then you will do
vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .
You have to notice 2 dots. Last dot says copy here in present folder
and
one following /DATA/. says that all the CONTENTS inside DATA folder to be copied, and not the DATA folder itself.
If you remove this trailing "." from /DATA/
then whole DATA folder will be copied inside PORTAL(from where you are coping).
This code with Flag "-R" copies perfectly all the contents of "folder1" to existing "folder2":
cp -R folder1/. folder2Flag "-R" copies symbolic links as well but Flag "-r" skips symbolic links so Flag "-R" is better than Flag "-r".
- The latest GNU Grep 3.7:
-R, --dereference-recursive
For each directory operand, read and process all files in that directory,
recursively, following all symbolic links.-r, --recursive
For each directory operand, read and process all files in that directory,
recursively. Follow symbolic links on the command line, but skip symlinks
that are encountered recursively. Note that if no file operand is given,
grep searches the working directory. This is the same as the
‘--directories=recurse’ option. 0