linux命令:cp命令详解


命令简介:

    cp命令用来复制文件或目录。指令英文原义:copy

    指令所在路径:/bin/cp

命令语法:

        Usage: cp [OPTION]... [-T] SOURCE DEST

        or: cp [OPTION]... SOURCE... DIRECTORY

        or: cp [OPTION]... -t DIRECTORY SOURCE...

命令参数:

此命令参数是Red Hat Enterprise Linux Server release 5.7下cp命令参数,不同版本Linux的cp命令参数有可能不同。

参数 长参数 描叙
-a 等同于-dR
-b 若删除或者覆盖目标文件,将对目标文件进行备份,备份文件以备份的字符串结尾
-d 复制符号链接
-f 强制复制
-h 强制cp命令复制符号链接。缺省值是跟随符号链接,也就是将文件复制到符号链接指向处。
-i 交互式模式。覆盖目标文件之前先要进行询问
-l 建立硬链接,而非复制
-p 源目录或者文件的属性保留
-P 源目录或者文件的路劲保留
-r/-R 处理指定目录以及子目录
-v --verbose 显示命令执行的详细信息
--help 显示命令在线帮助
--version 显示命令版本信息

使用示例:

1: 查看rmdir命令的帮助信息

[root@DB-Server ~]# cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...

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
      --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=link
  -f, --force                  if an existing destination file cannot be
                                 opened, remove it and try again
  -i, --interactive            prompt before overwrite
  -H                           follow command-line symbolic links
  -l, --link                   link files instead of copying
  -L, --dereference            always follow symbolic links
  -P, --no-dereference         never follow symbolic links
  -p                           same as --preserve=mode,ownership,timestamps
      --preserve[=ATTR_LIST]   preserve the specified attributes (default:
                                 mode,ownership,timestamps), if possible
                                 additional attributes: context, links,
                                 xattr, all
  -c                           same as --preserve=context
      --no-preserve=ATTR_LIST  don't preserve the specified attributes
      --parents                use full source file name under DIRECTORY
  -R, -r, --recursive          copy directories recursively
      --remove-destination     remove each existing destination file before
                                 attempting to open it (contrast with --force)
      --sparse=WHEN            control creation of sparse files
      --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, --context=CONTEXT        set security context of copy to CONTEXT
      --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.
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 VERSION_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 otherwise
  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.

Report bugs to bug-coreutils@gnu.org.

 

[root@DB-Server ~]# man cp

 

2: 拷贝文件file1并更名为file2

[root@DB-Server kerry]# ls
file1
[root@DB-Server kerry]# cp file1 file2
[root@DB-Server kerry]# ls
file1  file2
[root@DB-Server kerry]#

 

3:拷贝kerry目录下文件到tmp目录下

[root@DB-Server ~]# cp /home/kerry/*  /tmp
[root@DB-Server ~]# cd /tmp

 

4:将目录下的所有目录包括子目录陆续复制到另外一个目录

[root@DB-Server ~]#cp -r /home/tomcat/ /tmp/bak

 

 

5: 复制时保留文件属性(保存与源文件相关联的修改日期、时间和访问控制列表等)

[root@DB-Server kerry]# ls -lrt
total 8
-rw-r--r-- 1 root root 3886 Jan 19 23:04 install.log.syslog
[root@DB-Server kerry]# cp -p install.log.syslog  install.log.syslog.bak1
[root@DB-Server kerry]# cp install.log.syslog install.log.syslog.bak2
[root@DB-Server kerry]# ls -lrt
total 24
-rw-r--r-- 1 root root 3886 Jan 19 23:04 install.log.syslog.bak1
-rw-r--r-- 1 root root 3886 Jan 19 23:04 install.log.syslog
-rw-r--r-- 1 root root 3886 Jan 19 23:10 install.log.syslog.bak2

 

6: 以交换形式拷贝文件

[root@DB-Server kerry]# cp -i /var/log/*  ./
cp: overwrite `./acpid'? n
cp: overwrite `./anaconda.log'? n
cp: overwrite `./anaconda.syslog'? y
cp: overwrite `./anaconda.xlog'? n
cp: omitting directory `/var/log/audit'
cp: overwrite `./boot.log'? n
cp: overwrite `./boot.log.1'? n
cp: overwrite `./boot.log.2'? n

 

Archives