WebMasterCampus
WEB DEVELOPER Resources

Linux cp Command

Learn Linux cp Command with example


Linux cp Command

In Linux we use “cp” command to copy files and directories from one location to the other.

cp command Syntax

$  cp sourcefile /destination/directory

# Copy from Source to Destination

cp command copy file Source to Destination

$  cp /home/Downloads/linux.iso /home/Desktop 

# In this example cp command copy linux.iso file from Downloads to Desktop folder.

cp command copying multiple files to a target directory

$  cp sourcefile-01 sourcefile-02 sourcefile-03  /destination/directory

# In this example cp command copy multiple source files from source to desination folder.

cp -rt command copy all the contents of a directory

$  cp -rt /home/Downloads /home/Desktop/my-downloads

# In this example cp command copy all content from Downloads to Desktop/my-downloads folder.  This is useful because it’s a very efficient way to copy many files at once.

cp -a command copying a directory recursively while keeping an archive

$  cp -a sourceDirectory destinationDirectory

# In this example cp command copying a directory recursively while keeping an archive. It will also keep the permissions, time stamp, symbolic links, and all such properties intact while copying files.

cp -i command to prompt you before overwriting the target file

$  cp -i sourcefile /destination/directory

$  cp -i /home/Downloads/linux.iso /home/Desktop/

# In this example cp command copy file but if file already exist then it will prompt you before overwriting the target file.

cp -v command show details to copy files and folder

$  cp -v sourcefile /destination/directory

$  cp -v /home/Downloads/linux.iso /home/Desktop/

# In this example cp -v command copy file and show the details for confirmation.

cp command in Linux (Documentation)

NAME
       cp - copy files and directories

SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

DESCRIPTION
       Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

       Mandatory  arguments  to  long options are mandatory for
       short options too.

       -a, --archive
              same as -dR --preserve=all

       --attributes-only
              don't copy the file data, just the attributes

       --backup[=CONTROL]
              make a backup of each existing destination file

       -b     like --backup but does not accept an argument

       --copy-contents
              copy contents of special files when recursive
       
       -d     same as --no-dereference --preserve=links

       -f, --force
              if an existing destination file cannot be opened,
              remove  it  and try again (this option is ignored
              when the -n option is also used)

       -i, --interactive
              prompt before overwrite (overrides a previous  -n
              option)

       -H     follow command-line symbolic links in SOURCE

       -l, --link
              hard link files instead of copying

       -L, --dereference
              always follow symbolic links in SOURCE

       -n, --no-clobber
              do  not  overwrite  an existing file (overrides a
              previous -i option)

       -P, --no-dereference
              never follow symbolic links in SOURCE

       -p     same as --preserve=mode,ownership,timestamps

     --preserve[=ATTR_LIST]
              preserve  the  specified   attributes   (default:
              mode,ownership,timestamps),   if  possible  addi‐
              tional attributes: context, links, xattr, all

       --no-preserve=ATTR_LIST
              don't preserve the specified attributes

       --parents
              use full source file name under DIRECTORY

       -R, -r, --recursive
              copy directories recursively

       --reflink[=WHEN]
              control clone/CoW copies. See below

       --remove-destination
              remove each existing destination file before  attempting to open it (contrast with --force)

       --sparse=WHEN
              control creation of sparse files. See below

       --strip-trailing-slashes
              remove  any trailing slashes from each SOURCE argument
       
       -s, --symbolic-link
              make symbolic links instead of copying

       -S, --suffix=SUFFIX
              override the usual backup suffix

       -t, --target-directory=DIRECTORY
              copy all SOURCE arguments into DIRECTORY

       -T, --no-target-directory
              treat DEST as a normal file

       -u, --update
              copy only when the SOURCE file is newer than  the
              destination  file or when the destination file is
              missing

       -v, --verbose
              explain what is being done

       -x, --one-file-system
              stay on this file system

       -Z     set SELinux security context of destination  file
              to default type
       --context[=CTX]
              like  -Z,  or  if  CTX  is specified then set the
              SELinux or SMACK security context to CTX

       --help display this help and exit

       --version
              output version information and exit

       By default, sparse SOURCE files are detected by a  crude
       heuristic and the corresponding DEST file is made sparse
       as   well.    That   is   the   behavior   selected   by
       --sparse=auto.   Specify  --sparse=always  to  create  a
       sparse DEST file whenever the  SOURCE  file  contains  a
       long  enough sequence of zero bytes.  Use --sparse=never
       to inhibit creation of sparse files.

       When --reflink[=always] is specified, perform  a  light‐
       weight  copy, where the data blocks are copied only when
       modified.  If this is not possible the copy fails, or if
       --reflink=auto  is  specified,  fall  back to a standard
       copy.  Use --reflink=never to ensure a standard copy  is
       performed.
       
       The  backup  suffix  is '~', unless set with --suffix or
       SIMPLE_BACKUP_SUFFIX.  The version control method may be
       selected  via  the  --backup  option or through the VER‐
       SION_CONTROL environment variable.  Here are the values:

       none, off
              never make backups (even if --backup is given)

       numbered, t
              make numbered backups

       existing, nil
              numbered if numbered backups exist, simple other‐
              wise

       simple, never
              always make simple backups

       As  a special case, cp makes a backup of SOURCE when the
       force and backup options are given and SOURCE  and  DEST
       are the same name for an existing, regular file.
Created with love and passion.