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

Wie implementiert Vue die Kommunikation zwischen Komponenten?

Inhaltsverzeichnis 1. Kommunikation zwischen Vate...

Einfaches Anwendungsbeispiel für MySQL-Trigger

Dieser Artikel veranschaulicht anhand von Beispie...

Zwei Tools zum Teilen des Bildschirms im Linux-Befehlszeilenterminal

Hier sind zwei Terminal-Split-Screen-Tools: scree...

Implementierung der virtuellen React-Liste

Inhaltsverzeichnis 1. Hintergrund 2. Was ist eine...

Zusammenfassung der allgemeinen Docker-Befehle und Tipps

Installationsskript Ubuntu / CentOS Es scheint ei...

Detailliertes Tutorial zur Installation von mysql5.7.18 auf centos7.3

1 Überprüfen Sie die Linux-Distributionsversion [...

Detailliertes Beispiel zum Ändern des Linux-Kontokennworts

Passwort des persönlichen Kontos ändern Wenn norm...

Natives JavaScript-Message Board

In diesem Artikel wird der spezifische JavaScript...

Schritte der MySQL-Methode zum Bestimmen, ob es sich um eine Teilmenge handelt

Inhaltsverzeichnis 1. Problem 2. Lösung Option 1:...

Beispiele für JavaScript-Entschüttelungen und Drosselung

Inhaltsverzeichnis Stabilisierung Drosselung: Ant...