为什么“du -sh”复制后显示不同的文件夹大小?

为什么“du -sh”复制后显示不同的文件夹大小?

我想要进行一个简单的备份并将所有文件从一个文件夹复制到另一个文件夹。操作系统是 Debian。

  • du -sh当我在源文件夹上执行时,我得到了 436G。
  • 当在目的地执行相同操作时,我只得到 384G。

如果我通过 Samba 将两个文件夹挂载到 Windows 机器上,则两个文件夹的大小相同。

有人可以解释一下为什么du显示不同的尺寸吗?

答案1

du有一个选项--apparent-size可能对您有帮助。我猜这两个磁盘的块大小不同。如果一个文件只部分使用了一个块,其他文件就不能使用其余部分,因此默认情况下 du 以块为单位计算磁盘使用情况。

要获取 /dev/sda1 上的 ext 文件系统使用的块大小,您可以执行以下操作:

sudo tune2fs -l /dev/sda1 | grep 'Block size'

如果你担心并非所有文件都已复制,你可以使用类似cfv为原始文件创建递归哈希并用它来验证备份。

根据原始文件生成校验和

cfv -p /path/to/origin -C -rr -f /tmp/checksum.sha1

根据校验和验证备份

cfv -p /path/to/backup -T -u -f /tmp/checksum.sha1

相关内容