전체 재전송없이 부분적으로 만 변경된 큰 파일을 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.