중간에 차이가 발생할 때 rsync 패치 파일은 어떻게 되나요?

중간에 차이가 발생할 때 rsync 패치 파일은 어떻게 되나요?

나는 rsync그것이 어떻게 작동하는지 알고 있습니다. 내 의심은 rsync소스 파일과 대상 파일 간의 서로 다른 부분을 패치하는 방법입니다 .

서로 다른 청크를 계산한 후 해당 부분을 대상으로 보냅니다. 이제 대상이 파일 중간에 어떻게 삽입합니까? 파일 중간에 바이트를 삽입(추가)할 수 없기 때문에 이후의 모든 바이트도 이동합니까?

추정 소스:ABCDEFGH

목적지:ABCEFGH

rsync가 D가 누락되었음을 감지했다고 가정하면 이를 대상으로 보냅니다. 파일에 D를 삽입하는 방법보다. C 다음에 EFGH를 삽입하고 이동하는지 또는 다른 효율적인 작업을 수행하는지 여부. 어떤 프로그래밍 언어에서도 파일을 바꾸지 않고는 파일 중간에 바이트를 삽입할 수 없기 때문입니다.

답변1

나는 rsync대부분의 기본 파일 시스템 제한 내에서 작동하는 C 구현에 대해서만 알고 있습니다. 즉, "사이에 있는" 데이터는 파일 크기가 정확히 동일한 경우에만 업데이트될 수 있습니다.

그러나 그것은 중요하지 않습니다. 보안상의 이유로 rsync변경된 데이터의 복사본을 만들어 복사본으로 이동하세요.그것이 완전한 경우에만. rsync일반적으로 기존 파일을 업데이트하려는 시도가 없으며 프로세스가 중단되면 손상될 위험이 있습니다.

--delay-updates업데이트 프로세스는 매뉴얼 페이지를 확인해야 합니다 . 이 옵션을 사용하면 한 번의 실행으로 변경해야 하는 모든 파일이 완료될 때까지 이름 바꾸기를 연기한 다음 이름을 바꿀 수 있습니다.

관련 정보