컴퓨터 A(Mac OS X)에 cronjob을 통해 5분마다 실행되도록 설정된 bash 스크립트가 있습니다. 스크립트는 원격 컴퓨터 B(Gentoo Linux)에서 새 파일을 확인한 다음 모든 새 파일을 컴퓨터 A에 동기화합니다. 때로는 이 동기화(다운로드)로 인해 연결 속도가 3MB/s로 최대화되지만, 다른 경우에는 아마도 10%의 경우 10-50KB/s의 매우 낮은 속도로 다운로드됩니다. 내 인터넷 연결이 끊기거나 끊어지기 때문이 아니라고 100% 확신합니다. 그렇다면 이 문제의 원인은 무엇일까요?
이상한 점은 느린 rsync 작업이 항상 느리게 실행된다는 것입니다. 즉, 1GB 파일을 동기화하는 경우 1GB가 완전히 다운로드될 때까지 작업 전체 기간 동안 매우 느린 속도(10-50KB/s)로 동기화/다운로드됩니다. 이로 인해 CPU 로드나 네트워크와는 관련이 없고 오히려 스크립트나 다른 것과 관련이 있다고 믿게 됩니다.
내 스크립트는 다음과 같습니다.
# !/bin/sh
# Check if rsync has been timestampped and exit if it has
echo "Checking for local timestamp..." >> /Users/localuser/log/rsync.log
if [ -e /Users/localuser/scripts/.timestamp ]
then
echo "Local timestamp already exists, exiting..." >> /Users/localuser/log/rsync.log
exit
fi
# Timestamp rsync
echo "Local timestamp not found, continuing..." >> /Users/localuser/log/rsync.log
touch /Users/localuser/scripts/.timestamp
# Timestamp remote computer B
echo "Timestampping remote computer B" >> /Users/localuser/log/rsync.log
ssh remoteuser@remotecomputerb touch /home/remoteuser/finished/.timestamp
# Run rsync
echo "Starting rsync at $(date)" >> /Users/localuser/log/rsync.log
rsync -avzPL -e ssh remoteuser@remotecomputerb:/home/remoteuser/finished /share --log-file /Users/localuser/log/rsync.log
# Change permissions
echo "Changing permissions" >> /Users/localuser/log/rsync.log
chmod -Rf 775 /share
/usr/sbin/chown -Rf localuser:staff /share
# Delete sym links that are older than the remote computer B timestamp
echo "Deleting sym links on remote computer B" >> /Users/localuser/log/rsync.log
ssh remoteuser@remotecomputerb find /home/remoteuser/finished \! -newer /home/remoteuser/finished/.timestamp -type -l -delete
# Delete the rsync script timestamp
echo "rsync finished at $(date)" >> /Users/localuser/log/rsync.log
rm /Users/localuser/scripts/.timestamp
exit 0
답변1
이는 기본적으로 링크 정체부터 원격 시스템의 높은 CPU 사용량까지 모든 것일 수 있습니다. 이 기간 동안 모든 네트워크 장비에 장애가 발생할 수도 있습니다. 특히 SSH 포트를 폭격할 때. 하지만 네트워크 장비의 버퍼링 문제도 원인이 될 수 있습니다.
하지만 한 가지: 다음 번에는 rsync가 두 번 실행되는지 다시 확인하세요. 예, 이를 방지하기 위해 스크립트에 해결 방법을 만들었지만 아무도 모릅니다... 폴더가 읽기 전용일 수도 있고 파일 시스템이 이상하게 동작할 수도 있습니다...
따라서 올바르게 답변할 수 있는 정보가 충분하지 않다는 점을 이해하시기 바랍니다.
하지만rsync
, 이 사용 사례 사용을 중단하는 것이 좋습니다 . 이는 비효율적이며 오류가 발생하기 쉽습니다. 원하는 것은 폴더의 지속적인 동기화이므로 다음을 살펴보십시오.사물을 동기화. 지연 없이 동일한 개방성과 보안으로 더 잘 작동해야 합니다. (rsync는 일회성 및 주기적인 백업에는 적합하지만 지속적으로 폴더를 동기화하는 데에는 적합하지 않습니다.)