Herkes arasındaki farkları açıklayabilir mi
--checksum ve
--ignore-times rsync seçenekleri?
Benim anlayışım şu şekildedir:
--checksum
Dosya boyutu ve saati eşleşirse, dosyaların gerçekten aynı olup olmadığını görmek için her iki uçta bir sağlama toplamı yapar.
--ignore-times
Dosya zamanının her iki uçta aynı olup olmadığına bakılmaksızın her dosyayı 'Aktar'. Bir delta aktarım algoritmasını kullanmaya devam edeceğinden, bir dosya aslında aynıysa, hiçbir şey aktarılmaz.
Teknik fark bu, ama anlayabildiğim kadarıyla, bunlar aynı şeydir.
Yani, merak ettiğim:
- İki seçenek arasındaki pratik fark nedir?
- Hangi durumlarda diğerinden ziyade kullanırsın?
- Aralarında herhangi bir performans farkı var mı?
Normalde,
rsync dosyalar, kaynak ve hedef taraflarında aynı boyutlara ve zamanlara sahip olduğunda dosyaları atlar. Bu, genellikle önlenmesi iyi bir fikir olan bir sezgidir.
rsync Kaynak ve hedef taraflarında büyük olasılıkla aynı olan dosyaların içeriğini incelemek zorunda kalmadan.
--ignore-times anlatır
rsync Dosya-zaman-ve-boyutları sezgisel kapatmak ve böylece koşulsuz TÜM dosyaları kaynaktan hedefe aktarır.
rsync Daha sonra, kaynaktaki her dosyayı okumaya devam edecektir, çünkü ya delta aktarım algoritmasını kullanması gerekecek, ya da her dosyayı kendi başına göndererek
--whole-file seçenek belirtildi.
--checksum Ayrıca, dosya-kez-ve-boyutları sezgisel değiştirir, ancak burada zamanları yok sayar ve sadece boyutları inceler. Boyutu farklı olan kaynak ve hedef taraflarındaki dosyalar aktarılır, çünkü bunlar açıkça farklıdır. Aynı boyutta dosyalar checksummed (MD5 ile)
rsync sürüm 3.0.0+ veya önceki sürümlerde MD4 ile) ve farklı miktarlara sahip olduğu bulunanlar da aktarılır.
Kaynak ve hedef tarafların çoğunlukla aynı olduğu durumlarda,
--checksum Çoğu dosyanın her iki tarafta da kontrol edilmesine neden olur. Bu uzun zaman alabilir, ancak en büyük veri, özellikle de delta transfer algoritması kullanılıyorsa, tel üzerinden aktarılacaktır. Elbette, çok yavaş ağlarınız varsa ve / veya çok hızlı bir CPU'nuz varsa, bu sadece bir kazançtır.
--ignore-timesÖte yandan, ağ üzerinden daha fazla veri gönderecek ve tüm kaynak dosyaların okunmasına neden olacak, ancak en azından kaynak ve hedef CPU'lar üzerinde birçok kriptografik olarak güçlü hashları hesaplamak için ek yük getirmeyecektir. Bu seçeneğin daha iyi performans göstermesini beklerdim
--checksum Ağlarınız hızlı olduğunda ve / veya CPU'nuz nispeten yavaş.
Sanırım sadece kullanacağım
--checksum veya
--ignore-times bazı dosyaların içeriğinin bozuk olduğundan, ancak değişiklik sürelerinin değiştirilmediğinden şüphelenildiği bir hedefe dosya aktarıyor olsaydım. Muhtemelen başka kullanım durumları olsa da, herhangi bir seçeneği kullanmanın başka iyi bir sebebini düşünemiyorum.
Sağlama zaman damgası olmayan dosyaları eşitlemek için başka bir sistem kullanıyorsanız, sağlama toplamı da yararlıdır. Checksum, yalnızca farklı olan dosyaları aktarır VE eşleşecekleri şekilde tüm alıcılardaki zaman damgalarını günceller.
Bir ayrıntı: sağlama toplamı seçeneği bir dosyanın tamamını, diğer ucundaki tüm dosyayı denetler. Dosyalarınız biraz büyükse, bu tarz bir paralellik öldürür.
Ayrıca, büyük dosyalarınız varsa, büyük olasılıkla bir zaman aşımına girebilirsiniz.
--checksum, seninle değil gibi
-I.
itibaren
info rsync ile ilgili olarak
--checksum option - "Bir dosyanın aktarımı sırasında ortaya çıkan otomatik sağlama toplamı doğrulamasına ek olarak, bağlantının her iki tarafındaki tüm dosyaların toplam dosya denetlemesi bu yana, bu seçenek oldukça yavaş olabilir."
--ignore-times Bu seçenek muhtemelen kodlanmış tüm dosyalarda delta ile sonuçlanacak ve delta transfer algoritması (delta kodlama) en azından sağlama toplamı kadar yavaş olacaktır.
Rsync mi bilmiyorum
--ignore-times delta aktarımının hiçbir şekilde aktarılmamasıyla sonuçlanacağı durumlarda, "otomatik olarak aktarma sonrası doğrulamayı" önlemek için yeterince akıllıdır.
İçin
--ignore-times:
- Eğer rsync akıllı değilse (veya delta şifrelemesine güvenmiyorsa), kontrol (kontrol toplamı ve kodlama) iki kez yapılır.
- Delta kodlamasının 128 bitlik MD4 sağlama toplamından çok daha yavaş olması da söz konusu olabilir.
Her ikisi de
--checksum ve
--ignore-times "oldukça yavaş" olacak ama
--ignore-times muhtemelen daha yavaştır (yukarıdaki 2 olasılıktan dolayı).
İyi soru - uygulamada herhangi bir performans farkı bulursanız lütfen gönderin.