SSH를 통한 rsync는 때때로 매우 느립니다. 때로는 대역폭을 사용합니다.

SSH를 통한 rsync는 때때로 매우 느립니다. 때로는 대역폭을 사용합니다.

컴퓨터 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는 일회성 및 주기적인 백업에는 적합하지만 지속적으로 폴더를 동기화하는 데에는 적합하지 않습니다.)

관련 정보