Inhaltsverzeichnis- 1. Einleitung
- 2. Installation
- 3. Grundlegende Verwendung
- 3.1, Parameter -r
- 3.2, -a Parameter
- 3.3, -n Parameter
- 3.4, Parameter --delete
- 4. Dateien ausschließen
- 4.1. --exclude Parameter
- 4.2. --include Parameter
- 5. Remote-Synchronisierung
- 5.1 SSH-Protokoll
- 5.2 rsync-Protokoll
- 6. Inkrementelles Backup
- 7. Konfigurationselemente
1. Einleitung rsync ist eine häufig verwendete Linux-Anwendung zur Dateisynchronisierung. Es kann Dateien zwischen einem lokalen Computer und einem Remotecomputer oder zwischen zwei lokalen Verzeichnissen synchronisieren (unterstützt jedoch nicht die Synchronisierung zwischen zwei Remotecomputern). Es kann auch als Tool zum Kopieren von Dateien verwendet werden und ersetzt cp und mv . 
Das r “ in seinem Namen steht für Remote. rsync bedeutet eigentlich „Remote Sync“. Im Gegensatz zu anderen Dateiübertragungstools (wie FTP oder scp) besteht die wichtigste Funktion von rsync darin, dass es die vorhandenen Dateien auf dem Sender und Empfänger überprüft und nur die geänderten Teile überträgt (die Standardregel ist, dass sich die Dateigröße oder der Änderungszeitpunkt geändert hat). 2. Installation Wenn rsync nicht auf dem lokalen oder Remotecomputer installiert ist, können Sie es mit dem folgenden Befehl installieren. # Debian $ sudo apt-get installiere rsync # Roter Hut $ sudo yum installiere rsync # Arch Linux $ sudo pacman -S rsync
Beachten Sie, dass an beiden Enden der Übertragung rsync installiert sein muss. 3. Grundlegende Verwendung 3.1, Parameter -r Wenn der Befehl rsync lokal verwendet wird, kann er als Alternative zu cp und mv verwendet werden, um das Quellverzeichnis mit dem Zielverzeichnis zu synchronisieren. $ rsync -r Quelle Ziel
Im obigen Befehl bedeutet -r Rekursion, die Unterverzeichnisse einschließt. Beachten Sie, dass -r erforderlich ist, da rsync sonst nicht erfolgreich ausgeführt wird. source gibt das Quellverzeichnis an und destination gibt das Zielverzeichnis an. Wenn mehrere Dateien oder Verzeichnisse synchronisiert werden müssen, können Sie es wie folgt schreiben. $ rsync -r Quelle1 Quelle2 Ziel
Im obigen Befehl werden sowohl source1 als auch source2 mit dem destination synchronisiert. 3.2, -a Parameter Der Parameter -a kann -r ersetzen. Neben der rekursiven Synchronisierung können damit auch Metainformationen (wie Änderungszeit, Berechtigungen usw.) synchronisiert werden. Da rsync standardmäßig die Dateigröße und den Änderungszeitpunkt verwendet, um zu bestimmen, ob eine Datei aktualisiert werden muss, ist -a nützlicher als -r . Die folgende Verwendung ist die übliche Schreibweise. $ rsync -a Quelle Ziel
Wenn das destination nicht existiert, erstellt rsync es automatisch. Nach der Ausführung des obigen Befehls wird das Quellverzeichnis „ source vollständig in das Zielverzeichnis destination kopiert, wodurch eine Verzeichnisstruktur von destination/source entsteht. Wenn Sie nur den Inhalt des Quellverzeichnisses source mit dem Zielverzeichnis destination synchronisieren möchten, müssen Sie nach dem Quellverzeichnis einen Schrägstrich hinzufügen. $ rsync -a Quelle/ Ziel
Nachdem der obige Befehl ausgeführt wurde, wird der Inhalt des source in das destination kopiert und unter destination wird kein source erstellt. 3.3, -n Parameter Wenn Sie nicht sicher sind, welche Ergebnisse nach der Ausführung von rsync erzeugt werden, können Sie zunächst -n oder --dry-run verwenden, um die Ergebnisse der Ausführung zu simulieren. $ rsync -anv Quelle/Ziel
Im obigen Befehl simuliert der Parameter -n das Ergebnis der Befehlsausführung und führt den Befehl nicht tatsächlich aus. Der Parameter -v gibt die Ergebnisse an das Terminal aus, sodass Sie sehen können, was synchronisiert wird. 3.4, Parameter --delete Standardmäßig stellt rsync nur sicher, dass der gesamte Inhalt des Quellverzeichnisses (mit Ausnahme der Dateien, die explizit ausgeschlossen sind) in das Zielverzeichnis kopiert wird. Die beiden Verzeichnisse bleiben nicht identisch und es werden keine Dateien gelöscht. Wenn Sie das Zielverzeichnis zu einer Spiegelkopie des Quellverzeichnisses machen möchten, müssen Sie den Parameter --delete verwenden, der Dateien löscht, die nur im Zielverzeichnis und nicht im Quellverzeichnis vorhanden sind. $ rsync -av --delete Quelle/ Ziel
Im obigen Befehl macht der Parameter --delete destination zu einem Spiegelbild der source . 4. Dateien ausschließen 4.1. --exclude Parameter Manchmal möchten wir bestimmte Dateien oder Verzeichnisse von der Synchronisierung ausschließen. In diesem Fall können wir den Parameter --exclude verwenden, um das Ausschlussmuster anzugeben. $ rsync -av --exclude='*.txt' Quelle/ Ziel # oder $ rsync -av --exclude '*.txt' Quelle/ Ziel
Der obige Befehl schließt alle TXT-Dateien aus. Beachten Sie, dass rsync versteckte Dateien synchronisiert, die mit einem „Punkt“ beginnen. Wenn Sie versteckte Dateien ausschließen möchten, können Sie --exclude=".*" schreiben. Wenn Sie alle Dateien in einem Verzeichnis ausschließen möchten, das Verzeichnis selbst jedoch nicht, können Sie es wie folgt schreiben. $ rsync -av --exclude 'dir1/*' Quelle/ Ziel
Um mehrere Ausschlussmuster anzugeben, verwenden Sie mehrere --exclude Parameter. $ rsync -av --exclude 'file1.txt' --exclude 'dir1/*' Quelle/ Ziel
Mehrere Ausschlussmuster können auch die große Erweiterungsfunktion von Bash nutzen, indem nur ein --exclude Parameter verwendet wird. $ rsync -av --exclude={'file1.txt','dir1/*'} Quelle/ Ziel
Wenn es viele Ausschlussmuster gibt, können Sie sie in eine Datei schreiben, ein Muster pro Zeile, und diese Datei dann mit --exclude-from angeben. $ rsync -av --include="*.txt" --exclude='*' Quelle/ Ziel
4.2. --include Parameter Der Parameter --include wird verwendet, um die Dateimuster anzugeben, die synchronisiert werden müssen und wird oft in Verbindung mit --exclude verwendet. $ rsync -av --include="*.txt" --exclude='*' Quelle/ Ziel
Der obige Befehl gibt an, dass alle Dateien bei der Synchronisierung ausgeschlossen, TXT-Dateien jedoch eingeschlossen werden. 5. Remote-Synchronisierung 5.1 SSH-Protokoll Neben der Unterstützung der Synchronisierung zwischen zwei lokalen Verzeichnissen unterstützt rsync auch die Remote-Synchronisierung. Es kann lokale Inhalte mit Remote-Servern synchronisieren. $ rsync -av Quelle/ Benutzername@Remote_Host:Ziel
Sie können Remote-Inhalte auch mit lokalen Inhalten synchronisieren. $ rsync -av Benutzername@Remote_Host:Quelle/Ziel
Standardmäßig verwendet rsync SSH für die Remote-Anmeldung und Datenübertragung. Da rsync anfangs das SSH-Protokoll nicht verwendete, war der Parameter -e erforderlich, um das Protokoll anzugeben, was später geändert wurde. Daher kann -e ssh im Folgenden weggelassen werden. $ rsync -av -e ssh Quelle/ Benutzer@Remote_Host:/Ziel
Wenn der SSH-Befehl jedoch über zusätzliche Parameter verfügt, müssen Sie den Parameter -e verwenden, um den auszuführenden SSH-Befehl anzugeben. $ rsync -av -e 'ssh -p 2234' Quelle/ Benutzer@Remote_Host:/Ziel
Im obigen Befehl gibt der Parameter -e an, dass SSH Port 2234 verwendet. 5.2 rsync-Protokoll Wenn auf dem anderen Server ein rsync-Daemon installiert und ausgeführt wird, können Sie zusätzlich zur Verwendung von SSH auch das Protokoll rsync:// (Standardport 873) für die Übertragung verwenden. Die spezifische Schreibmethode besteht darin, den Server und das Zielverzeichnis :: durch zwei Doppelpunkte zu trennen. $ rsync -av Quelle/ 192.168.122.32::Modul/Ziel
Beachten Sie, dass es sich module in der obigen Adresse nicht um den tatsächlichen Pfadnamen handelt, sondern um einen vom rsync-Daemon angegebenen Ressourcennamen, der vom Administrator zugewiesen wird. Wenn Sie die Liste aller vom rsync-Daemon zugewiesenen Module wissen möchten, können Sie den folgenden Befehl ausführen. $ rsync rsync://192.168.122.32
Zusätzlich zur Verwendung von Doppelpunkten kann das rsync-Protokoll auch direkt rsync:// Protokoll verwenden, um die Adresse anzugeben. $ rsync -av Quelle/ rsync://192.168.122.32/Modul/Ziel
6. Inkrementelles Backup Das größte Feature von rsync besteht darin, dass es inkrementelle Sicherungen durchführen kann, d. h. standardmäßig werden nur die geänderten Dateien kopiert. Neben dem direkten Abgleich des Quellverzeichnisses mit dem Zielverzeichnis unterstützt rsync auch die Verwendung eines Basisverzeichnisses, welches die Änderungen zwischen Quellverzeichnis und Basisverzeichnis mit dem Zielverzeichnis synchronisiert. Der konkrete Ansatz besteht darin, dass die erste Synchronisierung eine vollständige Sicherung ist und alle Dateien im Basisverzeichnis synchronisiert werden. Jede weitere Synchronisierung ist eine inkrementelle Sicherung, die nur die geänderten Teile zwischen Quellverzeichnis und Basisverzeichnis synchronisiert und diese Teile in einem neuen Zielverzeichnis speichert. Dieses neue Zielverzeichnis enthält ebenfalls alle Dateien, tatsächlich sind in diesem Verzeichnis jedoch nur die geänderten Dateien vorhanden und die anderen unveränderten Dateien sind Hardlinks zu den Dateien des Basisverzeichnisses. --link-dest wird verwendet, um das Basisverzeichnis für die Synchronisierung anzugeben. $ rsync -a --delete --link-dest /vergleichen/Pfad /Quelle/Pfad /Ziel/Pfad
Im obigen Befehl gibt --link-dest das Basisverzeichnis /compare/path an, dann wird das Quellverzeichnis /source/path mit dem Basisverzeichnis verglichen, die geänderten Dateien werden gefunden und in das Zielverzeichnis /target/path kopiert. Für Dateien, die sich nicht geändert haben, werden Hardlinks erstellt. Die erste Sicherung dieses Befehls ist eine vollständige Sicherung, und alle nachfolgenden Sicherungen sind inkrementelle Sicherungen. Unten finden Sie ein Beispielskript, das das Home-Verzeichnis eines Benutzers sichert.
#!/bin/bash
# Ein Skript zum Durchführen inkrementeller Backups mit rsync
setze -o errexit
set -o Substantivset
setze -o Pipefail
schreibgeschütztes SOURCE_DIR="${HOME}"
schreibgeschütztes BACKUP_DIR="/mnt/data/backups"
schreibgeschütztes DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
schreibgeschützter BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
schreibgeschützt LATEST_LINK="${BACKUP_DIR}/latest"
mkdir -p "${BACKUP_DIR}"
rsync -av --delete \
"${SOURCE_DIR}/" \
--link-dest "${LATEST_LINK}" \
--exclude=".cache" \
„${BACKUP_PATH}“
rm -rf "${LATEST_LINK}"
ln -s "${BACKUP_PATH}" "${LATEST_LINK}" Im obigen Skript generiert jede Synchronisierung ein neues Verzeichnis ${BACKUP_DIR}/${DATETIME} und verweist den Softlink ${BACKUP_DIR}/latest auf dieses Verzeichnis. Beim nächsten Sichern wird ${BACKUP_DIR}/latest als Basisverzeichnis zum Generieren eines neuen Sicherungsverzeichnisses verwendet. Richten Sie abschließend den Softlink ${BACKUP_DIR}/latest auf das neue Backup-Verzeichnis. 7. Konfigurationselemente -a und --archive geben den Archivierungsmodus an, bei dem alle Metadaten wie Änderungszeitpunkt, Berechtigungen, Besitzer usw. gespeichert und auch Softlinks synchronisiert werden. Der Parameter --append gibt an, dass die Dateiübertragung dort fortgesetzt wird, wo sie zuletzt unterbrochen wurde. Der Parameter --append-verify ähnelt dem Parameter --append , überprüft die Datei jedoch nach Abschluss der Übertragung. Wenn die Überprüfung fehlschlägt, wird die gesamte Datei erneut gesendet. -b und --backup geben an, dass beim Löschen oder Aktualisieren einer Datei, die bereits im Zielverzeichnis vorhanden ist, die Datei umbenannt und gesichert wird. Das Standardverhalten besteht darin, sie zu löschen. Die Umbenennungsregel besteht darin, das durch den Parameter --suffix angegebene Dateisuffix hinzuzufügen. Der Standardwert ist ~ . Der Parameter --backup-dir gibt das Verzeichnis an, in dem die Dateisicherung gespeichert wird, zum Beispiel --backup-dir=/path/to/backups . Der Parameter --bwlimit gibt die Bandbreitenbegrenzung an. Die Standardeinheit ist KB/s, zum Beispiel --bwlimit=100 . -c und --checksum ändern die Überprüfungsmethode von rsync . Standardmäßig prüft rsync nur, ob sich die Dateigröße und das letzte Änderungsdatum geändert haben. Wenn dies der Fall ist, wird die Datei erneut übertragen. Nach Verwendung dieses Parameters wird anhand der Prüfsumme des Dateiinhalts entschieden, ob die Datei erneut übertragen werden soll. Der Parameter --delete löscht Dateien, die nur im Zielverzeichnis und nicht im Quellverzeichnis vorhanden sind, und stellt sicher, dass das Zielverzeichnis ein Spiegelbild des Quellverzeichnisses ist. Der Parameter -e gibt die Verwendung des SSH-Protokolls zur Datenübertragung an. Der Parameter --exclude gibt Dateien an, die nicht synchronisiert werden sollen, beispielsweise --exclude="*.iso" . --exclude-from gibt eine lokale Datei an, die die auszuschließenden Dateimuster enthält, mit einer Zeile für jedes Muster. Die Parameter --existing und --ignore-non-existing geben an, dass Dateien und Verzeichnisse, die im Zielverzeichnis nicht vorhanden sind, nicht synchronisiert werden. Der Parameter -h gibt eine für Menschen lesbare Ausgabe an. -h und --help geben Hilfeinformationen zurück. Der Parameter -i gibt detaillierte Informationen zu den Dateiunterschieden zwischen dem Ausgabequellverzeichnis und dem Zielverzeichnis an. --ignore-existing bedeutet, dass die Datei übersprungen wird, solange sie bereits im Zielverzeichnis vorhanden ist, und diese Dateien nicht synchronisiert werden. Der Parameter --include gibt die Dateien an, die bei der Synchronisierung einbezogen werden sollen und wird im Allgemeinen in Verbindung mit --exclude verwendet. --link-dest gibt das Basisverzeichnis für inkrementelle Backups an. Der Parameter -m gibt an, dass leere Verzeichnisse nicht synchronisiert werden sollen. --max-size legt die maximale Dateigrößenbeschränkung für die Übertragung fest, beispielsweise nicht mehr als 200 KB ( --max-size='200k' ). --min-size legt die minimale Dateigrößenbeschränkung für die Übertragung fest, beispielsweise nicht weniger als 10 KB ( --min-size=10k ). Der Parameter -n oder --dry-run simuliert den Vorgang, der ausgeführt würde, ohne ihn tatsächlich auszuführen. Verwenden Sie es mit dem Parameter -v , um zu sehen, welcher Inhalt synchronisiert wird. Der Parameter -P ist eine Kombination der Parameter --progress und --partial . --partial ermöglicht die Fortsetzung einer unterbrochenen Übertragung. Wenn dieser Parameter nicht verwendet wird, löscht rsync die Dateien, deren Übertragung zur Hälfte unterbrochen wurde. Wenn dieser Parameter verwendet wird, werden auch die Dateien, deren Übertragung zur Hälfte abgeschlossen ist, in das Zielverzeichnis synchronisiert und die unterbrochene Übertragung wird bei der nächsten Synchronisierung fortgesetzt. Muss im Allgemeinen mit --append oder --append-verify verwendet werden. --partial-dir gibt an, dass die zwischenzeitlich übertragenen Dateien in einem temporären Verzeichnis gespeichert werden, beispielsweise --partial-dir=.rsync-partial . Muss im Allgemeinen mit --append oder --append-verify verwendet werden. Der Parameter --progress gibt den Anzeigefortschritt an. Der Parameter -r zeigt Rekursion an, d. h. das Einbeziehen von Unterverzeichnissen. --remove-source-files bedeutet, dass nach erfolgreicher Übertragung die Dateien des Absenders gelöscht werden. --size-only bedeutet, dass nur Dateien mit geänderter Größe synchronisiert werden, unabhängig von Unterschieden in den Dateiänderungszeiten. Der Parameter --suffix gibt das Suffix an, das beim Sichern des Dateinamens an den Dateinamen angehängt werden soll. Der Standardwert ist ~ . Die Parameter -u und --update geben an, dass Dateien mit aktualisierten Änderungszeiten im Zielverzeichnis bei der Synchronisierung übersprungen werden, d. h. Dateien mit aktualisierten Zeitstempeln werden nicht synchronisiert. Der Parameter -v gibt Ausgabedetails an. -vv bedeutet, dass ausführlichere Informationen ausgegeben werden, -vvv bedeutet, dass die ausführlichsten Informationen ausgegeben werden. Der Parameter --version gibt die Version von rsync zurück. Der Parameter -z gibt an, dass die Daten während der Synchronisierung komprimiert werden sollen. Oben finden Sie Einzelheiten zur Verwendung von Linux rsync. Weitere Informationen zu Linux rsync finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:- Rsync schlägt alle anderen Backup-Tools. Können Sie bestimmte Verzeichnisse manuell blockieren?
- Linux verwendet Rsync + Inotify, um eine Echtzeitsynchronisierung lokaler und Remotedaten zu erreichen
- Python rsync-Ordnersynchronisierungsskript zwischen Servern
- Python+rsync synchronisiert Dateien präzise im angegebenen Format
- Automatische Aktualisierung startet mit BrowserSync
- Rsync+crontab regelmäßige Synchronisierungssicherung unter centos7
- Verwenden von Rsync zum Durchführen einer automatischen Sicherung unter Linux
- Detaillierte Erläuterung zur gleichzeitigen Datenmigration und -überprüfung mit Java Rsync
|