CPU 및 대역폭 비용을 최소화하면서 대용량 파일을 재 동기화하는 방법은 무엇입니까?


13

원격으로 백업 할 계획 인 500GB 파일이 있습니다. 파일이 자주 바뀝니다. 데스크톱에서 서버로 다시 동기화하겠습니다. 둘 다 rsync 클라이언트 또는 서버를 실행할 수 있습니다.

이에 대한 올바른 명령은 무엇입니까? 내가 sofar을 시도한 사람들은 영원히 또는 단순히 이상한 행동을 취하고 있습니다.

예와 결과 :

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

작동하는 것 같지만 두 번만 수행하면 (?!) 또한 천천히.

위의 명령은 두 컴퓨터 모두에서 체크섬을 수행합니까, 아니면 보내는 컴퓨터에서만 체크섬을 수행합니까? 그렇지 않으면 맞습니까?


자주 변경되는 파일은 무엇입니까? 당신은 rsync로 매우 실망스러운 결과를 얻을 것입니다 ...
Ignacio Vazquez-Abrams

다른 제안? Dropbox의 독점적 인 클라이언트가 일부 앱으로 할 수 있어야합니다. 참조 forums.dropbox.com/topic.php?id=17631
요한 Allgoth

답변:


12

rsync는 전체 파일을 읽거나 체크섬해야하고 500GB를 읽는 데 SSD 또는 다른 곳에 저장하지 않는 한 오랜 시간이 걸리기 때문에 결코 빠르지는 않습니다.

시도하십시오 rsync -vhz --partial --inplace <file/server stuff>.

-c타임 스탬프를 사용하여 파일이 변경되었는지 확인하지 않고 전송하기 전에 전체 파일을 체크섬한다는 것을 의미합니다. 이는 전체 파일을 두 번 읽는 것을 의미합니다. 타임 스탬프가 변경되지 않으면 ( touch필수) rsync를 실행하기 전에 파일 만 사용할 수 있습니다 .

이 스크립트가 작성되어 있지 않은 경우 추가 --progress하여 실행할 때 수행되는 작업을 확인할 수 있습니다.


예, '큰 파일 == 긴 처리'를 알고 있습니다. 그러나 나는 여기에 뭔가 빠져 있다고 생각합니다. 위의 주석을 참조하십시오. Dropbox가 그렇게 할 수 있다면 그렇게 할 수 있습니다! =) 나는 말하지 않았지만 -c없이 시도했지만 여전히 느립니다.
Johan Allgoth

2
또한 --inplace의미합니다--partial

2

동기화되지는 않지만 수행하려는 작업에 따라 더 잘 작동 할 수 있습니다. 나는 비슷한 백업 작업을하고 있었고 확실히 빨랐습니다.

netcat을 사용하여 한 시스템에서 다른 시스템으로 타르 파이프를 만드십시오.

소스 머신에서 :

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

tarball을 생성하면 권한과 시간이 유지되고 포트 45454에서 netcat으로 파이프됩니다.

백업 머신에서

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X = 소스 머신의 로컬 IP 주소

나에게 이것은 잘 작동했다. rsync를 사용하여 2-3MB / s가 아닌 유선 LAN을 통해 25-30MB / s로 실행되었습니다. 단점은 동기화되지 않고 소스에있는 내용의 사본 만 만드는 것입니다. 설명과 같은 백업의 경우-500GB 파일 하나-아주 잘 작동 할 수 있습니다.

권한 문제를 피하기 위해 루트로이 작업을 수행해야하거나 운이 좋을 수도 있습니다.

FWIW, 나는 처음에 이것에 대해 배웠습니다 : http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/


1
tarrsync전송할 작은 파일이 많은 경우 보다 낫습니다 . ncSSH 암호화의 오버 헤드 (피어 투 피어 연결에는 필요하지 않음)가 없기 때문에 빠른 연결을 사용 하면 전송 속도도 향상됩니다.
jornane

0

네트워크 오버 헤드를 피하려면 SSH가 아닌 rsync 프로토콜을 사용하십시오. 기본적으로 rsync는 hostname : / path와 같은 URL을 지정할 때 SSH를 사용합니다. 더 빠른 rsync 프로토콜을 사용하려면 rsync : // hostname / path를 대신 사용하십시오. 이 방법으로 tar / netcat을 사용한 트릭이 필요하지 않습니다. rsync 델타 알고리즘이 훨씬 빠릅니다.

자세한 내용은 https://gergap.wordpress.com/tag/rsync/ 를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.