总览

cp [选项] 文件路径
cp [选项]
文件...目录

POSIX 选项: [-fipRr]

GNU 参数(最短形式): [-abdfilprsuvxPR] [-S SUFFIX]
[-V {numbered,existing,simple}] [--sparse=WHEN]
[--help] [--version] [--]

描述

cp 复制文件(或者目录等). 可以使用这个命令复制一个文件到一个指定的目的地, 或者复制任意多个文件到一个目的目录目录.

如果最后一个命令参数为一个已经存在的目录名, cp 会将每一个源 文件 复制到那个目录下(维持原文件名).
如果所给的参数只有两个文件名.它把前一个文件复制到后一个文件上. 如果最后一个参数不是文件名,目录名,和给出多于两个非选项参数,是错误的.

(因而:如果/b已经存在,那么'cp -r /a /b'会复制/a到/b而成为/b/a.
而复制/a/x到/b而成为/b/a/x.但如果/b事先不存在,它会把/a复制为/b
而复制/a/x到/b而成为/b/a/x.但如果/b事先不存在,它会把/a复制为/b 而把/a/x复制为/b/x.)

所创建的文件和/或目录的模式和原始的文件的模式是一样的,然后用用户umask值修改(除非使用了-p选项),(但在递归方式复制目录时,新建目录会临时地获得他们的最终模式Ored,连同
S_IRWXU(0700),以便进程能够读、写、查找这些新建的目录.

复制文件到其自身时它什么事情都不做(除了可能会生成一条错误信息以外). 当复制到一个现存的不同文件时,系统调用函数
`open(path,O_WRONLY|O_TRUNC)'打开目的文件.当复制到一个新文件时,系统调用函数`open(path,O_WRONLY|O_CREAT,mode)'创建该文件.如果这操作失败,该文件存在,和给出了-f选项,
cp 试图先删除该现存文件,如果删除成功则把它当做一个新文件处理.

POSIX 选项

POSIX 识别四个半选项:

-f
如果需要,删除已存在的目的文件.(如前所述.)
-i
提示是否覆盖现有普通目标文件。 (在标准出错上显示问题,从标准输入读取答案.只有明确确认了才复制文件.)
-p
保留原文件的所有者、组、权限(包括 setuid 和 setgid 位),上次修改时间和上次访问时间。如果制作所有者或组信息的副本时出错,则
setuid 和 setgid 位被清空。(要不然源文件和副本的上次访问时间显然是不同的,因为复制操作就是对源文件的访问.)
-R
递归复制目录,如果对象不是普通文件或目录那么做相应正确处理,(因此,一个 FIFO或者特殊文件在复制后仍然是一个 FIFO型或者相应特殊文件。)
-r
递归复制目录,如果对象不是普通文件或目录那么做一些未声明处理.(因此,我们允许并鼓励用 -r 选项做 -R 的同义词.不过那些愚蠢的特征,象那些在
GNU 版本的 cp 出现的(见下文)也可以用.)

GNU 细节

通常,读写文件的方式都是一样的.例外情况见下面的 --sparse 选项.

缺省情况下,`cp'并不复制目录(参见下文 -r 选项说明).

cp 通常不会复制文件到自身,但有以下例外:如果参数 --force --backup源文件
一起给出,并且与 目的文件 并且指向一个普通文件, cp
将生成一个备份文件,不是普通的就是编了号的,就象通常的方法那样声明.在你仅仅想对已有的文件进行备份, 而又不想修改它的时候很有用.

GNU 选项

-a, --archive
复制时,尽可能保持文件的结构和属性.(但不保持目录结构)等同于 -dpR
-d, --no-dereference
复制符号链接作为符号链接而不是复制它指向的文件, 并且保护在副本中原文件之间的硬链接.
-f, --force
删除存在的目标文件。(较:原译文缺下面的部分)
-i, --interactive
无论是否覆盖现存文件都作提示。
-l, --link
制作硬链接代替非目录拷贝。
-p, --preserve
保持原始文件的所有者,组,许可,和时间表属性。
-P, --parents
一个斜杠和指定的源文件名构成目的文件。最后送给 cp 的参数必须是一个已存在的目录的名字。例如, 下面这个命令:

  1. cp --parents a/b/c existing_dir
  2.  

复制文件 `a/b/c' 到 texisting_dir(现有的目录)/a/b/c',建立任何缺少的中间目录。

-r
递归地复制目录,复制任何非目录和非符号链接(那是, FIFOs和特别文件)好象他们是常规的文件一样看待.这意味着尝试读出每个源文件的数据,和把它写到目的地上.因而,用这个选项,cp'可能彻底地终止,当不确定地读一个FIFO或者/dev/tty时,(这是一个缺陷.它意味着如果你不知道在这棵树(目录)中有什么要复制的时候, 你不得不避开-r并使用-R打开一个未知的设备文件, 比如说一台扫描仪,会有未知的效果发生在硬件上)
-R, --recursive
递归地复制目录,保留非目录(参见上面的 -r ).
--sparse=WHEN
一个稀疏file'包容`holes'-占用0字节,它不占用任何物理块;系统把他们作为0调用read'来读.由于许多二进制文件包容许多连续的0字节,这样能保存相当的磁盘空间并且加快速度.省缺情况下, cp 通过自然的启发方式发现在源文件里holes并且使相关的输出文件稀疏.

WHEN 值能够是下面中的一个:

auto
默认的行为:如果输入文件是稀疏的,输出文件也是稀疏的.
always
总是使输出文件稀疏.当输入文件所在的文件系统不支持稀疏文件的时候,这是有用的,但是输出文件所在的文件系统需要(支持稀疏文件).
never
从不使输出文件稀疏.如果你找到一个需要此选项的应用程序,让我们知道.
-s, --symbolic-link
生成符号链接代替非目录拷贝.所有的源文件名必须是绝对的(由`/'开始),除非目的文件是在当前目录.这选项仅仅在系统不支持符号链接时引起一个错误消息.
-u, --update
如果存在的目的地有相同的,或者更新的修改时间,不复制非目录(文件).
-v, --verbose
在复制前印出文件名.
-x, --one-file-system
跳过来自不同文件系统的子目录.

GNU 备份选项

GNU 版本程序象 cp, mv, ln, installpatch 会在覆盖,改变,或者破坏(文件)前生成一个备份文件. 那个文件由-b选项给出.他们的由-V选项命名.一般情况下备份文件名是源文件名加上后缀,这个后缀由-S 指定.

-b, --backup
生成关于覆盖和删除的备份.
-S SUFFIX, --suffix=SUFFIX
加入 SUFFIX(后缀) 到每个备份文件. 如果不指定,使用 SIMPLE_BACKUP_SUFFIX 环境变量的值.如果连 SIMPLE_BACKUP_SUFFIX 都没有设置,省缺是`~'.
-V METHOD, --version-control=METHOD
指定如何命名备份文件. METHOD 能够是 `numbered' (or `t'), `existing' (or `nil'), or `never' (or `simple'). 如果不指定,使用 VERSION_CONTROL 环境变量的值.如果 VERSION_CONTROL 也没有设置,省缺备份文件类型是 `existing'.

这选项相应Emacs 变量 `version-control'. 有效的 METHODs 是(接受唯一的缩写):

t, numbered
总是产生编号的备份。
nil, existing
Make numbered backups of files that already have them, simple backups of the others.
never, simple
总作简单的备份.

GNU 标准选项

--help
印出用法并退出.
--version
印出版本信息并退出.
--
结束选项列表.

环境(参数)

变量LANG,LC_ALL,LC_COLLATE,LC_CTYPE和LC_MESSAGES有通常意义. 对于GNU版本,变量SIMPLE_BACKUP_SUFFIX和VERSION_CONTROL控制备份文件命名.与上面的描述一样.

cp - 复制文件和目录的更多相关文章

  1. cp 复制文件或目录

    1. 命令功能 cp --copy files and directories.复制文件或目录. 2. 语法格式 cp  [option]  source des cp  [option]  sour ...

  2. cp:复制文件和目录

    cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能. cp 命令的基本格式如下:cp [选项] 源文件 目标目录/文件 选项: -a:相 ...

  3. 复制文件或目录命令 - cp

    1) 命令名称:cp 2) 英文原意:copy 3) 命令所在路径:/bin/cp 4) 执行权限:所有用户 5) 功能描述:复制文件或目录 语法: cp -rp [原文件或目录][目标目录] -r ...

  4. cp命令:复制文件和目录

    cp命令:复制文件和目录 [功能说明] cp命令可以理解英文单词copy的缩写,其功能为复制文件和目录. [语法格式] 1 cp [option] [source] [dest] 2 cp [选项] ...

  5. Linux命令(20)linux服务器之间复制文件和目录

    linux的scp命令: scp就是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器. 有时我们需要获得远程服务器上 ...

  6. linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录

    转自:http://blog.csdn.net/snlying/article/details/6184102 Linux系统中scp命令的用法. scp就是secure copy的简写,用于在lin ...

  7. Linux 命令 - cp: 拷贝文件和目录

    命令格式 cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY ...

  8. 在linux服务器之间复制文件和目录命令scp

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  9. linux cp 拷贝文件或目录

    cp 拷贝文件或目录 默认不能拷贝目录 常用来备份: [root@MongoDB ~]# cp a.txt /tmp/ [root@MongoDB ~]# cp /root/a.txt /tmp/ c ...

