GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Dateien und -Verzeichnisse mit rsync synchron halten

Administratoren (oder normale Benutzer) müssen häufig Dateien sichern oder sie zwischen mehreren Orten (einschließlich lokal und remote) synchron halten, ohne jedes Mal alle Dateien auf dem Ziel zu übertragen und zu überschreiben. Eines der nützlichsten Tools im Gürtel eines Systemadministrators für diese Art von Aufgabe ist rsync .

Der rsync Das Tool kann rekursiv durch eine Verzeichnisstruktur navigieren und einen zweiten Speicherort mit neuen/geänderten/entfernten Dateien aktualisieren. Es überprüft, ob Dateien am Ziel vorhanden sind, bevor es sie sendet, wodurch Bandbreite und Zeit für alles, was es überspringt, gespart werden. Auch rsync bietet die Möglichkeit, eine Verzeichnisstruktur (oder sogar eine einzelne Datei) mit einem anderen Ziel, lokal oder remote, zu synchronisieren. Um dies effizient zu erreichen, überprüft es standardmäßig die Änderungszeiten von Dateien. Es kann auch eine schnelle Hash-Prüfung von Dateien auf der Quelle und dem Ziel durchführen, um festzustellen, ob eine neue Kopie übertragen werden muss oder nicht, was möglicherweise erheblich Zeit und Bandbreite spart.

[ Das könnte Ihnen auch gefallen: 5 erweiterte rsync-Tipps für Linux-Systemadministratoren ]

Da es standardmäßig mit den meisten Linux-Distributionen geliefert wird, sollte es einfach sein, loszulegen. Dies gilt auch für macOS, *BSDs und andere Unix-ähnliche Betriebssysteme. Arbeiten mit rsync ist einfach und kann auf der Befehlszeile, in Skripten verwendet werden, und einige Tools packen es in eine nette Benutzeroberfläche zum Verwalten von Aufgaben.

Auf der Befehlszeile rsync wird im Allgemeinen mit einer Handvoll Parametern aufgerufen, um zu definieren, wie es sich verhalten soll, da es sich um ein flexibles Tool handelt. In seiner einfachsten Form rsync kann angewiesen werden sicherzustellen, dass eine Datei an einem Ort an einem zweiten Ort in einem Dateisystem identisch sein sollte.

Beispiel:

# rsync file1.txt file2.txt

Normalerweise ist es wünschenswert, rsync zu übergeben ein paar Parameter, um sicherzustellen, dass sich die Dinge so verhalten, wie ein Mensch es erwarten würde. Übergeben von Parametern wie -a denn „archive“ ist weit verbreitet, da es sich um einen „Meta-Parameter“ handelt, der automatisch eine Handvoll anderer für Sie aufruft. Das -a entspricht -rlptgoD , die sich wie folgt aufschlüsseln:

  • -r :Verzeichnisse rekursiv durchlaufen (anstatt nur an Dateien im aktuellen Verzeichnis zu arbeiten)
  • -l :Symlinks als neue Symlinks kopieren
  • -p :Berechtigungen beibehalten
  • -t :Änderungszeiten beibehalten
  • -g :Gruppeneigentum beibehalten
  • -o :Benutzereigentum beibehalten (das nur Superuser beim Umgang mit Dateien anderer Benutzer vorbehalten ist)
  • -D :Gerätedateien kopieren

Oft funktioniert dies so, wie es der Nutzer wünscht, und es sind keine wesentlichen Änderungen erforderlich. Einige davon könnten jedoch den Anforderungen eines Nutzers widersprechen, daher könnte es die richtige Antwort sein, sie in die spezifischen Funktionen aufzuschlüsseln.

