tar 可以并行归档文件吗?

tar 可以并行归档文件吗?

我正在尝试通过 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

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

关于此主题的其他问题重点压缩或者创建多个档案(由于目录结构的原因,这在我的情况下并不容易)。似乎大多数人都忘记了您甚至可以在不压缩的情况下创建 tarball。

答案1

由于tar存档的性质是按顺序存储输出中的文件,因此除非创建多个存档,否则无法并行化该过程。

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

相关内容