부록:

부록:

매우 불안정한 인터넷 연결을 통해 파일을 어떻게 복사합니까?

때로는 연결이 끊어지고 때로는 한 컴퓨터 또는 다른 컴퓨터의 IP가 변경되고 때로는 둘 다 변경되지만 동적 DNS가 이를 포착합니다.

어떤 도구나 명령을 추천하시나요?

차이점을 복사하는 것만 으로도 꽤 좋다고 들었습니다 rsync. 하지만 이는 다시 시작하거나 잠시 시간을 두거나 cronjob을 수행하는 등 많은 작업을 의미합니다.

좀 더 간단하고 확실한 것이 있었으면 좋겠습니다.

부록:

여기에는 때때로 한 사이트에서 다른 사이트로 5GB보다 큰 일부 매우 큰 파일이 포함된 여러 디렉터리를 복사하는 작업이 포함됩니다. 복사한 후에는 둘 다 로컬로 다른 위치로 이동됩니다.

나는 네트워크 수준에서는 아무 것도 할 수 없고 그렇게 할 지식도 없습니다.

wget을 사용하기 위해 웹 서버를 설정하고 싶지 않습니다. 이것은 안전하지 않으며 우회 경로처럼 보입니다.

SSH 연결을 설정했고 이제 rsync가 두 시스템 모두에 이미 설치되어 있으므로 rsync를 수행할 수 있습니다(rsync 데몬을 작동 및 실행할 수 없습니다).

내가 어떻게 만들 수 있는지에 대한 조언SSH를 통한 스마트 rsync그러면 일시적으로 회선이 끊어지면 계속하려고 합니까? 그러나 SSH 연결이 끊어지면 rsync는 문제가 되지 않습니다. 그래서 이런 것(https://serverfault.com/questions/98745/) 작동하지 않을 수 있습니다:

while ! rsync -a .... ; do sleep 5 ; done

어떤 아이디어가 있나요?

감사합니다!

게리

답변1

좋아요, 제 경우에는 해결책을 찾았습니다. 나는 실제로 제안을 사용하고 있습니다while 루프. 이제 다음과 같이 보입니다.

while ! \
rsync -aiizP --append --stats . -e ssh [email protected]:./path/rfiles ; \
do now=$(date +"%T") ; echo · Error at $now · ; sleep 5 ; done

while 루프가 없으면 rsync를 수동으로 다시 시작해야 합니다. 이제 그것은 매력처럼 작동합니다.

재미있는 사실: 연결이 끊어진 지 10분 후에 오류가 발생하고 연결이 다시 시작되고 약 9분 후에 오류가 발생합니다! 그 동안 터미널 창에서는 아무 일도 일어나지 않습니다. 10분이라는 시간제한이 어디서 나오는지 궁금합니다.

도움을 주셔서 감사합니다.

게리

참고: 다음은 제가 받은 시간 초과 오류입니다(10분 후).

...
thedirectory/afile.ext
Read from remote host myhost.com: Operation timed out
rsync: writefd_unbuffered failed to write 16385 bytes [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (394 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-40/rsync/io.c(452) [sender=2.6.9]

답변2

나는 확실히 추천하고 싶습니다 rsync. rsync연결이 중단될 가능성이 있다고 생각될 때마다 파일을 복사합니다. 복제가 실패하면 간단히 다시 시작할 수 있다는 것을 알고 있습니다.

while성공할 때까지 자동으로 다시 시작해야 하는 경우 루프에 넣기가 쉽습니다.

답변3

rsync의 주요 문제점은 단일 파일로 계속할 수 없다는 것입니다. 복잡한 디렉토리 구조를 복사하려는 경우에는 괜찮지만, 예를 들어 단일 DVD 이미지를 복사하려는 경우에는 그다지 안정적이지 않습니다.

이 경우에는 wget을 사용합니다. 더 구체적으로,

wget -c -t 0 -T 10 http://....

특히 흥미로운 점은 단일 패킷 손실로 인해 도구가 효과적으로 정지/정지되는 일반적인 문제를 해결하는 20초 시간 제한입니다.

물론 원본에는 http 서버가 필요합니다. 이것이 비실용적이라면 다음과 같은 도구가 있습니다.

split

큰 파일을 작은 파일로 분할한 다음 rsync를 사용할 수 있습니다. 분할된 파일은 나중에 간단한 고양이로 다시 결합할 수 있습니다.

물론 성공할 때까지 rsync를 루프에서 실행할 수도 있습니다.

while ! rsync ...; do echo next try; done

댓글 뒤 확장

rsync 할 수 있는-partial플래그를 사용하여 파일을 계속 진행합니다 . @GregHewgill에게 감사드립니다! :-)

답변4

파일 복사 도구 수준에서 이 문제를 해결하려는 경우 rsync로 충분합니다. -aursync가 동일한 파일을 여러 번 동기화하려고 시도하지 않도록 옵션을 사용하십시오 . Rsync는 최소한 파일 목록을 교환하고 중단하기 전에 하나의 파일을 완전히 전송할 수 있는 한 진행됩니다. 이를 보장할 수 없는 경우 네트워크 수준 도구가 없으면 문제가 발생하게 됩니다.

나는 이 문제를 네트워크 수준에서 해결하는 것이 더 쉽고 더 자연스럽다고 생각합니다. 즉, 신뢰할 수 없는 네트워크 연결 위에 안정적인 네트워크 터널을 구축하는 것입니다. 몇년전에 사용했었는데바위정확히 이 목적을 위해 유지되지 않으며 최근에 컴파일하거나 사용해 본 적이 없지만 작동하지 않는 근본적인 이유는 없습니다. 보다이 공간교체.

관련 정보