ssh "$1" "find /var/images -type f -print0" |
xargs --null --replace --max-procs=X rsync "${1}:{}" /my/destination
Deve fazer o truque.
Eu tenho um script bash que inicia vários processos de rsync em paralelo. Gostaria de limitar o número de processos filhos simultâneos, mas não serializar todo o script.
Aqui está uma versão simplificada do script atual:
#!/bin/bash
(
flock -n 200 || exit 0
{
for f in $(ssh $1 ls /var/images/)
do
rsync … &
done
wait
} &> /var/log/my.log
) 200>/var/lock/my.lockfile
Acredito que xargs
com --max-procs
possa ser uma solução , mas não consigo descobrir como integrar isso com meu script. Pode ser feito assim, ou existe uma maneira melhor?