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

So verwenden Sie erweitertes rsync für große Linux-Backups

Es scheint klar zu sein, dass Backups in der Linux-Welt immer ein heißes Thema sind. Im Jahr 2017 bot David Both den Lesern von Opensource.com Tipps zur „Verwendung von rsync zur Sicherung Ihres Linux-Systems“ und Anfang des Jahres veröffentlichte er eine Umfrage, in der er uns fragte:„Was ist Ihre primäre Sicherungsstrategie für das /home-Verzeichnis in Linux? " In einer weiteren Umfrage in diesem Jahr fragte Don Watkins:„Welche Open-Source-Backup-Lösung verwenden Sie?“

Meine Antwort ist rsync. Ich mag rsync wirklich! Es gibt viele große und komplexe Tools auf dem Markt, die für die Verwaltung von Bandlaufwerken oder Speicherbibliotheksgeräten erforderlich sein können, aber ein einfaches Open-Source-Befehlszeilentool ist möglicherweise alles, was Sie brauchen.

Basis-rsync

Ich habe das binäre Repository-System für eine globale Organisation verwaltet, die ungefähr 35.000 Entwickler mit mehreren Terabyte an Dateien hatte. Ich habe regelmäßig Hunderte von Gigabyte an Daten gleichzeitig verschoben oder archiviert. Rsync wurde verwendet. Diese Erfahrung gab mir Vertrauen in dieses einfache Werkzeug. (Also, ja, ich benutze es zu Hause, um meine Linux-Systeme zu sichern.)

Der grundlegende rsync-Befehl ist einfach.

rsync -av SRC DST

Tatsächlich werden die in jedem Tutorial gelehrten rsync-Befehle für die meisten allgemeinen Situationen gut funktionieren. Angenommen, wir müssen eine sehr große Datenmenge sichern. So etwas wie ein Verzeichnis mit 2.000 Unterverzeichnissen, die jeweils zwischen 50 GB und 700 GB an Daten enthalten. Das Ausführen von rsync auf diesem Verzeichnis könnte enorm viel Zeit in Anspruch nehmen, insbesondere wenn Sie die Prüfsummenoption verwenden, die ich bevorzuge.

Die Leistung wird wahrscheinlich leiden, wenn wir versuchen, große Datenmengen zu synchronisieren oder über langsame Netzwerkverbindungen zu synchronisieren. Lassen Sie mich Ihnen einige Methoden zeigen, die ich verwende, um eine gute Leistung und Zuverlässigkeit sicherzustellen.

Erweitertes rsync

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Eine der ersten Zeilen, die erscheint, wenn rsync läuft, ist:„sending incremental file list“. Wenn Sie nach dieser Zeile suchen, werden Sie viele Fragen sehen, die Dinge stellen wie:Warum dauert es ewig? oder warum scheint es aufzulegen?

Hier ist ein Beispiel, das auf diesem Szenario basiert. Nehmen wir an, wir haben ein Verzeichnis namens /storage die wir auf einem externen USB-Gerät sichern möchten, das unter /media/WDPassport gemountet ist .

Wenn wir /storage sichern möchten auf ein externes USB-Laufwerk, könnten wir diesen Befehl verwenden:

rsync -cav /storage /media/WDPassport

Das c Die Option weist rsync an, Dateiprüfsummen anstelle von Zeitstempeln zu verwenden, um geänderte Dateien zu ermitteln, und dies dauert normalerweise länger. Um die Datei /storage aufzuschlüsseln Verzeichnis, ich synchronisiere nach Unterverzeichnis, indem ich die Suche verwende Befehl. Hier ist ein Beispiel:

find /storage -type d -exec rsync -cav {} /media/WDPassport \;

Das sieht in Ordnung aus, aber wenn sich Dateien in /storage befinden Verzeichnis, sie werden nicht kopiert. Wie können wir also die Dateien in /storage synchronisieren? ? Es gibt auch eine kleine Nuance, bei der bestimmte Optionen dazu führen, dass rsync die . synchronisiert Verzeichnis, das das Stammverzeichnis des Quellverzeichnisses ist; das bedeutet, dass die Unterverzeichnisse zweimal synchronisiert werden, und das wollen wir nicht.

