为什么 du -sl 显示 cp -rl 的源和结果的大小不同?

为什么 du -sl 显示 cp -rl 的源和结果的大小不同?

我曾经cp -rl复制过一个文件夹。测量源文件和复制结果的大小时,du -sl结果大小略有不同,尽管diff确认它们的内容是相同的:

$ cp -rl folderA/ folderB/
$ du -sl folderA folderB
98561224 folderA
98590512 folderB
$ diff --brief -ra folderA/ folderB/
$

两个文件夹位于同一硬盘上,在复制和测量之间未对它们进行任何修改。我在和的文档中找不到任何du可以cp解释差异的内容。

答案1

我自己试了一下,发现大小差异来自目录文件。由于它们不是硬链接,因此它们是新创建的文件,可能不具有完全相同的元数据?

为了说明这一点,请运行以下命令:

ls -alR folderA/ | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'
ls -alR folderB/ | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'

这些大小应该相同(不包括目录文件)。您可以打印目录大小列表,然后比较结果以找出哪些目录完全不同。

相关内容