FreeBSD:如何在压缩后知道 zfs 上的实际文件大小?

Ale*_*der 22 freebsd zfs find ls du

我在我的FreeBSD 9.0 x64上使用 zfs并且对它非常满意,但我发现很难计算目录的真实大小,而不是压缩大小。

当然,我可以遍历目录并使用 ls 计算每个文件的大小,但是为此我希望 du 有一些额外的密钥。

那么,我如何知道压缩在 zfs 上的 dir 的目录大小

提前感谢您的建议,我简单地想不起来没有这样一种“简单”的方法,没有 'find ./ -type d -exec ls -l '{}' \; | 哎呀……'!

Sea*_*ean 29

使用du它的-A标志:

root@pg78:/usr/local/pgsql/data/base/218204 # du -A -h 221350.219
1.0G    221350.219
root@pg78:/usr/local/pgsql/data/base/218204 # du -h 221350.219
501M    221350.219
Run Code Online (Sandbox Code Playgroud)

非常便利。它甚至适用-d于递归的优点:

root@pg78:/usr/local/pgsql/data/base # du -h -c -d0 .
387G    .
387G    total
root@pg78:/usr/local/pgsql/data/base # du  -A -h -c -d0 .
518G    .
518G    total
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您的 `du` 版本没有 -A 选项,-A 用于“表观大小”,可通过 `--apparent-size` 获得。Ubuntu 16.04 / du 8.25 似乎没有 -A,所以看起来其他人可能会遇到这个问题。 (10认同)

Zan*_*hey 13

您可以安装 GNU 版本du(1)

cd /usr/ports/sysutils/coreutils && make install clean

然后你可以使用--apparent-size标志:

/space# zfs create space/comptest
/space# zfs set compression=on space/comptest
/space# dd if=/dev/zero of=/space/comptest/zerofile bs=1M count=40
/space/comptest# gdu
2K      .
/space/comptest# gdu --apparent-size
40961K  .
Run Code Online (Sandbox Code Playgroud)

  • 这对于 Linux 上的 ZFS 很有用。GNU `du` 没有 `-A` 选项。 (10认同)
  • 有 __NO__ 理由为此使用端口。使用带有“-A”标志的基本操作系统“du”。 (5认同)
  • Linux `du` 上的 ZFS 有 `--apparent-size` 来自这里接受的解决方案的评论:https://serverfault.com/a/434655/145009 (3认同)