In my opinion, you should look at limiting the number of simultaneous connections directly on the server side, so you do not need to do anything extreme on the client side:
(1) If you run rsync in daemon mode, an option exists for rsyncd.conf max connections.
(2) Linux iptables connlimit limit . , rsync , ssh, sshd.
(3) rsync script, -server, rsync , . script , N . .
#!/bin/bash
N=5
mutex_hold() {
while ! mkdir /var/lock/rsync/mutex 2>/dev/null; do
sleep 1
done
}
mutex_release() {
rmdir /var/lock/rsync/mutex
}
if [[ "$1" = "--server" ]]; then
shopt -s nullglob
while mutex_hold && A=(/var/lock/rsync/[0-9]*) && [[ "${#A[@]}" -ge "$N" ]] && mutex_release; do
sleep 1
done
touch /var/lock/rsync/$$
mutex_release
rsync.bin "$@"
rm -f /var/lock/rsync/$$
else
rsync.bin "$@"
fi
, script , , . - .. .
, , , lockfiles , ( ) .
, .
, , script .