Realisierung der Echtzeit-Dateisynchronisierung zwischen Linux-Servern

Realisierung der Echtzeit-Dateisynchronisierung zwischen Linux-Servern

Anwendungsszenarien

Bei vorhandenen Servern A und B gilt: Wenn sich der Inhalt im angegebenen Verzeichnis von Server A (z. B. /home/paul/rsync/ ) ändert (Hinzufügungen, Löschungen, Modifikationen und Attributänderungen), werden diese Änderungen in Echtzeit mit dem Zielverzeichnis von Server B (z. B. /home/paul/rsync/ ) synchronisiert.

Datenspiegelungs-Backup-Tool Rsync

Rsync ist ein extrem schnelles und flexibles Tool zum Kopieren von Dateien. Es unterstützt das Kopieren von Dateien zwischen dem lokalen Computer und einem Remote-Server. Rsync verwendet einen Delta-Übertragungsalgorithmus, der nur die Unterschiede zwischen den Quell- und Zieldateien übertragen muss, wodurch der Verbrauch der Netzwerkbandbreite und der Zeitaufwand für das Kopieren erheblich reduziert werden. Rsync wird hauptsächlich zur Datensicherung und -spiegelung verwendet.

Rsync verwendet einen schnellen Prüfalgorithmus, um durch Vergleichen von Änderungen der Dateigröße oder des letzten Änderungszeitpunkts zu bestimmen, ob eine Datei synchronisiert werden muss.

Es gibt zwei Möglichkeiten, mit Rsync eine Verbindung zu einem Remote-Host herzustellen: mit SSH oder mit dem Rsync-Daemon. Um eine Remote-Dateisicherung durchzuführen, wird hier Rsync verwendet.

Installation und Bedienung von Rsync

Installieren Sie Rsync

Führen Sie Folgendes in den Terminals von Server A bzw. Server B aus:

sudo yum installiere rsync

Nachdem die Installation abgeschlossen ist, werden Sie feststellen, dass sich die rsync-Konfigurationsdatei in etc/rsyncd.conf befindet. Diese Datei wird benötigt, wenn der Daemon zur Synchronisierung verwendet wird und wird hier nicht vorgestellt.

Konfigurieren Sie die passwortfreie Anmeldung zwischen den Servern A und B

Server A führt aus:

ssh-keygen
ssh-copy-id IP-Adresse von Server B

Quell- und Zielverzeichnisse erstellen

Auf Server A:

mkdir /home/paul/rsync

Auf Server B:

mkdir /home/paul/rsync

Erstellen Sie eine Testdatei auf Server A

echo "Hallo vom Server A" >> /home/paul/rsync/demo.txt

Dateiübertragungsbefehl ausführen

Führen Sie auf Server A Folgendes aus:

# (1)
rsync -avPz --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync
# (2)
rsync -avPz --delete --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync

Sie werden feststellen, dass demo.txt auch im Verzeichnis /home/paul/rsync auf Server B erscheint.

Befehlsanalyse:

(1) Kopieren Sie die Dateien im Verzeichnis /home/paul/rsync auf Server A nach /home.paul/rsync auf Server B (192.168.100.130).

(2) Vergleichen Sie die Dateien auf der Zielseite mit den Dateien auf der Quellseite. Wenn die Datei auf der Zielseite auf der Quellseite nicht vorhanden ist, löschen Sie die Datei auf der Zielseite.

Probleme mit Rsync

Rsync ist nur ein Tool zum Kopieren von Dateien und kann das Hinzufügen, Löschen und Ändern von Quelldateien nicht überwachen. Nachdem Sie Änderungen auf der Quellseite vorgenommen haben, müssen Sie den Befehl rsync ausführen, um die Änderungen mit der Zielseite zu synchronisieren.

Rsync muss vor jeder Synchronisierung das gesamte Verzeichnis scannen. Wenn sich im Quellverzeichnis viele Dateien befinden, kann der Scanvorgang lange dauern.
Um die Anforderungen der Echtzeitüberwachung zu erfüllen, müssen wir ein weiteres Tool einführen: inotify.

Tool zur Überwachung von Dateisystemereignissen inotify

