cp -r和cp -a之间的区别


174

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


62
有些人正在寻找对手册页的更好解释,因为并不总是清楚描述的含义。我不得不进行很多次挖掘和测试/实验,才能弄清楚特定命令的实际作用。grep的手册页可能会让我感到困惑。

2
我可以理解您的无奈,但是imo,大多数时候最好的学习方法是测试和试验。
2012年

37
或者通过在此处提问来学习,以您理解的方式获得答案,然后更好地理解测试和实验的内容以及方式。请记住,你的作品往往不为我工作,等等,等等
威尔兰妮

Answers:


198

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

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

-a选项表示-R-p,还有一些其他保留选项。它尝试使副本尽可能接近原始副本:相同的目录树,相同的文件类型,相同的内容,相同的元数据(时间,权限,扩展属性等)。


35
基本上,除非您想要特殊的东西,否则就永远不需要,-r因为-a(对于archive)总是最安全的,并且可能是您期望发生的事情。
2012年

2
@ams是的,这是一个很好的总结。唯一常用的原因-r是因为您使用的是Unix以外的unix变种,而Linux则没有-a,通常会使用cp -rp。或者rsync -a
吉尔斯

有时权限将允许-r但不允许-a
DrCord 2015年

不是-r,不是-R在Ubuntu 18中不起作用
Arkady

16

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.