是否有并行文件归档程序(如 tar)?

sup*_*tah 47 performance tar archive

有没有可以并行归档文件的东西?

Tar 很棒,但我不使用磁带存档,对我来说更重要的是存档发生得很快(使用 bzip2 之类的压缩),因为我有 smp。

ech*_*hox 39

我认为您正在寻找 pbzip2:

PBZIP2 是 bzip2 块排序文件压缩器的并行实现,它使用 pthreads 并在 SMP 机器上实现接近线性的加速。

查看项目主页或查看您最喜欢的包存储库。

  • 今天的命令是 `tar -cf dir.tar.gz -I pigz dir` 和 `tar -xf dir.tar.gz -I pigz`。`xz` 也是线程化的:使用 `XZ_OPT=-T0 tar -cJf dir.tar.gz dir` 和 `XZ_OPT=-T0 tar -xJf dir.tar.gz`。 (5认同)
  • 您还可以尝试使用“pigz”和“pxz”来并行实现“gzip”和“xz”。您可以使用“tar c dir |”之类的命令进行压缩 pigz -c > dir.tar.gz` 并使用 `pigz -cd dir.tar.gz | 解压缩 焦油 xf -`。 (2认同)

rob*_*at2 22

OP 询问并行归档,而不是并行压缩。

如果源材料来自文件系统,其中不同的目录/文件可能位于不同的磁盘上,或者甚至是超过压缩工具输入速度的单个快速磁盘,那么拥有多个输入流确实是有益的进入压缩层。

有意义的问题变成了,并行存档的输出是什么样的?它不再只是一个单一的文件描述符 /stdout,而是每个线程的文件描述符。

到目前为止的一个例子是 Postgresql 的并行转储模式 pg_dump,其中它转储到一个目录,线程在要备份的表集上工作(工作队列有多个线程消耗队列)。

我不确定是否有任何实际的主流并行归档器。在 ZFS 上使用 Solaris Tar 有一个 hack:http : //www.maier-komor.de/mtwrite.html

有一些专用的备份工具可以成功运行多个线程,但更多的只是在较高级别按目录拆分工作负载。


fsc*_*itt 21

当给定-mmt标志时,7zip可以在多个线程上运行,但只有在压缩到 7z 存档时才能运行,7z 存档提供了很好的压缩,但通常比 zip 创建存档要慢。做这样的事情:

7z a -mmt foo.7z /opt/myhugefile.dat
Run Code Online (Sandbox Code Playgroud)


小智 14

tar --use-compress-program=pigz  ....
Run Code Online (Sandbox Code Playgroud)

替换pigz为您最喜欢的并行压缩程序。使用的原因tar是因为它可以存储所有者、组、权限。该元数据通常很有用(例如,在复杂系统中恢复目录树)。

  • tar -c --use-compress-program=pigz -f myDirectory.tar.gz myDirectory/ (5认同)

Jay*_*ker 10

pigz是gzip 的并行实现,但只能真正使用多处理器进行压缩,不能解压。

  • @gerlos 在管道上使用 `time` 只会对第一个命令计时。来自 [`pigz` 文档](http://zlib.net/pigz/pigz.pdf):“解压缩不能并行化,至少在没有为此目的专门准备的 deflate 流的情况下不能并行化。因此,pigz 使用单个线程(主线程)用于解压,但会创建另外三个线程用于读取、写入和检查计算,这在某些情况下可以加快解压速度。” (5认同)
  • 做了一些实验,`pigz` 解压的时候好像可以多线程**也**。尝试比较 `time tar xf dir.tar.gz` 和 `time pigz -cd dir.tar.gz` 的输出 | tar xf -`(在我的 4 核 CPU 上花费的时间不到一半)。 (2认同)

小智 8

tar只是一种存档格式,非常擅长精确复制文件并保留目录树和原始文件属性。TAR 非常适合进行备份,因为所有内容都被保留了下来。我pbzip2用来压缩用于系统备份的 tar 档案,效果非常好。

这个命令应该可以解决问题。

tar -cpS "infile" | pbzip2 > "outfile"
Run Code Online (Sandbox Code Playgroud)

pbzip2 可以用不同的压缩实用程序替换,但请注意,LZMA 压缩(如 pxz)在压缩/解压缩大文件时使用大量 RAM(我尝试使用 8GB RAM 运行 8 个线程,而 pxz 开始交换到磁盘)。


Fel*_*rez 5

另一个竞争者是lbzip2. 它与 pbzip2 非常相似


pet*_*rph 5

就压缩而言,xz因为大约5.2版本通过-T选项支持并行压缩。

  • 如果您想将其与 tar 结合使用,只需在之前调用 export XZ_DEFAULTS="-T 0" 即可。 (2认同)