Kann mir jemand sagen, was das macht?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Löscht es bkp01
und offbk2
und sendet ein Protokoll an offbkp01.log
?
Kann mir jemand sagen, was das macht?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Löscht es bkp01
und offbk2
und sendet ein Protokoll an offbkp01.log
?
Antworten:
Um dies in Teile zu zerlegen, gibt es zwei Hauptabschnitte, gefolgt von einer Zusammenfassung und Anmerkungen:
rsync
Befehl:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
Befehl:rsync
- Ich gehe davon aus, dass dies keiner Erklärung bedarf (wird aber auf Anfrage bereitgestellt).-uva
- Eine Reihe von Einzelzeichenoptionen (kurze und lange Form):
-u
--update
- teilt rsync mit, dass alle Änderungen nur für Dateien am Ziel gelten sollen, die das gleiche Alter (und unterschiedliche Größen) oder älter als die Dateien in der Quelle haben. Das heißt, rsync sollte nur die Änderungen von der Quelle weitergeben, die das Ziel aktualisieren würden , aber keine Änderungen vornehmen, die dazu führen würden, dass eine Zieldatei zu einer älteren Version wird.
Es gibt einige Ausnahmen. Unterschiede im Typ (z. B. eine ist eine Datei, die andere ist ein Verzeichnis) führen unabhängig vom Datum zu einer Aktualisierung. Symlinks und andere spezielle Dateien ignorieren diese Option. Dies hat vor allem keinen Einfluss darauf, welche Dateien gelöscht werden.
-v
--verbose
- Erhöht die Menge an Informationen, die rsync während der Ausführung druckt. Ohne dies druckt rsync (fast?) Nichts. Wenn diese Option unverändert ist, teilt Ihnen rsync mit, welche Dateien übertragen werden, und fügt am Ende eine Zusammenfassung hinzu. Mehr v
s erhöhen die gedruckten Informationen, obwohl in der Manpage angegeben ist, dass mehr als zwei v
s nur beim Debuggen verwendet werden sollten. -a
--archive
- Dies entspricht mehreren anderen Optionen ( -rlptgD
), die zusammen verpackt sind. Wie der lange Name schon sagt, können Sie auf diese Weise schnell viele gängige Optionen für die Archivierung von Dateien und Verzeichnissen festlegen. Es wird:-r
--recursive
- Weist rsync an, Verzeichnisse rekursiv zu kopieren. Ohne diese oder die speziellere -d
--dirs
Option würde rsync einfach alle gefundenen Verzeichnisse überspringen (und Sie in der Ausgabe darüber informieren). -l
--links
- Wenn die Quelle ein Symlink ist, erstellen Sie einen Symlink auf dem Ziel. Abhängig von anderen Optionen können Symlinks andernfalls übersprungen oder in eine vollständig separate Kopie umgewandelt werden (dh ein echtes Verzeichnis mit Inhalten (oder eine andere Kopie der Datei) anstelle des Symlinks). -p
--perms
- Setzt die Berechtigungen der Zieldateien auf die gleichen wie die Quelldateien. -t
--times
- Legt die Änderungszeiten der Zieldateien auf die gleichen wie die Quelldateien fest. Da die Synchronisierung dieser Zeiten den rsync-Algorithmus effizienter macht, möchten Sie im Allgemeinen immer, dass dieser explizit oder implizit verwendet wird. -g
--group
- Setzt das Gruppenattribut des Ziels auf das gleiche wie die Quelle. Assoziiert standardmäßig nach Namen, greift jedoch unter bestimmten Umständen auf die Gruppen-ID zurück. Wenn der empfangende rsync nicht als Superuser ausgeführt wird (oder ihn vortäuscht --fake-super
), können nur Gruppen festgelegt werden, denen der Benutzer angehört, der rsync auf der empfangenden Seite aufgerufen hat. Andernfalls wird die Gruppe nur auf die zuvor erwähnte Standardgruppe desselben Benutzers gesetzt. -D
- Entspricht den Optionen --devices
und --specials
zusammen. Sie meinen:--devices
- Zeichen- und Blockgerätedateien werden übertragen. Hat keine Auswirkung, wenn der empfangende rsync nicht als Superuser ausgeführt wird (oder ihn vortäuscht --fake-super
). --specials
- Spezielle Dateien (wie Sockets) werden übertragen (sonst nicht). --delete
- Weist rsync an, Dateien zu löschen, die sich am Ziel, aber nicht an der Quelle befinden. Dies wird NICHT durch die oben festgelegte Aktualisierungsoption beeinflusst (in der Tat, wie könnte es sein, da die meisten Dateisysteme nicht die erforderlichen Daten speichern, um festzustellen, welche Aktion neuer war?). Diese Option wirkt sich nach der Wildcard / Glob-Erweiterung auf die Quellen aus , sodass dir / * nicht mit dir / identisch ist. Einige wichtige Hinweise:--dry-run
Option versuchen , die eine vorgetäuschte Übertragung durchführt, mit der Sie sicherstellen können, dass keine unbeabsichtigten Änderungen vorgenommen werden. --ignore-errors
Option überschrieben werden , obwohl Sie dies wahrscheinlich nicht tun / wollen.--delete-during
Algorithmus verwendet. Wenn der Empfänger älter ist, --delete-before
wird verwendet. Wenn es wichtig ist, dass die Dateien im Falle eines Fehlers eine bestimmte Konsistenz beibehalten (z. B. nichts löschen, bis alle anderen Änderungen vorgenommen wurden), sollten Sie eine spezifischere Option als die Standardoption verwenden./srv/bkp01
- Die Quelldatei oder das Quellverzeichnis. Es gibt einige detaillierte Regeln, was es bedeutet, wenn am Ende des Verzeichnisses ein Schrägstrich steht / nicht und ob das andere Verzeichnis vorhanden ist. Sie können den Abschnitt USAGE der Manpage für die Details sehen, aber hier bedeutet das Fehlen eines abschließenden Schrägstrichs, dass dieses Verzeichnis in das Ziel kopiert wird, anstatt dass der Inhalt dieses Verzeichnisses in das Ziel kopiert wird. Gleiches gilt, wenn dies eher eine Datei als ein Verzeichnis ist./srv/offbk2/
- Das Zielverzeichnis. Im Allgemeinen ist dies immer das letzte Element, das im Befehlsabschnitt rsync aufgeführt ist, es sei denn, eine Option wird verwendet, um es an einer anderen Stelle im Befehl anzugeben.>
- Dadurch wird stdout (die Standardausgabe) von links auf die Datei rechts umgeleitet, wird zu deren Inhalt und erstellt die Datei (falls möglich), falls sie noch nicht vorhanden ist. Einige Notizen:2>&1
am Ende des obigen Befehls hinzufügen . Ordnung ist wichtig, also verallgemeinern Sie sorgfältig, wo Sie das platzieren sollen. Die magische Zahl 1
bezieht sich auf stdout, 2
bezieht sich auf stderr, &
ist (im Wesentlichen) "die Adresse von", und das vollständige Befehls-Snippet bedeutet "die Ausgabe von stderr in den stdout-Stream umleiten". >>
stattdessen verwenden. Die Methode zum Umleiten von stderr an denselben Ort bleibt unverändert. 1> stdout_file 2> stderr_file
. Sie können dies auch >>
anstelle von >
in diesem Befehl verwenden, indem Sie anhängen anstatt zu ersetzen.~
- Dies ist eine Abkürzung für das Home-Verzeichnis des aktuellen Benutzers und Teil des nächsten Bits.~/offbkp01.log
- die Datei offbkp01.log im Home-Verzeichnis des aktuellen Benutzers. Hier wird die Ausgabe des Befehls rsync aufgrund der Umleitung mit abgelegt >
.Zusammenfassend wird dieser Befehl:
/srv/bkp01
, /srv/offbk2/bkp01
, und es löscht alles /srv/offbk2/
, was nicht in ist/srv/bkp01
, unter den folgenden Bedingungen:
/srv/offbk2/
dass neuer ist als ihre Änderungszeit auf /srv/bkp01
, wird es nicht aktualisiert werden , wenn beiden Elemente noch sind vom gleichen Typ (normale Datei, ein Verzeichnis oder Symlink (? )). Darüber hinaus druckt rsync einige Informationen darüber aus, was es tut (insbesondere, welche Dateien übertragen werden, und eine endgültige Zusammenfassung ), die die Shell in die Datei schreibt~/offbkp01.log
. Diese Protokolldatei wird neu erstellt, wenn sie noch nicht vorhanden ist, und überschrieben, wenn sie bereits vorhanden ist.
NB: --fake-super
ist eine Option, mit der rsync Superuser-Aktivitäten simuliert. Dazu werden die erweiterten Attribute der Dateien verwendet, um die Attribute zu speichern, die ohne größere Berechtigungen nicht festgelegt werden konnten. Die tatsächliche Version jedes Attributs wird auf den Wert eingestellt, der angesichts der verfügbaren Optionen und Berechtigungen sinnvoll ist. Dies macht es zwar bequem, einige Backups zu erstellen, auch wenn Sie keine Superuser-Berechtigungen haben. Beachten Sie jedoch, dass dies ein Sicherheitsrisiko darstellen kann, das größer ist als die Verwendung von rsync im Allgemeinen, da die tatsächlichen Sicherheitsattribute möglicherweise nicht festgelegt werden richtig, obwohl die Informationen über sie gesichert wurden.
Quelle: viel Zeit mit rsync zu arbeiten und seine Manpage zu lesen .
Aus dem Handbuch:
--löschen
Dies weist rsync an, fremde Dateien von der empfangenden Seite zu löschen (solche, die nicht auf der sendenden Seite liegen), jedoch nur für die Verzeichnisse, die synchronisiert werden. Sie müssen rsync aktiviert haben, um das gesamte Verzeichnis (z. B. "dir" oder "dir /") zu senden, ohne einen Platzhalter für den Inhalt des Verzeichnisses zu verwenden (z. B. "dir / *"), da der Platzhalter durch die Shell erweitert wird und rsync somit eine Anforderung erhält um einzelne Dateien zu übertragen, nicht das übergeordnete Verzeichnis der Dateien. Dateien, die von der Übertragung ausgeschlossen sind, werden ebenfalls vom Löschen ausgeschlossen, es sei denn, Sie verwenden die Option --delete-ausgeschlossen oder markieren die Regeln als nur auf der sendenden Seite übereinstimmend (siehe Modifikatoren zum Einschließen / Ausschließen im Abschnitt FILTERREGELN).
Es werden also Dateien vom Ziel gelöscht, die nicht Teil des ursprünglichen Verzeichnisses sind, wenn Sie keine Platzhalter verwendet haben.
Quellverzeichnis:
1.txt
2.txt
3.txt
Zielverzeichnis:
4.txt
4.txt wird nach dem rsync entfernt und 1.txt, 2.txt und 3.txt werden am Ziel sein.
In Bezug auf die anderen Dinge:
uva
Nein, es werden nur fremde Dateien aus dem bkp01
Verzeichnis gelöscht .
Ebenfalls:
-u
, --update
- Dateien überspringen, die auf dem Empfänger neuer sind-v
, --verbose
- Ausführlichkeit erhöhen-a
, --archive
- Archivierungsmodus; gleich -rlptgoD (kein -H, -A, -X)Die Ausgabe des rsync -uva --delete /srv/bkp01 /srv/offbk2/
Befehls wird ~/offbkp01.log
mit dem Umleitungsoperator ( >
) in eine Datei gesendet , um in Ihrem Terminal gedruckt zu werden. Wenn die Datei nicht vorhanden ist, wird sie erstellt. Wenn die Datei vorhanden ist, wird der alte Inhalt gelöscht.
Siehe man rsync
für weitere Informationen.
bkp01
. Es werden nur fremde Dateien - dh solche, die nicht in der Quelle vorhanden sind - vom Ziel gelöscht.
rsync
Remote-Dateikopie - Synchronisieren Sie Dateibäume über lokale Festplatten, Verzeichnisse oder über ein Netzwerk.
-u update
-v verbose
-a archive
--delete --> delete
Hier werden Dateien in offbk2 gelöscht .
Dann wird die Ausgabe des Ergebnisses (Erfolg oder nicht) in diese Protokolldatei umgeleitet.