cp -r 和 cp -a 的区别

Ran*_*ndy 222 linux cp recursive

我正在寻找cp -r和之间的区别cp -a。在从文件夹复制文件方面,“递归”是什么意思?

Gil*_*il' 250

递归意味着cp复制目录的内容,如果目录有子目录,它们也会被(递归地)复制。如果没有-R,该cp命令将跳过目录。-r-R在 Linux 上相同,在某些其他 unix 变体上的某些边缘情况下有所不同。

默认情况下,cp创建一个与旧文件内容相同、权限相同但受umask限制的新文件;副本以复制时间为准,属于进行复制的用户。使用该-p选项,副本与原件具有相同的修改时间、相同的访问时间和相同的权限。如果执行复制的用户有权创建此类文件,则它也具有与原始文件相同的所有者和组。

-a选项意味着-R-p,加上一些其他的保存选项。它尝试制作尽可能接近原始副本的副本:相同的目录树、相同的文件类型、相同的内容、相同的元数据(时间、权限、扩展属性等)。

  • 基本上,除非你想要一些特别的东西,否则你永远不需要`-r`,因为`-a`(对于`a`rchive)总是最安全的,并且可能是你期望发生的。 (52认同)
  • @ams 是的,这是一个很好的总结。使用 `-r` 的唯一常见原因是因为你在 Linux 以外的一些没有 `-a` 的 unix 变体上,通常你会使用 `cp -rp`。或者`rsync -a`。 (2认同)

Joe*_*Joe 23

“递归”的 -r 或 -R 选项意味着它将复制所有文件,包括子文件夹内的文件。

列出的 -a 选项与 -dR 相同,这意味着它将保留链接以及复制子目录的内容。保留链接的意思是它不会跟随链接,因为它是递归复制的。