我想压缩大约 100,000 个文件(这就是所说find . -type f | wc -l
的),总磁盘使用量为 100 GB。大多数文件都很小,但只有少数几个文件占了 100 GB 中的约 70 GB。
我不想为此使用 tar 或 tar.gz,因为如果我想访问存档,File Roller 必须先从外部硬盘读取整个存档,然后我才能看到文件列表。如果我尝试在终端上列出文件,情况也是如此。
我不需要 tar 的权限管理,因为我能记住一些需要其他权限的文件。我应该使用什么压缩算法?
当我这样做时:我使用以下命令进行完整磁盘备份:
dd if=/dev/sda bs=32M | gzip -9 > /location/dateAndMachineName.gz
它的压缩效果非常好。但你知道更好的压缩算法吗?
答案1
我知道的唯一解决办法是像素(sudo apt-get install pixz
),这是 xz 的一个变体,使用块编码器,允许快速随机访问/索引。此外,它是一种使用多个核心进行压缩的并行方法。
引用文档:
现有的 XZ Utils (http://tukaani.org/xz/) 在 .xz 文件格式中提供了很好的压缩效果,但它们有两个显著的问题:
- 它们是单线程的,而现在大多数用户都拥有多核计算机。
- 它们生成的 .xz 文件只是一大块压缩数据,而不是许多小块的集合。这使得随机访问原始数据变得不可能。
有了 pixz,这两个问题都解决了。
使用方法很简单:
tar -Ipixz -cf foo.tpxz foo
压缩文件夹foo
pixz -l foo.tpxz
列出其中的文件(快!)
pixz -x <file_path> < foo.tpxz | tar x
提取<file_path>
档案中的单个文件
作为奖励,由于文件首先被压缩,您还将获得存储的访问权限!