정식 답변
rdiff 게시물 과 관련 하여 librsync 2.0.1
은 명령 기능 설명을 잘 읽었으므로 아래 내용을 참조 하여이 답변에 내용을 보존합니다.
파일을 업데이트하기위한 rdiff 3 단계에 대한 이해를 높이는 것이 중요 합니다. rdiff 매뉴얼 페이지 에서 설명한대로 signature , delta 및 patch 또한 rdiff
GitHub에서 참조하고 인용하는 데 도움이되는 명령 예제 스크립트를 찾았습니다 .
본질적으로 ...
- "시작"또는 기본 파일 [
file1
]을 사용하여 서명 파일 을 작성하십시오.
- 일반적으로 기본 / 원본 파일보다 훨씬 작습니다.
- 서명 파일 을 사용하면
file2
기본 파일과 유사하지만 다른 파일 ( 예 : 최근에 업데이트 된 파일 )과 비교하여 두 파일 간의 차이점 만 포함 하는 델타 파일 을 만듭니다.
- "차이 만"또는 델타 파일 을 사용하여 기본 파일 [
file1
] 과 비교 file2
하여 두 파일과 일치하는 다른 파일 [ ] 의 변경 사항이 포함 된 새 파일을 생성하십시오 .
rdiff signature file1 signature-file ## signature base file1
rdiff delta signature-file file2 delta-file ## delta differences file2
rdiff patch file1 delta-file gen-file ## compare delta to file1 to create matching file2
rdiff-example.sh
# $ rdiff --help
# Usage: rdiff [OPTIONS] signature [BASIS [SIGNATURE]]
# [OPTIONS] delta SIGNATURE [NEWFILE [DELTA]]
# [OPTIONS] patch BASIS [DELTA [NEWFILE]]
# Options:
# -v, --verbose Trace internal processing
# -V, --version Show program version
# -?, --help Show this help message
# -s, --statistics Show performance statistics
# Delta-encoding options:
# -b, --block-size=BYTES Signature block size
# -S, --sum-size=BYTES Set signature strength
# --paranoia Verify all rolling checksums
# IO options:
# -I, --input-size=BYTES Input buffer size
# -O, --output-size=BYTES Output buffer size
# create signature for old file
rdiff signature old-file signature-file
# create delta using signature file and new file
rdiff delta signature-file new-file delta-file
# generate new file using old file and delta
rdiff patch old-file delta-file gen-file
# test
diff -s gen-file new-file
# Files gen-file and new-file are identical
rdiff는 네트워크 델타를 계산하고 적용하는 프로그램입니다. rdiff 델타는 이진 파일 간의 델타로, 결과 (또는 새) 파일을 생성하기 위해 기본 (또는 오래된) 파일을 자동으로 편집하는 방법을 설명합니다.
대부분의 diff 프로그램과 달리 librsync는 diff가 계산 될 때 두 파일 모두에 액세스 할 필요가 없습니다. 델타를 계산하려면 이전 파일의 짧은 "서명"과 새 파일의 전체 내용이 필요합니다. 서명에는 이전 파일의 블록에 대한 체크섬이 포함됩니다. 이 체크섬을 사용하여 rdiff는 새 파일에서 일치하는 블록을 찾은 다음 델타를 계산합니다.
rdiff 델타는 일반적으로 xdelta 또는 일반 텍스트 diff보다 크기가 작고 생성 속도가 느립니다. 델타를 계산할 때 이전 파일과 새 파일을 모두 사용할 수 있으면 xdelta는 일반적으로 훨씬 작은 파일을 생성합니다. 비교할 파일이 일반 텍스트 인 경우 사람이 diff를보고 부정확 한 일치로 적용 할 수 있으므로 GNU diff가 일반적으로 더 나은 선택입니다.
rdiff는 두 파일을 동시에 표시하는 것이 편리하지 않은 경우 자체적으로 제공됩니다. 이에 대한 한 가지 예는 두 파일이 별도의 시스템에 있으며 차이점 만 전송하려는 경우입니다. 또 다른 예는 파일 중 하나가 아카이브 또는 백업 미디어로 이동되어 서명 만 남은 경우입니다.
상징적으로
signature(basis-file) -> sig-file
delta(sig-file, new-file) -> delta-file
patch(basis-file, delta-file) -> recreated-file
패턴 사용
rsync 알고리즘의 전형적인 적용은 파일 A2를 머신 A에서 유사한 파일 A1을 갖는 머신 B로 전송하는 것입니다. 다음과 같이 수행 할 수 있습니다.
- B는 A1의 rdiff 서명을 생성합니다. 이 S1을 호출하십시오. B는 서명을 A로 보냅니다. 서명은 일반적으로 설명하는 파일보다 훨씬 작습니다.
- A는 S1과 A2 사이의 거리 차이를 계산합니다. 이 델타 D라고 부릅니다. A는 델타를 B로 보냅니다.
- B는 델타를 적용하여 A2를 다시 만듭니다. A1과 A2에 동일한 바이트 수가 포함 된 경우 rdiff는 공간을 크게 절약해야합니다.
출처