여러 rsync 프로세스를 병렬로 시작하는 bash 스크립트가 있습니다. 동시 하위 프로세스 수를 제한하고 싶지만 전체 스크립트를 직렬화하고 싶지는 않습니다.
다음은 현재 스크립트의 단순화된 버전입니다.
#!/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
나는 xargs
믿는다--max-procs
해결책이 될 수 있습니다하지만 내 스크립트와 통합하는 방법을 모르겠습니다. 이것이 가능합니까, 아니면 더 좋은 방법이 있습니까?
답변1
ssh "$1" "find /var/images -type f -print0" |
xargs --null --replace --max-procs=X rsync "${1}:{}" /my/destination
이 작업을 수행해야 합니다.