使用zfs压缩的文件大小


9

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

total所显示ls -l是确定一个单一的目录,但是这是为了得到一个目录树相同的结果最简单的方法?

编辑:

操作系统是Solaris 10。

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


您是否在寻找磁盘上实际使用的空间或实际文件大小?
justarobert

Answers:



12

只需使用du -b 示例:

# du -sh .
215G    .

# du -sbh .
344G    .

十二向上票尽管有使用Solaris 10没有“-b”选项du...
jlliagre

在Solaris 11上,它通过以下方式工作:gdu -bsh foldername
复制运行开始时间:

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 

2

此单行代码应产生期望的结果:

find $DIRECTOY_TREE_ROOT -type d -exec ls -l '{}' \; | awk '/^total\ .[0-9]+$/ { sum+=$(NF) }END{ print sum }'

我没有要测试的ZFS分区,但是在ext4分区上,它输出的结果与相同du -ks


已对问题进行了编辑,以询问实际的文件大小,而不是du和ls total均在报告的磁盘上使用的文件大小。
jlliagre 2011年

2

满都可能会在这里有所帮助:

 --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

Solaris 10 du中没有这些选项。它是非标准的Gnu扩展。
jlliagre

可能。但是,Solaris Express 11确实具有它。
the-wabbit 2011年

4
Solaris 10不捆绑Gnu du。Solaris 11 Express具有不支持--apparent-size选项的/ usr / bin / du和支持它的/ usr / gnu / bin / du。
jlliagre 2011年

2

为了完整起见,我将为FreeBSD包括这个问题的答案。根据man du

 -A      Display the apparent size instead of the disk usage.  This can be
         helpful when operating on compressed volumes or sparse files.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.