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

Der Einsatz von MySQL Triggern und worauf zu achten ist

Inhaltsverzeichnis Über Trigger Verwendung von Tr...

So installieren Sie die Linux-Onlinesoftware gcc online

Befehle zur Linux-Onlineinstallation: yum install...

Natives JS-objektorientiertes Tippspiel

In diesem Artikel wird der spezifische Code des o...

MYSQL METADATA LOCK (MDL LOCK) Theorie und Sperrtyptest

Inhaltsverzeichnis MYSQL METADATA LOCK (MDL LOCK)...

Best Practices für MySQL-Upgrades

MySQL 5.7 fügt viele neue Funktionen hinzu, wie z...

So erzwingen Sie die vertikale Anzeige auf mobilen Seiten

Ich habe kürzlich bei der Arbeit eine mobile Seit...

Lombok-Implementierung JSR-269

Vorwort Einführung Lombok ist ein praktisches Too...

So verwenden Sie Verbindungen der Physik-Engine in CocosCreator

Inhaltsverzeichnis Mausgelenk Mausgelenk AbstandG...