关于右键属性与du -sh显示的文件大小不一致的解决

Linux大全评论1.4K views阅读模式

关于右键属性与du -sh显示的文件大小不一致的解决: 总之:我的理解就是du查到的是实际硬盘上的block大小,包括很多隐藏文件,软,硬链接,以及由于磁盘格式划分等等的问题,导致了不一致, 右键属性相当于
du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹  及除开那些多余的东西。
而du -sh 则是全部显示了出来,所以,他显示的要大。     (百度到的,我认为合理)   这里有几方面的问题, 导致有好几种计算文件大小方法.

1. 内容大小 和 磁盘(或者别的什么储存器)占用大小, 比如

# 文件内容是 三个字母加一个换行

~/tmp$ cat abc.txt

efg

# 内容大小是 4 字节(--apparent-size 计算内容大小, --block-size=1 以字节位单位)

~/tmp$ du --apparent-size --block-size=1 abc.txt

4 abc.txt

# 占用磁盘空间4096字节, 这个结果跟磁盘格式密切相关

~/tmp$ du --block-size=1 abc.txt

4096 abc.txt

2. 符号链接(symbolic links 或 soft links 或 symlinks)的问题

# 这里有个指向刚才那个文件的符号链接

~/tmp$ ls -nl link_abc.txt

lrwxrwxrwx 1 1000 1000 7 Jan 28 18:34 link_abc.txt -> abc.txt

# 符号链接本身不占用"普通的"磁盘空间, 就像一个空文件一样.

~/tmp$ du --block-size=1 link_abc.txt

0 link_abc.txt

# 不过内容大小还是有的, 实际上是 "abc.txt" 共7个字符.

~/tmp$ du --apparent-size --block-size=1 link_abc.txt

7 link_abc.txt

~/tmp$ 

# 另外要查看指向的文件的大小的话应该这样 (跟最开始一样)

~/tmp$ du --apparent-size --block-size=1 -L link_abc.txt

4 link_abc.txt


3. 隐藏文件的问题

英文句点"."开头的文件 或者 波浪号"~"结尾的文件属于隐藏文件.

~/tmp$ ls

abc.txt link_abc.txt

~/tmp$ ls -A

abc.txt link_abc.txt .xxx

(不过好像对于 ls 命令来说 "*~" 不属于隐藏文件)

 
4.文件夹本身占用空间的问题


# du 是要算上文件夹本身大小的

~/tmp$ du --exclude='.*' --exclude='*~' --apparent-size -s -b -D ~/tmp


4107 /home/xyy/tmp


# 系统文件管理 没算上(右键属性)    
Gnome 默认的文件管理器 nautilus 统计文件大小的时候忽略隐藏文件(对应du --exclude='.*' --exclude='*~'), 会跟入一层符号链接(对应 du -D), 显示文件内容大小(而不是磁盘占用), 并以1000进位(du -b).

最后合起来就是


du --exclude='.*' --exclude='*~' -b -D -s 你的文件或文件夹

企鹅博客
  • 本文由 发表于 2019年9月9日 01:10:05
  • 转载请务必保留本文链接:https://www.qieseo.com/229441.html

发表评论