有没有办法压缩 EXT2/EXT3 下的非常大的目录,而不需要简单地重建目录?
我记得函数警告操作系统实现seekdir
和telldir
运行目录压缩的风险。这听起来就像我在这种情况下想要的,但在实践中我不熟悉这些语义。
背景: 我有几个目录本身就有好几 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
答案1
目录无法在线精确压缩因为seekdir/telldir 的要求之一。它们要求任何程序都能够无限期地保持目录内的位置,并且仍然只读取任何给定的条目一次;因此,在挂载 fs 时不能移动条目。
您可以使用 离线压缩目录e2fsck -D
。
答案2
你调查过吗猪? 这是一个改进的 gzip。
John Allspaw 在他的博客上讨论了这个问题:
http://www.kitchensoap.com/2010/04/02/pigz-parallel-gzip-omg/