런타임 시 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 ...

관련 정보