Weitere bemerkenswerte Optionen sind:

  • -n :Führen Sie den Befehl trocken aus, ohne Dateien zu übertragen
  • --list-only :Nur die Liste der Dateien anzeigen, die rsync übertragen würde
  • -P :Fortschritt pro Datei anzeigen
  • -v :Gesamtfortschritt anzeigen und Informationen zu jeder Datei ausgeben, wenn sie abgeschlossen ist
  • -u :Aktualisierung der Zieldateien überspringen, wenn sie neuer als die Quelle sind
  • -q :Ruhemodus. Nützlich für die Aufnahme in Skripts, wenn die Terminalausgabe nicht erforderlich ist
  • -c :Verwenden Sie einen Prüfsummenwert, um zu bestimmen, welche Dateien übersprungen werden sollen, anstatt die Änderungszeit und -größe
  • --existing :Nur Dateien aktualisieren, aber keine neuen erstellen, die fehlen
  • --files-from=FILE :Listenquelldateien aus einer Textdatei lesen
  • --exclude=PATTERN :Verwenden Sie MUSTER, um Dateien von der Synchronisierung auszuschließen
  • --exclude-from=FILE :Wie oben, aber aus einer Datei gelesen
  • --include=PATTERN :Wird auch verwendet, um die Ausschlussregeln zu negieren
  • --include-from=FILE :Wie oben, aber aus einer Datei gelesen

Mein persönlicher Standardsatz von Parametern für rsync am Ende -avuP sein (Archivieren, ausführliche Ausgabe, nur neue Dateien aktualisieren und den Fortschritt der durchgeführten Arbeit anzeigen).

Quelle und Ziele

Quelle und Ziel der Synchronisierung sind Dateien und Verzeichnisse. Auch rsync bietet die Funktionalität zur Interaktion mit Remote-Systemen über SSH, wodurch der Benutzer keine Netzwerkfreigaben einrichten muss, um Dateien von einem Ort zum anderen synchronisieren zu können. Das bedeutet, dass Sie rsync einfach skripten können Jobs nach der Konfiguration von SSH-Schlüsseln an beiden Enden, wodurch die Notwendigkeit entfällt, sich für die Remote-Dateisynchronisierung manuell anzumelden.

Beispiel:

Hier die Syntax aufschlüsseln:

  • Ausführen von rsync Befehl
  • Mit dem -avuP oben beschriebenen Parameter
  • Zum Kopieren des lokalen Dokumentenverzeichnisses
  • Mit steve als Benutzer auf dem entfernten System
  • Wo das entfernte System Dateiserver genannt wird und ist unter diesem Namen erreichbar
  • Und der relative Pfad von Steves Zuhause wird nach : angezeigt - und in diesem Fall bedeutet es, dies in Steves Home-Verzeichnis selbst zu legen

Dadurch wird alles aus Steves Ordner „Dokumente“ in das Verzeichnis „Dokumente“ auf dem Remote-System kopiert, wobei nur Dateien aktualisiert werden, die sich geändert haben oder neu sind. Einmaliges Ausführen ist ausreichend (bis es neue Änderungen gibt). Wenn Sie es unmittelbar danach erneut ausführen, sollte es relativ dieselbe Ausgabemenge erzeugen, aber viel schneller sein, da alle Dateien übersprungen werden.

[ Das API-Eigentümerhandbuch:7 Best Practices effektiver API-Programme ] 

Abschluss

Es gibt viele nützliche Möglichkeiten, die Leistungsfähigkeit von rsync zu nutzen . Es ist oft so einfach, es einmalig über die Befehlszeile auszuführen, um eine Reihe von Dateien zu kopieren, ohne sich Gedanken über das Kopieren von bereits am Ziel vorhandenen Dingen machen zu müssen. Erstellen Sie ein Skript und fügen Sie es zu cron hinzu Jobs, und das Experimentieren mit verschiedenen Parametern hilft dem durchschnittlichen Systemadministrator, noch mehr Ziele zu erreichen.


Linux
  1. So komprimieren Sie Dateien und Verzeichnisse unter Linux (mit Beispielen)

  2. Finden Sie Dateien und Verzeichnisse in Linux wie ein Profi

  3. Linux – Standard- und/oder gemeinsame Verzeichnisse auf Unix/Linux-Betriebssystemen?

  4. Verzeichnisse in beide Richtungen mit Rsync synchronisieren?

  5. Kopieren Sie Dateien mit SCP und Rsync

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

So komprimieren Sie Dateien und Verzeichnisse unter Linux

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

Finden Sie Dateien und Verzeichnisse unter Linux ganz einfach

Grundlagen der Linux-Befehlszeile – Arbeiten mit Dateien und Verzeichnissen