filesize/stat 在所有文件系统中是否一致?

Is filesize/stat consistent across all filesystems?

我正在考虑编写使用文件大小作为预测试的软件来测试两个文件是否相同。如果简单的文件大小整数比较失败,则无需应用复杂的文件内容比较。该软件将用 golang (first), but I think this question really boils down to the stat syscall 编写,因此与语言无关。

我一定需要一个独立于平台的解决方案。它必须跨所有系统和文件系统工作。我可以确定文件内容在所有文件系统中都是相同的字节序列,但是文件大小呢?

如果我将文件从一个文件系统传输到另一个文件系统,我能否确保在另一个文件系统上获得相同的文件大小?

[当然,我不关心文件元数据。这显然是不一致的。我只关心内容大小]

是的,st_size 在所有文件系统中应该是相同的(至少如果它们是 posix 兼容的)。一个字节毕竟是一个字节,不管你把它存储在哪里。不过,消耗的磁盘 space 可能会有所不同,具体取决于文件系统的底层块大小。