Rsync çakışmaları nasıl çözer?


14

Makine A ve makine B paylaşımlarının önceden eşzamanlı olarak bir dizini varsa rsyncve A bir dosyayı değiştirir ve B aynı dosyayı değiştirirse ve siz rsyncA'dan B'ye değişirse ne olur?

Belki de birleşme çatışması gibi bir şey gitmidir?

Çatışma kolayca çözülebilir mi?

Yanıtlar:


25

Rsync çakışmaları çözmeye çalışmaz. Bu onun işi değil. Rsync, her iki tarafın da dosyayı değiştirdiğini tespit etmenin bir yolu bile yoktur, çünkü herhangi bir ortak ata hakkında bilgi yoktur.

Varsayılan seçeneklerle, kaynak dosya, hedef dosyanın üzerine yazarak koşulsuz olarak hedefe kopyalanır. Bu seçenekle -u, kaynak dosya yalnızca hedef dosya kaynak dosyadan eksik veya daha eskiyse kopyalanır. Bu seçenekle --ignore-existing, kaynak dosya yalnızca hedef dosya yoksa kopyalanır.

Çakışmaları tespit etmek istiyorsanız, dosyaların en son ne zaman senkronize edildiğini bilen bir araca ihtiyacınız vardır, böylece {destination = eski sürüm, kaynak = yeni sürüm} ile {destination = yeni sürüm 1, kaynak = yeni sürüm 2'yi ayırt edebilir }. Tam olarak bunu yapan Unison kullanın . Unison iki yönlü bir senkronizördür: son senkronizasyondan bu yana değiştirilen dosyayı dosyanın değiştirilmediğine kopyalar. Her iki taraf da değiştirilmemişse veya her iki taraf aynı şekilde değiştirilmişse hiçbir şey yapmaz. Her iki taraf da farklı şekillerde değiştirildiyse, size söyler ve atlamanızı, bir yönde kopyalamayı veya diğer yönde kopyalamanızı sağlar.

Otomatik çakışma çözümü, örneğin otomatik birleştirme istiyorsanız (mümkünse her zaman manuel birleştirme gereken durumlar vardır), git gibi bir revizyon kontrol sistemi kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.