如何压缩大目录

pil*_*row 5 ext3 directory

有没有办法在 EXT2/EXT3 下压缩一个非常大的目录而无需简单地重新制作目录?

我记得perlfunc警告说操作系统实现seekdirtelldir运行目录压缩的风险。在这种情况下,这听起来像是我想要的,但我在实践中不熟悉这些语义。

背景: 我有几个目录本身就有很多 MB 大小——过去它们被无数小文件淹没:

$ ls -lh
drwxr-x--- 2 root root 1.3M Oct  5 12:49 big
drwxr-x--- 2 root root 2.3M Oct  5 12:49 this_one_is_empty_now
drwxr-x--- 2 root root 6.1M Oct  5 12:49 yikes
Run Code Online (Sandbox Code Playgroud)

psu*_*usi 5

由于seekdir/telldir 的要求,无法在线压缩目录。它们要求任何程序能够无限期地在目录中保持位置,并且仍然只能读取任何给定的条目一次;因此,在安装 fs 时不能移动条目。

您可以使用e2fsck -D.


gWa*_*ldo 0

你调查过pigz吗?这是一个改进的 gzip。

John Allspaw 在他的博客上讨论了这个问题:
http://www.kitchensoap.com/2010/04/02/pigz-parallel-gzip-omg/