du 并查找 -ls

du 并查找 -ls

我有一台 Solaris 10 服务器,它通过 NFS 安装了远程文件系统。我相信远程系统是 NetApp,但不清楚。

当我运行时,df -h <mountpoint>我得到的大小为 12T,使用了 10T,容量为 87%。

当我更改为挂载点并运行时,ls -A |xargs du -s我得到了大约 8 MB 的空间。我期望 du 递归下降并将所有文件大小相加,但这里似乎没有这样做。

作为对冲,我跑了

find <mountpoint> -ls | awk '{total=total+$7}END{print total}'

答案是 13006791645。除以 1024^3 (1073741824) 时,我得到大约 12.1 TB。

所以看来find -lsdf或多或少是一致的。为什么你会失败得如此严重?

PS:该命令ls -A还会抓取隐藏的快照目录,但 find 找不到任何内容(“检测到循环”除外)。

答案1

du -s以 512 字节块的形式进行报告。由于不报告人类可读的数据,df -h因此无法进行比较。du

要比较这两个值,请使用du -sh <mountpoint>/usr/xpg4/bin/df -Pdf也以 512 字节为单位进行报告。

根据man du

具有多个链接的文件将仅针对一项进行计数和写入。报告中选择的目录条目未指定。默认情况下,文件大小以 512 字节为单位写入,向上舍入到下一个 512 字节单位。

尝试/usr/xpg4/bin/df -P获取 512 字节报告df

bash-3.2$ /usr/xpg4/bin/df -P /var
Filesystem            512-blocks        Used   Available Capacity  Mounted on
rpool/ROOT/s10/var
                      1147797504    66061270   954397119     7%    /var

并与du -s

bash-3.2$ du -s /var
65976060        /var

或者比较一下:

bash-3.2$ df -h /var              
Filesystem             size   used  avail capacity  Mounted on
rpool/ROOT/s10x_u11wos_24a/var
                       547G    32G   455G     7%    /var

和:

bash-3.2$ du -hs /var   
  31G   /var

相关内容