inotify-tools bietet eine einfache Schnittstelle zu inotify. Es handelt sich um eine in der Programmiersprache C geschriebene Bibliothek, die auch Befehlszeilentools enthält.

Für eine ausführliche Einführung in inotify-tools klicken Sie bitte auf: https://github.com/rvoicilas/inotify-tools/wiki

Installation von inotify-tools

Führen Sie für das CentOS7-System die folgenden Schritte in der folgenden Reihenfolge aus:

yum install -y epel-release
yum --enablerepo=epel installiere inotify-tools

Verwenden Sie den Befehl inotifywait, um Ereignisse zu überwachen

Das Überwachungsskript lautet wie folgt (inotifywait-rsync.sh):

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e ändern, löschen, erstellen, attrib /home/paul/rsync/ | beim Lesen der Datei
Tun
rsync -avPz --progress /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
rsync -avPz --delete /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
echo "${file} wurde synchronisiert"
Erledigt

Parameteranalyse

  • -m überwacht weiter. Wenn dieser Parameter nicht gesetzt ist, wird inotifywait nach der Überwachung eines Ereignisses beendet.
  • -r Verzeichnisse rekursiv überwachen.
  • -q Leiser Modus, weniger Ausgabe drucken.
  • --timefmt gibt das Ausgabeformat der Zeit an.
  • --format Gibt das Format der Ereignisausgabe an.
  • -e Legen Sie den zu überwachenden Ereignistyp fest. Hier überwachen wir Ergänzungen, Löschungen, Modifikationen und Metadatenänderungen.

Für jede ausgelöste Abhörzeit führt inotifywait den Code zwischen „do“ und „done“ aus. Hier rufen wir den zuvor erwähnten Befehl rsync auf, um Dateien zu synchronisieren.

Fügen Sie das Überwachungsskript zu crontab hinzu

crontab -e
* * * * * sh /home/paul/inotifywait-rsync.sh

Verweise
https://rsync.samba.org
https://github.com/rvoicilas/inotify-tools/wiki

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Linux verwendet den Befehl scp, um Dateien auf den lokalen Computer zu kopieren und lokale Dateien auf den Remote-Server zu kopieren
  • So löschen Sie Ordner, Dateien und Dekomprimierungsbefehle auf Linux-Servern
  • So verwenden Sie Samba zum Erstellen eines gemeinsamen Dateidienstes auf einem Linux-Server
  • So laden Sie Dateien zwischen einem Linux-Server und einem Windows-System hoch und herunter
  • Python liest Dateien auf einem Linux-Server
  • So laden Sie Dateien und Ordner über SSH auf einen Linux-Server hoch
  • So übertragen Sie Dateien zwischen Linux lokal und Server und schreiben Befehle zum Hoch- und Herunterladen von Dateien auf Linux-Server
  • Automatische Dateisynchronisierung zwischen zwei Linux-Servern

<<:  Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort vergessen?

>>:  jQuery implementiert einen einfachen Kommentarbereich

Artikel empfehlen

21 Best Practices zur MySQL-Standardisierung und -Optimierung!

Vorwort Jede gute Angewohnheit ist ein Schatz. Di...

Der Unterschied zwischen HTML-Iframe und Frameset_PowerNode Java Academy

Einführung 1. <iframe>-Tag: Ein Iframe ist ...

Beispielerklärung für langsame MySQL-Abfragen und -Protokolle

1. Einleitung Durch Aktivieren des Slow Query Log...

MySql legt die angegebenen Benutzerdatenbankansichtsabfrageberechtigungen fest

1. Neuen Benutzer anlegen: 1. Führen Sie eine SQL...

Schwebendes Menü, kann einen Bildlaufeffekt nach oben und unten erzielen

Der Code kann noch weiter optimiert werden. Aus Z...

Javascript zum Umschalten durch Klicken auf das Bild

Durch Klicken Bilder zu wechseln, ist im Leben ei...

JavaScript verwendet setTimeout, um einen Countdown-Effekt zu erzielen

Um die Fähigkeit zum Schreiben von nativem JavaSc...

Tiefgreifendes Verständnis der Verwendung von r2dbc in MySQL

Einführung MySQL sollte eine sehr häufig verwende...