了解不同的目录大小

了解不同的目录大小

比较时

root@debian:~# du -s /backup/test1/
5605364 /backup/test1/

两个目录du

root@debian:/etc/init.d# du -s /data/test1/
5605360 /data/test1/

du告诉我每个目录的总大小有细微的差别。

另一方面,Diff 告诉我两个目录是相同的:

root@debian:/etc/init.d# diff -r /data/test1/ /backup/test1/

是什么原因?

答案1

du报告文件的“磁盘使用情况”,而不是每个文件包含的确切字节数。手册页du甚至说:

du—估计文件空间使用情况

同一组文件使用不同数量的磁盘空间是完全可能的。这是因为文件系统的复杂性。有关文件系统上磁盘使用情况的更多信息,请阅读以下问题和答案:https://superuser.com/questions/218395/about-file-size-and-disk-usage-in-ext3

diff比较内容的文件。diff不关心文件在文件系统上实际使用了多少字节。它只关心字节文件。

如果您想du报告每个文件的确切字节数,您可以使用--apparent-size

答案2

由于您没有提供详细信息,因此还有推测/猜测的余地。

我假设 /data 和 /backup 安装在不同的分区上,这些分区使用不同的块大小进行格式化。这会导致物理使用的磁盘空间的测量值略有不同,因为需要一个(或多个)额外(或更少)的块。

您可以通过执行df和复制/dev/...部分挂载点/data并将/backup它们提供给file -s

例如

file -s /dev/sda1

答案3

这可能是由于两个目录树中各个目录的大小不同造成的。每个目录在磁盘上都由一些磁盘块表示,这些磁盘块存储目录中文件的名称。这些块有时被称为“目录文件”。当您运行“ls -l”或“ls -s”时,目录的大小字段就是此目录文件的大小。

当您在目录中创建文件时,文件名将添加到目录文件中。如果目录文件空间不足,则可能需要通过添加另一个磁盘块来扩大文件空间。当您从目录中删除文件时,文件名将从目录文件中删除,留下一些未使用的空间。未使用的空间可用于存储另一个文件名。但它不会返回到操作系统,因此目录文件的大小可以增加,但永远不会缩小。

如果您并排比较目录树,您可能会发现某些匹配的目录大小不同。这通常意味着一个目录过去包含更多文件,或文件名称较大,或者过去有大量文件创建/删除“变动”。

什么时候差异比较两个目录时,它只检查两个目录中是否有相同的名称。它不检查各自目录文件中未使用的空间,也不关心两个目录文件是否实际上大小相同。

相关内容