rsync ile çift yönlü senkronizasyon


11

Ben rsync ile iki yönlü veya iki yönlü senkronizasyon kurmaya çalışıyorum. Benim durumumda sadece B'den A'ya senkronize ederken dosyaları silmem gerekiyor. Yani, rsync'i aşağıdaki gibi iki kez çalıştırmayı düşünüyordum:

rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/

Bu sorun bu sorun, ben rsync (AB) çalıştırdıktan hemen sonra olacağını rsync (B-> A) çalıştırdığınızda, eşitleme arasında oluşturulan herhangi bir yeni dosya da kaldırılır olmasıdır.

Bir zaman damgasını yalnızca bu tarih / saatten önce oluşturulduysa silme koşulu olarak belirleyebileceğim bir yol var mı?

Güncellenmiş:

Unison bir çözüm olduğunu anlıyorum, ancak her iki uca da kurulum yapmak için unison sorunu gerekiyor. Uzak bir sunucu ile senkronize ediyorum ve uzak uca unison yükleyemiyorum.


Burada daha fazla cevap veren çok benzer bir soru var: stackoverflow.com/questions/2936627/two-way-sync-with-rsync
Thomas

Yanıtlar:


4

Tam olarak bu görev için tasarlanmış osync'i deneyebilirsiniz. Bir keresinde işi yapmak için karmaşık bir rsync komut dizisi ayarladım, ancak şimdi osync kullanıyorum.

https://github.com/deajan/osync

Rsync'i dahili olarak kullanır, bu nedenle rsync'i kullanabileceğiniz her durum için uygun olmalıdır.


1
Teşekkürler, Mark. Kendi soruma cevap vermek üzereydim. Ben bsync ( github.com/dooblem/bsync ) adında çok benzer bir komut dosyası buldum, temelde senkronizasyon ihtiyacı olan şeyi anlamak için diff kullanıyor. Senkronizasyonda herhangi bir çakışma beklemediğim için, bu komut dosyasını biraz değiştiririm, böylece bir cron işi ile çalışırken sessizce çalışır.
Raza

7

rsynckarşılaştığınız nedenlerden dolayı bu görev için yanlış araçtır. Bunun yerine unisonşunları kullanmayı düşünün :

unison A/ B/

Bunu ilk çalıştırdığınızda, benzersiz olan Ave benzersiz olan dosyaları tanımlar B. Ayrıca her iki yerde bulunanları işaretler ve hangisinin üzerine yazılacağını belirlemenizi ister.

Bunu çalıştırmak dahaki sefere gelen değişiklikleri kopyalar Aiçin Bve ayrıca Büzere Amanuel çözünürlük için her iki yerde de değiştirilmiştir herhangi bir dosya işaretleme.

mkdir A B
date > A/date
who > B/who
unison A/ B/
# Lots of output from unison, showing synchronisation

ls A
date    who
ls B
date    who

date > A/date
unison A/ B/
# Lots of output from unison, showing synchronisation

unisonVarsayımları tanımlayarak ve böylece senkronizasyon sırasında sorulan soruların sayısını azaltarak süreci otomatikleştirmeye yardımcı olan bir dizi yararlı bayrak vardır .


3
Unison çözüm gördüm, ancak bununla ilgili sorun her iki uca da kurulmam gerekiyor. Bir uzaktan kumandayla senkronize ediyorum ve uzak uca unison yükleyemiyorum.
Raza

1
OP'ye yardımcı olmuyor, ama birlik arıyordum . Ben orada bkz Debian paketleri ve SSH taşıma destekler.
Ted

1
Sunucu üzerine kurmadan hep bir ağızdan kullanmak Bu cevap içinde yorumları görmek için olasılık vardır stackoverflow.com/a/2936711 hangi noktaları i3vi3v.wordpress.com/2013/01/09/...
Thomas

-1

Gerçekten ihtiyacınız olan şey Rclone . Rclone, bulut depolama (kutu, dropbox, nextcloud, ftp vb.) Ve yerel depolama için rsync'dir.


2
Sorunlarını çözmek için rclone'u nasıl kuracak ve kullanacaklar ?
Jeff Schaller

3
rclone henüz çift yönlü senkronizasyona sahip değil.
sean
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.