실행 중 rsync의 최대 다운로드 속도 조정

실행 중 rsync의 최대 다운로드 속도 조정

불안정한 연결을 통해 두 Linux 시스템 간에 다운로드해야 합니다. Rsync가 가장 좋은 도구인 것 같지만 문제는 밤 동안 이 프로세스의 대역폭 속도 제한을 늘리고 싶다는 것입니다. 어떻게 해야 합니까?

이를 수행하는 방법에 대한 좋은 제안이 있습니까? 가장 좋은 아이디어는 특정 시간에 종료된 다음 시간을 확인하고 속도 제한을 조정하는 스크립트로 다시 시작하는 bash 스크립트를 갖는 것 같습니다.

항상 많은 rsync가 실행되고 있다고 가정할 수 있으므로 killall rsync가 작동하지 않습니다.

답변1

최신 버전에는 옵션이 rsync있습니다 --time-limit=MINS. 연결이 불안정해서 어쨌든 순환해야 한다고 말씀하셨습니다. 내 제안은 trickle연결 속도를 관리하고 rsync상태에 관계없이 매 시간 마다 강제로 다시 시작하는 데 사용하는 것입니다 .

#!/bin/bash
#
while :
do
    # Evening? Or day?
    time=$(date +%H%M)
    if [[ ${hour#0} -gt 2200 || ${hour#0} -lt 700 ]]
    then
        # After 10pm and before 7am
        up=100 down=10    # 100 KB/s up and 10 KB/s down
    else
        up=10 down=1      # 10 KB/s up and 1 KB/s down
    fi

    trickle -s -u $up -d $down -t 10 rsync -avzP --time-limit=60 /path/to/source/ remote:/path/to/destination/ && break

    # Take a breather
    sleep 60
done

이 예에서 시간을 06:59에 다시 확인하면 시간은 여전히 ​​6이므로 여전히 rsync최고 속도로 한 시간 동안 다시 시작됩니다. 효과적으로 이렇게 하면 오전 8시까지 더 큰 대역폭을 사용할 수 있으며, 예상보다 한 시간 후에 가능합니다.

원하는 대역폭 제한과 일치하도록 위/아래 값을 수정하세요. 초당 KB(킬로바이트) 단위이므로 보다 일반적인 인터넷 연결 속도(Mb)에서 변환하려면 적절한 계수 10으로 조정해야 합니다. 1Mb/s = 1000Kb/s = 100KB/s입니다.

--time-limit에 옵션이 없으면 rsync유틸리티를 사용하여 동일한 작업을 수행할 수 있습니다 timeout.

timeout 60m trickle ... rsync ...

관련 정보