【问题标题】:what is the most reliable command to find actual size of a file linux查找文件实际大小的最可靠命令是什么 linux
【发布时间】:2015-07-15 17:31:31
【问题描述】:

最近我尝试使用各种命令找出文件的大小,结果显示出巨大的差异。

ls -ltr 显示其大小约为 34GB(字节由我四舍五入),而 du -sh 文件名显示它大约为 11GB。尽管 stat 命令显示相同为 34GB 左右。 知道哪个是查找文件实际大小的最可靠命令吗?

对其执行了一些复制操作,我们不确定这是否正确完成,因为在某个时间执行复制的源文件被我们的工作删除。

【问题讨论】:

  • 我猜这是一个稀疏文件,du 告诉它当前的磁盘使用情况,ls 它声明的大小(如果你修改文件减少空白块的运行可能会达到)
  • 尽管如此,我想一切皆有可能。
  • @l'L'l:为什么这么不寻常? $ truncate -s 10T foo; ls -l foo; du -sh foo 将提供 109951162777600
  • @rodrigo,实际上,我的意思是,如果有问题的文件不是稀疏的,或者ls -lshdu -h; du -bh 之间存在重大差异,这将是不寻常的。您显示的示例给出了一个明显的文件大小和一个实际的文件大小,所以它当然会完全不同。

标签: linux unix


【解决方案1】:

这里没有不准确或可靠性问题,您只是在比较两个不同的数字:逻辑大小与物理大小。

这里是Wikipedia's illustration for sparse files

ls 显示灰色+绿色区域,即文件的逻辑长度。 du(没有--apparent-size)只显示绿色区域,因为那些是占用空间的区域。

您可以使用dd count=0 bs=1M seek=100 of=myfile 创建一个稀疏文件。

ls 显示 100MiB,因为这是文件的长度:

$ ls -lh myfile
-rw-r----- 1 me me 100M Jul 15 10:57 myfile

du 显示为 0,因为这是分配的数据量:

$ du myfile
0 myfile

【讨论】:

  • 另外,一些文件系统可能会存储压缩后的数据,这使得差异更大。
  • 请注意,这并不能真正回答所发布的文字问题,尽管这可能是用户需要知道的内容
  • 对字面问题的明确回答是“所有命令都同样可靠”。
  • @rodrigo du 在哪些压缩文件系统上显示压缩后块?在 btrfs 上,它显示预压缩块。
  • @thatotherguy:如果我有时间,我会做一些实验。但从我的脑海中,我认为 ZFS 可能还有 ext4 做到了。
【解决方案2】:
ls -l --block-size=M

将为您提供一个长格式列表(需要实际查看文件大小)并将文件大小四舍五入到最接近的MiB

如果您想要MB(10^6 字节)而不是MiB(2^20 字节)单位,请改用--block-size=MB

如果您不希望将M 后缀附加到文件大小,可以使用--block-size=1M 之类的名称。感谢 Stéphane Chazelas 提出这个建议。

这在ls 的手册页中有描述; man ls 并搜索 SIZE。它还允许使用MB/MiB 以外的单位,并且从外观上看(我没有尝试过)也可以使用任意块大小(因此,如果需要,您可以将文件大小视为 412 字节块的数量到)。

请注意,--block-size 参数是 Open Group 的 ls 之上的 GNU 扩展,因此如果您没有 GNU 用户空间(大多数 Linux 安装都有),这可能不起作用。 GNU coreutils 8.5 中的 ls 确实支持--block-size,如上所述。

【讨论】:

    【解决方案3】:

    文件大小有几个概念,如that other guiy's answersparse files 上的维基页面图所述。

    但是,您可能希望同时使用 ls(1)stat(1) 命令。

    如果使用 C 编码,请考虑使用 stat(2)lseek(2) 系统调用。

    另请参阅this answer 中的参考资料。

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多