使用Linux cp -R时,文件和目录以什么顺序被复制?


12

如果我执行以下命令:

cp -R /myfiles /mydestination

如果myfiles包含多个子目录和文件,将以什么顺序复制它们?

例如,目录可能命名为 0123a, 9993c, myfolder, xfolder

ls据我所知,它们不是按照字母顺序,日期顺序或使用标准命令时出现的顺序复制的,那么究竟由什么决定顺序呢?

编辑:我试图确定cp命令使用的顺序,以便确定在停止之前我的复制命令沿其走了多远。例如,我希望能够确定它成功复制了4个目录中的3个。


请记住,该ls命令默认情况下会在显示目录内容之前对其进行排序。您看到的ls不是实际的目录枚举顺序。
JdeBP 2011年

1
使用ls -U得到无序的目录顺序。这应该是cp使用的顺序。如果您需要对进度,订单等进行更多控制,则可能cp不是该工具。
丹尼尔·安德森

Answers:


2

它们在文件系统中的存储/返回顺序。对于“未排序”文件系统,通常是其创建顺序。对于“排序的”文件系统(例如带有的ext3 / 4 dir_index),这将是文件系统索引中使用的顺序。


对于未索引的文件系统格式,如果要删除目录条目并创建它们,则要比这复杂一些。(-:
JdeBP 2011年

12

我们完全有同样的问题。我们在USB驱动器之间复制大量数据,而无法告知该过程完成了多长时间,这很烦人。相反,我们开始使用RSYNC。

而不是使用 cp -Rv /source /destination

改用这个 rsync -av /source /destination

现在,所有文件夹及其内容将按字母顺序处理,您可以轻松地查看文件复制的进度。

我们在在线备份网站上对此解决方案有完整的描述。

主持人请注意:我之前曾发布过一次,但它被删除了,也许是因为我没有在答案中包含足够的细节,或者是因为链接。也许您会接受这个更详细的答案。

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.