Usando xargs
, você pode alcançar um certo paralelismo:
find . -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX
É o sinal -P 5
que limita o número de processos paralelos iniciados por xargs
a cinco, enquanto -n 1
é usado para executar o utilitário apenas com uma linha de entrada por vez. Com -I XX
dizemos que a linha de entrada, que será um caminho de diretório, deve ser substituída pela string XX
no comando.
xargs
imprimirá as invocações de tar
conforme forem executadas. Remova -t
para desativar isso.
Os nomes de caminho do diretório são transmitidos de find
com -print0
e recebidos por xargs
com -0
(ou seja, usando %code%
como delimitador) para permitir nomes possivelmente exóticos.
Como apontado em uma resposta em outra parte deste site :
Note that the bottleneck of the operation would likely be the hard drive. For that reason, even if you did split the task in two or more processes, it would not go faster unless they operate on different drives.