Sincronizzazione dei file in tempo reale


22

Esiste uno strumento disponibile per sincronizzare i file tra due o più server Linux immediatamente dopo aver scritto il file sul disco? Il rsynccomando non mi soddisfa su questo, perché se imposto rsyncin cron, il tempo minimo che posso impostare è di 1 minuto, ma ne ho bisogno in tempo reale.


2
Hai bisogno della sincronizzazione da un server di lettura-scrittura a uno o più server di sola lettura o hai bisogno della sincronizzazione bidirezionale (con propagazione in entrambe le direzioni) o n-way? Se vuoi due / n-way, come risolvi i conflitti?
Gilles 'SO- smetti di essere malvagio'

Risposte:


18

Non l'ho usato da solo, ma ne ho letto di recente. C'è un demone chiamato lsyncd, che presumo faccia esattamente quello che ti serve.

Leggi di più QUI


2
IMHO, questa dovrebbe essere la risposta accettata. lsyncdusa inotifye dovrebbe essere il più veloce a livello di fs. Maggiori informazioni su github.com/axkibe/lsyncd . Da quella pagina: Lsyncd guarda un'interfaccia di monitoraggio degli eventi degli alberi delle directory locali (inotify o fsevents). Aggrega e combina gli eventi per alcuni secondi, quindi genera uno (o più) processi per sincronizzare le modifiche. Per impostazione predefinita, questo è rsync. Lsyncd è quindi una soluzione live mirror leggera, relativamente facile da installare che non richiede nuovi filesystem o blocchi di dispositivi e non ostacola le prestazioni del filesystem locale.
SACHIN GARG,

5

Inotify-tools

Fornire un'interfaccia a inotify, composta da:

inotifywait

Questo comando blocca semplicemente gli eventi inotify, rendendolo appropriato per l'uso negli script di shell. Può guardare qualsiasi set di file e directory e può guardare ricorsivamente interi alberi di directory.

inotifywatch

Questo comando raccoglie le statistiche sull'utilizzo del filesystem e genera i conteggi di ciascun evento inotify.


4

Sincronizzazione dei file in tempo reale tra più server in modalità multi master

Esiste un buon strumento chiamato lsyncdper sincronizzare i file tra più server in tempo reale. Qui ho provato con due server.

Host: Server1 e Server2

Sistema operativo utilizzato: CentOS 7

Installa i pacchetti seguenti su entrambi i server.

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

genera ssh-key in entrambi i server e aggiungi al authorized_keysfile. [aggiungi la chiave pubblica di server1 al server2 authorized_keyse la chiave pubblica di server2 al authorized_keysfile server1 ]

Configurazione Server1

Apri /etc/lsyncd.confe commenta la configurazione predefinita usando --all'inizio della riga e aggiungi la configurazione seguente al file.

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"
  }
}

Modifica l'IP di destinazione nel targetparametro.

È possibile modificare il delayparametro in base alle proprie esigenze. Qui è impostato 1 secondo.

Ora crea la directory di registro.

# mkdir -p /var/log/lsyncd

Abilita il lsyncdservizio per l'avvio automatico.

# systemctl enable lsyncd.service

Avvia il servizio.

# systemctl start lsyncd.service

Configurazione Server2

Seguire la stessa configurazione di Server1 e modificare l' targetIP.

Ora la sincronizzazione è impostata.

Puoi controllare l'attività da tailf /var/log/lsyncd/lsyncd.log

Grazie a MelBurslan per il suo suggerimento.


Il parametro ritardo nella funzione impostazioni non è valido. Utilizzare invece la variabile maxDelays . Ho implementato questo strumento. È davvero potente.
Hasanuzzaman Sattar

3

La sincronizzazione potrebbe essere un'opzione. È estremamente veloce, il trasferimento è crittografato e ci sono client per più piattaforme. Utilizza "inotify" per sincronizzare istantaneamente i file modificati.


2

Dovresti avvicinarti a questo con una soluzione di tipo filesystem in cluster: una semplice sincronizzazione tra le due macchine non ti darà una risposta in tempo reale.


In realtà quei server sono in AWS. Quindi non possiamo ottenere un ambiente cluster! Non c'è altro modo?
Sourav,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.