tar 可以并行归档文件吗?

Xio*_*iov 4 tar parallelism

我正在尝试通过 Amazon S3 在多台机器上移动一个大目录的一部分(约 40 GiB 和约 800 万个文件),由于需要保留符号链接,我将目录打包,然后上传结果文件,而不是直接同步到 S3。

大多数文件已经压缩,所以我没有用 gzip 或 bzip 压缩存档。我的命令是

tar --create --exclude='*.large-files' --exclude='unimportant-directory-with-many-files' --file /tmp/archive.tar /directory/to/archive
Run Code Online (Sandbox Code Playgroud)

在运行它时,我注意到tar在八核机器上似乎只使用一个内核。我的印象是,基于该核心的挂钩、低平均负载 (~1) 以及我所看到的统计数据iostat,正如我所期望的那样,此操作实际上是受 CPU 限制的,而不是受磁盘限制的。由于它很慢(约 90 分钟),我有兴趣尝试并行化 tar 以利用额外的内核。

关于这个主题的其他任何问题的焦点压缩创建多个存档(其中,由于目录结构,不容易在我的情况)。似乎大多数人忘记了您甚至可以在不压缩的情况下创建 tarball。

Jul*_*ier 8

由于tar归档文件的性质,它顺序地将文件存储在输出中,除非您制作多个归档文件,否则无法并行化该过程。

请注意,操作的瓶颈可能是硬盘驱动器。出于这个原因,即使您确实将任务拆分为两个或更多进程,除非它们在不同的驱动器上运行,否则它不会运行得更快。