Rsync'in dosyaları karşılaştırmasının birkaç yolu vardır - yetkili kaynak, rsync algoritması açıklamasıdır: https://www.andrew.cmu.edu/course/15-749/READINGS/required/cas/tridgell96.pdf . Wikipedia makale rsync da çok iyidir.
Yerel dosyalar için rsync, meta verileri karşılaştırır ve dosyayı kopyalamaya gerek yok gibi görünüyorsa, boyut ve zaman damgası kaynak ile hedef arasında eşleştiği için daha fazla görünmez. Eşleşmiyorlarsa, dosya cp'dir. Bununla birlikte, meta veriler eşleşiyorsa ancak dosyalar aslında aynı değilse ne olur? Sonra rsync muhtemelen amaçladığınız şeyi yapmadı.
Aynı boyuttaki dosyalar yine de değişmiş olabilir. Basit bir örnek, bir yazım hatasını düzelttiğiniz metin dosyasıdır - "teh" kelimesini "the" olarak değiştirmek gibi. Dosya boyutu aynı, ancak düzeltilen dosyanın zaman damgası daha yeni olacak. --size-only
"zamana bakmayın; boyut eşleşmeleri dosyaların eşleştiğini varsayarsa" diyor, bu durumda yanlış seçim olur.
Öte yandan, cp -r A B
dün yanlışlıkla büyük bir şey yaptığınızı , ancak zaman damgalarını korumayı unuttuğunuzu ve şimdi işlemi tersine yapmak istediğinizi varsayalım rsync B A
. Cp'ladığınız tüm bu dosyalar, dün gerçekten değiştirilmemiş olsalar bile dünün zaman damgasına sahiptir ve rsync varsayılan olarak tüm bu dosyaları kopyalayacak ve zaman damgasını da düne güncelleyecektir. --size-only
bu durumda arkadaşınız olabilir (yukarıdaki örnek modulo).
--ignore-times
dosyaların aynı değişiklik zamanına sahip olup olmadığına bakılmaksızın dosyaları karşılaştırmak için diyor. Yukarıdaki yazım hatası örneğini düşünün, ancak o zaman sadece yazım hatasını düzeltmekle kalmadınız touch
, aynı zamanda düzeltilmiş dosyanın orijinal dosyayla aynı değişiklik zamanına sahip olmasını sağladınız - sadece bu şekilde sinsi olduğunuzu varsayalım. Eh --ignore-times
dosyaların bir diff yapacak olsa boyut ve zaman maç.