Gerçek zamanlı dosya senkronizasyonu


22

Dosyayı diske yazdıktan hemen sonra iki veya daha fazla linux sunucusu arasında dosyaları senkronize etmek için herhangi bir araç var mı? rsyncBen set çünkü eğer komut, bu konuda bana uygun değil rsynccron, ben ayarlayabilirsiniz asgari süresi 1 dakikadır, ama gerçek zamanlı olarak buna ihtiyacım var.


2
Bir okuma-yazma sunucusundan bir veya daha fazla salt okunur sunucuya senkronizasyon mu gerekiyor, yoksa iki yönlü senkronizasyona mı (her iki yönde yayılımla) mı yoksa n yoluna mı ihtiyacınız var? İki / n-yol istiyorsanız, çatışmaları nasıl çözersiniz?
Gilles 'SO- kötü olmayı kes

Yanıtlar:


18

Kendim kullanmadım ama son zamanlarda okuyun. lsyncdTam da ihtiyacınız olan şeyi yaptığını düşündüğüm bir arka plan programı var .

BURADA daha fazla bilgi edinin BURAYA


2
IMHO, bu kabul edilen cevap olmalı. lsyncdkullanır inotifyve fs düzeyinde en hızlı olmalıdır. Daha fazlası için github.com/axkibe/lsyncd . Bu sayfadan: Lsyncd, yerel dizin ağaçları olay izleme arabirimini (inotify veya fsevents) izler. Olayları birkaç saniyeliğine toplar ve birleştirir ve ardından değişiklikleri senkronize etmek için bir (veya daha fazla) işlemi oluşturur. Varsayılan olarak bu rsync'dir. Bu nedenle Lsyncd, yeni dosya sistemleri gerektirmeyen veya aygıtları engellemeyen ve yerel dosya sistemi performansını engellemeyen nispeten kolay kurulabilen hafif bir canlı ayna çözümüdür.
SACHIN GARG

5

Inotify-araçları

Aşağıdakilerden inotifyoluşan bir arayüz sağlayın :

inotifywait

Bu komut yalnızca inotify olaylarını engeller ve kabuk komut dosyalarında kullanılmasını uygun hale getirir. Herhangi bir dosya ve dizin kümesini izleyebilir ve tüm dizin ağaçlarını özyineli olarak izleyebilir.

inotifywatch

Bu komut, dosya sistemi kullanım istatistiklerini toplar ve her inotify olayının sayılarını çıkarır.


4

Çoklu ana modda birden çok sunucu arasında gerçek zamanlı dosya senkronizasyonu

lsyncdDosyaları gerçek zamanlı olarak birden çok sunucu arasında senkronize etmek için iyi bir araç vardır . Burada iki sunucu ile denedim.

Ana makineler: Sunucu1 ve Sunucu2

Kullanılan İşletim Sistemi: CentOS 7

Her iki sunucuya da aşağıdaki paketleri yükleyin.

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

her iki sunucuda ssh-key oluşturun ve authorized_keysdosyaya ekleyin . [sunucu1'in ortak anahtarını sunucu2'lere ve sunucu2'nin authorized_keysortak anahtarını sunucu1'in authorized_keysdosyasına ekleyin ]

Sunucu1 yapılandırması

Satırın başında /etc/lsyncd.confkullanarak varsayılan yapılandırmayı açın ve yorum yapın --ve aşağıdaki yapılandırmayı dosyaya ekleyin.

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

targetParametredeki hedef IP'yi değiştirin .

Değişebilirsin delayşartının gibi parametreyi. Burada 1 saniye ayarlanır.

Şimdi günlük dizinini oluşturun.

# mkdir -p /var/log/lsyncd

lsyncdHizmeti otomatik olarak başlatacak şekilde etkinleştirin .

# systemctl enable lsyncd.service

Hizmeti başlatın.

# systemctl start lsyncd.service

Server2 Yapılandırması

Sunucu1 ile aynı yapılandırmayı izleyin ve targetIP'yi değiştirin .

Şimdi senkronizasyon ayarlandı.

Etkinliği şuradan kontrol edebilirsiniz: tailf /var/log/lsyncd/lsyncd.log

MelBurslan'a önerisi için teşekkürler.


Ayarlar işlevi altındaki gecikme parametresi geçerli değil. Kullanım maxDelays yerine değişken. Bu aracı uyguladım. Gerçekten güçlü.
Hasanuzzaman Sattar

3

Senkronizasyon bir seçenek olabilir. Son derece hızlı, aktarım şifreli ve birden çok platform için istemciler var. Değiştirilen dosyaları anında senkronize etmek için "inotify" kullanır.


2

Buna kümelenmiş bir dosya sistemi türü çözümü ile yaklaşmanız gerekir - iki makine arasındaki basit bir senkronizasyon size gerçek zamanlı yanıt vermez.


Aslında bu sunucular AWS'de. Bu yüzden bir küme ortamı elde edemeyiz! Başka yolu yok mu?
Sourav

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.