随机推荐

  1. linux进程编程入门

    1.进程的创建与操作 任务描述: 在父进程中创建一个全局变量,一个局部变量,并赋予初始值,用fork函数创建子进程.在子进程中对父进程的变量进行自加操作,并且输出变量值,然后父进程睡眠一段时间 各进程 ...

  2. Expression Blend实例中文教程系列

    Expression Blend实例中文教程系列 本系列文章均转载:银光中国 时间:2010-04-09 09:20责任编辑:银光中国网 点击:次 Expression Blend实例中文教程系列由C ...

  3. hibernate 的缓存机制

    这是面试中经常问到的一个问题,楼主可以按照我的思路回答,准你回答得很完美,首先说下Hibernate缓存的作用(即为什么要用缓存机制),然后再具体说说Hibernate中缓存的分类情况,最后可以举个具 ...

  4. 【Selenium】软件测试基础(软件测试分类和工具组)firebug、firepath的安装

    白盒测试:需要了解内部结构和代码 黑盒测试:不关心内部结构和代码 灰盒测试:介于白盒黑盒之间 静态测试:测试时不执行被测试软件 动态测试:测试时执行被测试软件 单元测试:测试软件的单元模块 集成测试: ...

  5. debian webmin 安装

    /******************************************************************** * debian webmin 安装 * 说明: * 在服务 ...

  6. 思维导图js

    http://baike.baidu.com/view/1469162.htm?fromenter=Mind+Maps

  7. 我的JSP中文编码解决方案

    虽然以前就知道编码问题,但是一直没有遇到问题,以前用asp.net和php的时候,感觉很自然地写程序,没怎么特别处理编码问题,这回改用java写,真心被恶心到了. 进行了一番查阅学习后,终于搞明白了一 ...

  8. Pascal之计算小系统

    program Project16; {$APPTYPE CONSOLE} VAR n,i,k,score,b,a:integer; answer,c:real; ch:char; Begin rep ...

  9. Swift4 类与继承, 类型转换, 类型判断

    创建: 2018/03/05 完成: 2018/03/07 更新: 2018/03/09 完善标题 [Swift4 类与继承, 类型转换] -> [Swift4 类与继承, 类型转换与判断] 补 ...

  10. 洛谷 P4009 汽车加油行驶问题 【最小费用最大流】

    分层图,建k层,设(i,j,0)为点(i,j)的满油状态,全图的流量都是1,因为重复走到一个点没有意义.如果当前点是加油站,那么它向它上左的点连费用为a的边,向下右连费用为a+b的边: 否则,这个点的 ...