我有一个普通的文件夹,所以当我右键单击时,转到属性并检查其数据大小,它给出 37.3 KB。但是当我使用 du 命令时,它显示 104KB
这两个人不应该给出相同的答案吗?
重要的是要注意,在计算目录的大小时,硬链接很重要。指向同一文件的两个硬链接不会占用更多的磁盘空间并共享 inode 号(根据定义),但是简单的文件大小计数将以双倍计数。
至少有一个 GNU du 的开关:
-l, --count-links
count sizes many times if hard linked
du 命令递归地下降所有目录和子目录,并始终为您提供包含在任何地方的总数。
GUI 中的属性选项卡并不总是这样做。有时会有一个复选框 (在那里,或者在一些其他首选项对话框中) 控制文件夹大小是递归计算的,还是只给你顶层。有时,即使 UI 尝试递归计算大小,也需要一段时间来更新它,所以它可能会在一段时间内显示一个较小的临时数字,直到它完成完整的递归搜索。
所以这并不奇怪,如果 UI 给出一个较小的数字。
@Steve Summit的答案以及后续评论忽略了一些有助于理解问题的有用信息:
一个简单的ls -ls
不会显示hidden子目录。
您应该看到使用ls -las
的任何隐藏子目录的名称。
要以递归方式查看它们的大小,请添加-R
选项。
显示内容的更好方法是使用find . -ls
,它显示子目录。
在这两种情况下,du
显示块,其中包含“许多”字节
POSIX 的 blocksize 的措辞(见rationale in ls
)说,-s
的结果在实现上有所不同(例如,有些可能显示 1024):
此标准的早期版本没有-k 选项,这意味着-s 选项不能可移植地使用,因为它的块大小是实现定义的,并且用于指定目录中文件占用的块数的单位在 ls-l 列表中固定为 512 字节单位。
另一方面,du
的标准说它应该是 512 字节的单位,就像ls -l
。
要解决缺少的空间,请执行以下操作:
如果你有很多非常小的文件,它们可以使用比块数少得多的字节。
同样,您可能有隐藏的文件,这些文件没有在问题中说明。
最后,某些属性对话框可能只显示文件。目录也占用空间。
顺便说一句,find
的-ls
选项在标准中仅在rationale中提到。但是它适用于 Linux。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(81条)