使用 zfs 压缩的文件大小

使用 zfs 压缩的文件大小

我通常使用 来估计整个目录树的大小du -ks $DIRECTOY_TREE_ROOT,但是当 zfs 压缩开启时不能使用此方法。

对于单个目录来说,total显示的结果是可以的,但对于目录树来说,获取相同结果的最简单方法是什么?ls -l

编辑:

操作系统是Solaris 10。

我正在寻找真实的文件大小,而不是磁盘上使用的空间。

答案1

这应该可以工作:

find . -type f -exec ls -l {} + | nawk '{s=s+$5}
END {print s}'

答案2

du -b 举例来说:

# du -sh .
215G    .

# du -sbh .
344G    .

答案3

可以直接从命令“find”使用参数“-ls”获取文件大小和大致磁盘使用情况

 function lsdu() (
    export SEARCH_PATH=$*
    if [ ! -e "$SEARCH_PATH" ]; then
        echo "ERROR: Invalid file or directory ($SEARCH_PATH)"
        return 1
    fi
    find "$SEARCH_PATH" -ls | gawk --lint --posix '
        BEGIN {
            split("B KB MB GB TB PB",type)
            ls=hls=du=hdu=0;
            out_fmt="Path: %s \n  Total Size: %.2f %s \n  Disk Usage: %.2f %s \n  Compress Ratio: %.4f \n"
        }
        NF >= 7 {
            ls += $7
            du += $2
        }
        END {
            du *= 1024
            for(i=5; hls<1; i--) hls = ls / (2^(10*i))
            for(j=5; hdu<1; j--) hdu = du / (2^(10*j))
            printf out_fmt, ENVIRON["SEARCH_PATH"], hls, type[i+2], hdu, type[j+2], ls/du
        }
    '
)

一些示例命令和输出:

-bash-3.00# lsdu test_sloccount/
Path: test_sloccount/ 
  Total Size: 30.90 MB 
  Disk Usage: 1.43 MB 
  Compress Ratio: 21.6250 

答案4

man du 可能会在这里提供帮助:

 --apparent-size
      print apparent sizes, rather than disk usage;  although
      the  apparent size is usually smaller, it may be larger
      due to holes in (`sparse') files,  internal  fragmenta-
      tion, indirect blocks, and the like

相关内容