归档大量文件/一个大文件

UTF*_*F-8 3 gzip backup compression tar

我想压缩大约 100'000 个文件(就是这么find . -type f | wc -l说的),总磁盘使用量为 100 GB。大多数文件都很小,但只有少数文件约占 100 GB 的 70 GB。

我不想为此使用 tar 或 tar.gz,因为如果我想访问存档,File Roller 首先必须从外部 HDD 读取整个存档,然后才能看到文件列表。如果我尝试在终端上列出文件,也是一样。

我不需要 tar 的权限管理,因为我可以记住少数文件需要其他权限而不是其他权限。我应该使用什么压缩算法?

当我在做的时候:我用这个命令做完整的磁盘备份:

dd if=/dev/sda bs=32M | gzip -9 > /location/dateAndMachineName.gz
Run Code Online (Sandbox Code Playgroud)

它的压缩效果非常好。但是你知道更好的压缩算法吗?

And*_*bis 5

我知道的唯一解决方案是pixz ( 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>存档中

作为奖励,您还将获得存储的访问权限,因为文件首先被压缩!