Solaris

如何執行多個 tar 命令以進行並行執行?

  • May 5, 2017

我想使用 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

您可以像這樣將所有焦油放在背景中:

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 &

但請注意,您必須有足夠的處理器能力和快速的磁碟,否則並發將使總執行時間比連續執行更長

&在命令行末尾添加 a 有什麼問題?

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 &

wait

wait將等待工作完成。

引用自:https://unix.stackexchange.com/questions/362768