Um es kurz zu machen, die Lösung, für die ich mich entschieden habe, ist ein "doppelt inkrementelles" Skript. Dadurch kann ich ein Verzeichnis aufschlüsseln, zum Beispiel /home aufschlüsseln in die Home-Verzeichnisse der einzelnen Benutzer oder in Fällen, in denen Sie mehrere große Verzeichnisse haben, z. B. Musik oder Familienfotos.

Hier ist ein Beispiel meines Skripts:

HOMES="alan"
DRIVE="/media/WDPassport"

for HOME in $HOMES; do
     cd /home/$HOME
     rsync -cdlptgov --delete . /$DRIVE/$HOME
     find . -maxdepth 1 -type d -not -name "." -exec rsync -crlptgov --delete {} /$DRIVE/$HOME \;
done

Der erste rsync-Befehl kopiert die Dateien und Verzeichnisse, die er im Quellverzeichnis findet. Die Verzeichnisse bleiben jedoch leer, sodass wir sie mit find durchlaufen können Befehl. Dies geschieht durch Übergeben des d -Argument, das rsync mitteilt, das Verzeichnis nicht zu rekursieren.

-d, --dirs                  transfer directories without recursing

Der fund Der Befehl übergibt dann jedes Verzeichnis einzeln an rsync. Rsync kopiert dann den Inhalt der Verzeichnisse. Dies geschieht durch Übergeben des r -Argument, das rsync anweist, das Verzeichnis zu rekursieren.

-r, --recursive             recurse into directories

Dadurch bleibt die von rsync verwendete Inkrementdatei auf einer überschaubaren Größe.

Die meisten rsync-Tutorials verwenden das a (oder archivieren ) Bequemlichkeitsargument. Dies ist eigentlich ein zusammengesetztes Argument.

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

Die anderen Argumente, die ich übergebe, wären in a enthalten gewesen; das sind l , p , t , g , und o .

-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)

Das --delete Die Option weist rsync an, alle Dateien auf dem Ziel zu entfernen, die auf der Quelle nicht mehr vorhanden sind. Auf diese Weise ist das Ergebnis eine exakte Vervielfältigung. Sie können auch einen Ausschluss für den .Papierkorb hinzufügen Verzeichnisse oder vielleicht der .DS_Store von MacOS erstellte Dateien.

-not -name ".Trash*" -not -name ".DS_Store"

Seien Sie vorsichtig

Eine letzte Empfehlung:rsync kann ein destruktiver Befehl sein. Glücklicherweise boten seine durchdachten Entwickler die Möglichkeit, „Trockenläufe“ durchzuführen. Wenn wir das n einbeziehen Option, zeigt rsync die erwartete Ausgabe an, ohne Daten zu schreiben.

rsync -cdlptgovn --delete . /$DRIVE/$HOME

Dieses Skript ist auf sehr große Speichergrößen und Situationen mit hoher Latenz oder langsamen Verbindungen skalierbar. Ich bin mir sicher, dass es noch Raum für Verbesserungen gibt, wie es immer der Fall ist. Wenn Sie Vorschläge haben, teilen Sie diese bitte in den Kommentaren mit.


Linux
  1. So verwenden Sie systemd-nspawn für die Linux-Systemwiederherstellung

  2. So verwenden Sie den Linux-Rsync-Befehl (Remote-Synchronisierung).

  3. Wie verwende ich den Rsync-Befehl unter Linux?

  4. Wie verwende ich rsync vom Windows-PC zum Remote-Linux-Server?

  5. Felsenstabiles Dateisystem für große Dateien (Backups) für Linux

Wie ich Cockpit für die Linux-Serververwaltung meines Hauses verwende

So suchen Sie unter Linux nach Listening Ports (Ports in use)

So wählen Sie ein Backup-Tool für Linux aus

Linux – Wie benutzt man Swap Space nur für Notfälle?

So verwenden Sie den More-Befehl in Linux, um große Textdateien zu lesen

So verwenden Sie kdump für die Linux-Kernel-Crash-Analyse