Kurallı Yanıt
Mesaj rdiff ile ilgili olarak , librsync 2.0.1
komut işlevselliği açıklama için iyi bir okuma, bu yüzden başka bir şey yoksa içeriği bu cevaba korumak için aşağıda başvurdum.
Bir dosyayı güncellemek için rdiff'in üç adımını iyi bir şekilde anlamaya çalışmak önemlidir : rdiff man sayfasında bahsedildiği gibi imza , delta ve yama . Ayrıca rdiff
GitHub'da hangi referans ve alıntı yapacağım yararlı bir komut örneği komut dosyası buldum .
Esasen ...
- "Başlangıç" veya temel dosya [
file1
] ile ve ondan
bir imza dosyası oluşturursunuz
- Bu genellikle temel / orijinal dosyanın kendisinden çok daha küçüktür
- İle imza dosyası başka bir dosyadan [karşı karşılaştırmak
file2
(sizin baz dosyasına benzer ama farklı] son güncellenen örneğin ) ve bir oluşturmak delta dosyasını iki dosya arasındaki farkları içeren
- "Yalnızca farklılıklar" veya delta dosyasını kullanın ve ikisiyle eşleşen
file1
diğer dosyadaki [ file2
] değişiklikleri içeren yeni bir dosya oluşturmak için temel dosyanızla [ ] karşılaştırın .
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, ağ deltalarını hesaplamak ve uygulamak için bir programdır. Rdiff deltası, bir ikili (veya eski) dosyanın bir sonuç (veya yeni) dosya oluşturmak için otomatik olarak nasıl düzenlenebileceğini açıklayan ikili dosyalar arasındaki bir deltadır.
Çoğu diff programından farklı olarak, librsync, diff hesaplandığında her iki dosyaya da erişim gerektirmez. Bir deltanın hesaplanması, eski dosyanın kısa bir "imzasını" ve yeni dosyanın tüm içeriğini gerektirir. İmza, eski dosyanın blokları için sağlama toplamları içerir. Bu sağlama toplamlarını kullanarak, rdiff yeni dosyada eşleşen blokları bulur ve deltayı hesaplar.
rdiff deltaları genellikle xdeltas veya normal metin farklarından daha az kompakt ve daha yavaş üretilir. Delta hesaplanırken hem eski hem de yeni dosyaların bulunması mümkünse, xdelta genellikle çok daha küçük bir dosya üretir. Karşılaştırılan dosyalar düz metinse, farklar insanlar tarafından görülebildiğinden ve hatalı eşleşmeler olarak uygulandığından GNU farkı genellikle daha iyi bir seçimdir.
rdiff, her iki dosyayı aynı anda sunmak uygun olmadığında kendi başına gelir. Bunun bir örneği, iki dosyanın ayrı makinelerde olması ve yalnızca farkları aktarmak istediğinizdir. Başka bir örnek, dosyalardan birinin medyaya arşiv veya yedekleme ortamına taşınması ve yalnızca imzasının bırakılmasıdır.
Sembolik
signature(basis-file) -> sig-file
delta(sig-file, new-file) -> delta-file
patch(basis-file, delta-file) -> recreated-file
Kalıpları kullan
Rsync algoritmasının tipik bir uygulaması, bir A2 dosyasını bir makine A'dan benzer bir dosya A1'e sahip bir makine B'ye aktarmaktır. Bu şöyle yapılabilir:
- B, A1'in rdiff imzasını oluşturur. Buna S1 deyin. B imzayı A'ya gönderir. (İmza genellikle açıkladığı dosyadan çok daha küçüktür.)
- A, S1 ve A2 arasındaki rdiff deltasını hesaplar. Bu delta D deyin. A deltayı B'ye gönderir.
- B, A2'yi yeniden oluşturmak için deltayı uygular. A1 ve A2'nin aynı bayt çalışmalarını içerdiği durumlarda, rdiff önemli ölçüde yer tasarrufu sağlamalıdır.
kaynak