如何执行多个 tar 命令以进行并行执行?

Gir*_*ara 6 solaris tar

我想使用 shell 脚本 tar 四个包含大量小文件的目录。由于这个脚本执行时间太长,所以我想使用 shell 脚本使这 4 个 tar 命令并行运行,希望我可以更好地利用可用资源。

我目前使用的命令:

tar cf - /ebs/uat/uatappl | gzip -c > /ebs/backup/uatappl.tar.gz
tar cf - /ebs/uat/uatcomn | gzip -c > /ebs/backup/uatcomn.tar.gz
tar cf - /ebs/uat/uatora | gzip -c > /ebs/backup/uatora.tar.gz
tar cf - /ebs/uat/uatdata | gzip -c > /ebs/backup/uatdata.tar.gz
Run Code Online (Sandbox Code Playgroud)

Rom*_*nov 7

您可以像这样将所有焦油放在背景中:

tar cf - /ebs/uat/uatappl | gzip -c > /ebs/backup/uatappl.tar.gz &
tar cf - /ebs/uat/uatcomn | gzip -c > /ebs/backup/uatcomn.tar.gz &
tar cf - /ebs/uat/uatora | gzip -c > /ebs/backup/uatora.tar.gz &
tar cf - /ebs/uat/uatdata | gzip -c > /ebs/backup/uatdata.tar.gz &
Run Code Online (Sandbox Code Playgroud)

但要注意你必须有足够的处理器能力和快速的磁盘,否则并发会使总执行时间比连续执行时间长

  • @AndrewHenle 通常很容易看出瓶颈在哪里。只要所有`gzip`进程都能够消耗100%的CPU使用率,那么存储就足够快了。另一方面,如果存储太慢,那么您可以免费使用更好的压缩(`gzip -9` 或 `xz`),而不需要更多的绝对时间来完成整个工作。 (3认同)
  • +1 因为它会比连续的慢。消费级硬件通常就是这种情况;当代服务器级硬件可能是另一回事。 (2认同)