Linux查看文件大小的命令-续
几年前,写了Linux中如何查看文件夹的大小这篇文章,这里再做点补充。
大家想要了解一个文件是多大,最直观的方式,就是看看Windows告诉咱们某个文件有多大。可以看到,这个文件大小是2.4GB。有了这个信息,再往下去看Linux中的大小就有了准绳。我测试的是一个仅包含一个语料库的压缩包的目录的大小。这个压缩包的信息如下:
我的client是一台SUSE Linux,先把这个压缩包拷贝到Linux本地硬盘下的一个目录中,可以看到信息如下:
[root]tmanager-yz# du -sh /tmp/TBD3/Pizza-and-Chili-corpus.tar.gz
2.5G /tmp/TBD3/Pizza-and-Chili-corpus.tar.gz
拷贝到mount的一个NFS export下之后,可以发现,同样命令回报的大小发生了变化。
[root]tmanager-yz# du -sh Pizza-and-Chili-corpus.tar.gz
3.7G Pizza-and-Chili-corpus.tar.gz
这是为什么呢?因为这个NFS export是一个PowerScale的cluster,`du –sh`命令返回的大小里,除了文件本身,还有protection overhead的部分。关于protection overhead的具体原理和细节,可以看这里。
我在lab里有一台PowerScale的cluster,那么我把同样的文件拷贝到cluster上,并且创建一个quota,然后,我们就可以看到这样的细节:
到这里,大家就看明白了,原来那3.7GB里,有1.2GB是protection overhead。
所以,结论就是当你在Linux下运行du –sh命令,查看文件大小的时候,需要注意你查看的文件所在的目录,如果是在NFS上,那么有可能返回的文件大小并不是实际的大小,其中还有可能有protection overhead。而在本地磁盘目录中的时候,du –sh返回的文件大小跟Windows下的属性框中的信息是一样的。