规范答案
关于rdiff的帖子,librsync 2.0.1
是对命令功能说明的不错的阅读方法,因此我在下面引用了该内容,以保留其他答案的内容。
重要的是,要设法更好地理解rdiff的三个步骤来更新文件:rdiff手册页上所讨论的签名,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在新文件中找到匹配的块,然后计算增量。
与xdelta或常规文本diff相比,rdiff增量通常不那么紧凑,并且生成速度也较慢。如果在计算增量时可能同时存在旧文件和新文件,则xdelta通常会生成小得多的文件。如果要比较的文件是纯文本,则GNU diff通常是一个更好的选择,因为该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之间的rdiff增量。将此增量称为D。A将增量发送给B。
- B应用增量来重新创建A2。如果A1和A2包含相同字节的运行,则rdiff应该可以节省大量空间。
资源