불안정한 연결을 통해 두 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 ...