전체 재전송없이 부분적으로 만 변경된 큰 파일을 rsync가 업데이트 할 수 있습니까?


15

네트워크를 통해 전송하는 데 시간이 오래 걸리는 매우 큰 파일 이미지 파일 (몇 픽셀 차이 만)을 약간 변경하고 있습니다.

rsync가 파일의 차이점을 식별하고 네트워크를 통해 작은 차이 만 보내는 방법이 있습니까?


3
네트워크를 통해 복사 할 때 rsync기본적으로이 방식으로 작동합니다. 사소한 변경이 파일에 대한 사소한 변경이고 파일이 거의 동일한 버전의 링크 양쪽에 이미 존재하는 한, 전송 된 데이터는 총 파일 크기보다 훨씬 작아야합니다. 매뉴얼 페이지의 첫 번째 단락에서 : "이것은 델타 전송 알고리즘으로 유명합니다. 델타 전송 알고리즘은 소스 파일과 대상의 기존 파일 간의 차이 만 전송하여 네트워크를 통해 전송되는 데이터의 양을 줄입니다."
user4556274

아, 알겠습니다. 주석이 아니라 답변으로 게시해야합니다. rsync가 이런 식으로 작동한다는 것은 분명하지 않았지만 그 기대에 따라 파일이 예상보다 많이 변경되었다고 가정하고 그 이유를 살펴볼 것입니다. 이미지 압축 프로세스는 파일 전체에서 원시 바이트 값을 변경합니다.
David Parks 17 년

답변:


11

rsync델타 전송 알고리즘은 기본적으로이 작업을 수행합니다. rsync 맨 페이지 인용 :

기술

Rsync는 빠르고 다양한 파일 복사 도구입니다. 로컬로, 원격 쉘을 통해 다른 호스트로 또는 원격 rsync 데몬으로 /로부터 복사 할 수 있습니다. 여기에는 동작의 모든 측면을 제어하고 파일 세트의 매우 유연한 사양을 복사 할 수있는 많은 옵션이 있습니다. 델타 전송 알고리즘으로 유명합니다.이 기능은 소스 파일과 대상의 기존 파일 간의 차이 만 보내 네트워크를 통해 전송되는 데이터의 양을 줄입니다 . Rsync는 백업 및 미러링과 일상적인 사용을위한 향상된 복사 명령으로 널리 사용됩니다.

사용하지 않으려면 -W또는 --whole-file옵션 을 사용해야합니다 .

-W,-전체 파일

이 옵션은 rsync의 델타 전송 알고리즘을 비활성화하여 전송 된 모든 파일이 전체로 전송되도록합니다. 소스와 대상 시스템 사이의 대역폭이 디스크 대역폭보다 높을 때 (특히 "디스크"가 실제로 네트워크 파일 시스템 인 경우)이 옵션을 사용하면 전송 속도가 더 빠를 수 있습니다. 소스 및 대상이 로컬 경로로 지정되어 있지만 배치 작성 옵션이 적용되지 않는 경우에만 기본값입니다.

파일이 얼마나 많이 변경되었는지 알고 있다면 델타 블록 크기를 조정하여이 델타 전송 동작을 최적화 할 수도 있습니다.

-B, --block-size = BLOCKSIZE

이것은 rsync의 델타 전송 알고리즘에 사용 된 블록 크기를 고정 된 값으로 강제합니다. 일반적으로 업데이트되는 각 파일의 크기에 따라 선택됩니다. 자세한 내용은 기술 보고서를 참조하십시오.

알고리즘 자체에 대한 자세한 정보가 필요하면 여기에서 찾을 수 있습니다. Rsync 알고리즘


공정하게 말하면 맨 페이지에있는 복수의 "파일"형식은 모호합니다. "원본 파일과 기존 파일 간의 차이점 만 보내서 ..."개별 파일 모음을 의미하는 "파일"을 사용했습니다. rsync는 다른 (전체) 파일을 보냅니다. 이를 명확히해야합니다.
Russ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.