cp命令复制、另存为文件

系统集成 盛行 6年前 (2014-06-06) 315次浏览 已收录 0个评论 扫描二维码
文章目录
[隐藏]

1.释义

复制、另存为文件

2.系统帮助

用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
将源复制到目标,或将多个源复制到目录

单源文件复制:cp [选项]... [-T] 源目标
   如果目标不存在,则事先创建此文件,并复制源文件的内容至目录文件中;
   如果目标存在,并且是非目录文件,则覆盖目录文件;
   如果目标存在,并且是目录文件,则先在目标目录下创建一个与源文件同名的文件,并复
   制源文件的内容。
多源文件复制:cp [选项]... 源... 目录
     cp [选项]... -t 目录 源...
   如果目标不存在,错误;
   如果目录存在,并且是非目录,错误;
   如果目录存在,并且是目录,分别复制每个文件至目标目录中,并保持原名称。
目录复制:
   如果目录不存在,则先创建目录,并按照文件复制的方式将目录内的文件复制到目标目录
   中;
   如果目标存在,并且是文件,错误;
   如果目录存在,并且是目录,将整个目录都复制到目标目录中。

长选项的强制参数对于短选项也是强制的
  -a, --archive			用于实现归档,等于-dR --preserve=all
      --attributes-only	仅复制属性而不复制数据      --backup[=CONTROL		为每个已存在的目标文件创建备份
  -b				类似--backup 但不接受参数
      --copy-contents		在递归处理是复制特殊文件内容
  -d				复制符号链接文件,而非指向的源文件,本身等于--no-
                   dereference --preserve=links
  -f, --force                  强制覆盖目标文件,if an existing destination fil
                   e cannot be
                                 opened, remove it and try again (this option
                                 is ignored when the -n option is also used)
  -i, --interactive            交互式复制,覆盖前需要用户确认 (overrides a previ
                   ous -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		不要覆盖已存在的文件(使前面的 -i 选项失效)
  -P, --no-dereference		不跟随源文件中的符号链接
  -p				等于--preserve=模式,所有权,时间戳
      --preserve[=属性列表	保持指定的属性(默认:模式,所有权,时间戳),如果
					可能保持附加属性:环境、链接、xattr 等
  -c                           deprecated, same as --preserve=context
      --sno-preserve=属性列表	不保留指定的文件属性
      --parents			复制前在目标目录创建来源文件路径中的所有目录
  -R, -r, --recursive		递归复制目录及其子目录内的所有内容
      --reflink[=WHEN]		控制克隆/CoW 副本。请查看下面的内如。
      --remove-destination	尝试打开目标文件前先删除已存在的目的地
					文件 (相对于 --force 选项)
      --sparse=WHEN		控制创建稀疏文件的方式
      --strip-trailing-slashes	删除参数中所有源文件/目录末端的斜杠
  -s, --symbolic-link		只创建符号链接而不复制文件
  -S, --suffix=后缀		自行指定备份文件的后缀
  -t,  --target-directory=目录	将所有参数指定的源文件/目录
                                           复制至目标目录
  -T, --no-target-directory	将目标目录视作普通文件
  -u, --update			只在源文件比目标文件新,或目标文件
					不存在时才进行复制
  -v, --verbose		显示详细的进行步骤
  -x, --one-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		显示此帮助信息并退出
      --version		显示版本信息并退出

默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。

当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。

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       不进行备份(即使使用了--backup 选项)
  numbered, t     备份文件加上数字进行排序
  existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
  simple, never   永远使用普通方式备份

有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话,cp 会将源文件备份。

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告cp 的翻译错误
要获取完整文档,请运行:info coreutils 'cp invocation'

3.示例

3.1.复制文件

cp /etc/sysconfig/network-scripts/ifcfg-ens192 /etc/sysconfig/network-scripts/ifcfg-ens192.bak
以上命令备份在同一路径下可以使用方法1cp /etc/sysconfig/network-scripts/{ifcfg-ens192,ifcfg-ens192.bak}方法2cp /etc/sysconfig/network-scripts/ifcfg-ens192{,.bak}实际三种方法效果一样

3.2.复制所有

生成示例文件:
[root@itbkz.com s]#mkdir mulu && touch {test.txt,mulu/test.txt}
方法:
[root@itbkz.com s]#cp -R ./* /tmp/
[root@itbkz.com s]#tree /tmp/
/tmp/
├── mulu
│   └── test.txt
└── test.txt

1 directory, 2 files
不加-R参数将只复制当前目录中的文件,不会复制当前目录和目录下所有的文件。

3.3.查看复制过程

[root@itbkz.com s]#cp -v /etc/hosts /tmp/
"/etc/hosts" -> "/tmp/hosts"

3.4.反向路径复制

[root@itbkz.com s]#cp -t /tmp/ /etc/hosts
[root@itbkz.com s]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
所说的反向路径复制意思就是在正常使用cp命令,先输入要复制的文件或目录,然后在输入要复制到的路径,而反向复制刚好颠倒,先输入要复制到的路径,然后在输入要复制的文件或目录。

IT博客站版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:cp命令复制、另存为文件
喜欢 (0)
[使用支付宝扫码]
分享 (0)
盛行
关于作者:
企业应用技术爱好者,喜欢分享知识。如果文章中有错误,欢迎指正,谢谢。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址