Was ist Rsync und wie wird es für Backups verwendet?

Derzeit kann die Aufrechterhaltung einer Infrastruktur beliebiger Größe ohne Backup als verrückt angesehen werden, ein Datenträger kann jederzeit ausfallen und Sie könnten wertvolle Informationen wie die Buchhaltung des Unternehmens verlieren. In diesem Beitrag werden wir uns mit Rsync befassen, einem der besten Tools für Backups auf * nix-Systemen.

Wir werden von den grundlegendsten bis hin zu fortgeschrittenen Beispielen mit Skripten und Beispielen, die Sie in Ihrer Arbeitsumgebung anwenden können, sehen.

Die Notwendigkeit, die gleichen Informationen an verschiedenen Orten zu haben, gewinnt zunehmend an Bedeutung. Dies liegt daran, dass unser Arbeitsbereich variabel ist und wir unsere Werkzeuge immer oder sogar als Sicherungsmaßnahme bei uns haben möchten.

Was ist Rsync?
Es ist ein Open Source-Tool zum Übertragen von Dateien und Verzeichnissen zwischen verschiedenen Standorten . Seine Vorteile beruhen hauptsächlich auf der Komprimierung der zu sendenden Informationen, ermöglichen die Übertragung über einen SSH- Kanal und übertragen nur die Dateien und Teile von Dateien, die geändert wurden, anstatt die gesamte Datei erneut zu übertragen, ähnlich wie bei Was passiert, wenn die Unterschiede in einer Datei unter der Kontrolle von Git-Versionen übertragen werden?

Unter den verschiedenen Verwendungsmöglichkeiten, die rsync bietet, sind die folgenden:

  • Automatisierte Backups auf Festplatten oder Remote-Servern.
  • Synchronisation von Dateien und entfernten Verzeichnissen.
  • Gemeinsame Übertragung von Dateien.
Vorteile von Rsync
1. Es ist schneller als scp (Secure Copy), da rsync ein Upload-Protokoll verwendet, mit dem nur der Unterschied zwischen den Dateien übertragen werden kann. Beim ersten Übertragen der gesamten Datei werden nur die möglicherweise vorgenommenen Änderungen zum zweiten Mal übertragen.
2. Es wurde für Remote-Backups entwickelt.
3. Es unterstützt die Kopie aller Berechtigungen der Dateien, z. B. Eigentümer, Softgroups und Hardlink.
4. Bei Verwendung der Komprimierung während des Sendens von Dateien wird weniger Bandbreite benötigt.

Lernen Sie, Rsync zu verwenden

Wir gehen vollständig auf die Verwaltung des Befehls und die nützlichsten Optionen ein.

Grundlegende Syntax

Es besteht aus dem Befehl rsync am Anfang, den zu verwendenden Optionen, der Quelldatei und dem Ziel der Sicherung.

 # rsync options source destination 
Rsync-Optionen

Dies sind einige der nützlichsten Optionen, die mit Rsync verwendet werden können. Um alle Ihre Optionen anzuzeigen, besuchen Sie bitte die Manpage —> man rsync

 -v: verbose ---> Zeigt weitere Informationen zur Operation an. -r: rekursiv ---> Unterordner werden bei der Operation verwendet. -a: archive ---> Kopiere es so wie es ist, wobei die Berechtigungen, symbolischen Links, Benutzer und Gruppen erhalten bleiben und die Änderungszeiten beibehalten werden. -z: compress ---> Komprimierung während der Übertragung aktivieren. -h: lesbar ----> Einheiten werden zum einfachen Lesen in MB GB gespeichert. 
Installieren Sie Rsync

Es ist in fast allen Distributionen installiert, aber Sie können es vom Repo aus installieren.

 #Roter Hut / Centos yum installiere rsync # Debian / Ubuntu / Linux Mint apt-get install rsync 

Wir wenden uns seiner Verwendung zu.

Verwenden von Rsync für lokale Sicherungen

Manchmal müssen wir bestimmte Informationen unterstützen, bevor wir Änderungen vornehmen können, und im Falle eines Fehlers bei der Wiederherstellung des Backups beginnen wir mit einem Labor, das Backups von einem Ordner in einen anderen erstellt.

System vorbereiten

Zunächst haben wir überprüft, ob rsync installiert ist.

 [user @ Joncak6 ~] $ welches rsync / usr / bin / rsync 

Wir erstellen 2 Ordner für den Ursprung und das Ziel der Dateien.

 mkdir {backup1, backup2} 

In diesem Fall erstellen wir unabhängig von der Größe der Dateien mehrere Dateien im Ordner backup1.

 [user @ Joncak6 ~] $ touch backup1 / file {1..75} 

Das Verzeichnis sollte 75 Dateien haben.

 [user @ Joncak6 ~] $ ls backup1 / Datei1 Datei14 Datei19 Datei23 Datei28 Datei32 Datei37 Datei41 Datei46 Datei50 Datei55 Datei6 Datei64 Datei69 Datei70 Datei10 Datei15 Datei2 Datei24 Datei29 Datei33 Datei38 Datei42 Datei47 Datei51 Datei56 Datei60 Datei65 Datei7 Datei7 Datei11 Datei16 Datei16 Datei25 Datei3 Datei34 Datei39 Datei43 Datei48 Datei55 Datei55 Datei66 Datei70 Datei70 Datei70 Datei12 Datei17 Datei21 Datei26 Datei30 Datei35 Datei4 Datei44 Datei49 Datei53 Datei58 Datei62 Datei67 Datei71 Datei8 Datei13 Datei18 Datei22 Datei27 Datei31 Datei36 Datei40 Datei45 Datei5 Datei54 Datei59 Datei63 Datei68 Datei72 Datei9 

Wir machen Backup.

Backup-Dateien und Verzeichnisse

Um die Dateien auf dem Backup2 zu sichern, verwenden wir:

 rsync -r backup1 / backup2 

Der Ursprung muss in / enden, andernfalls würde er seinen Ordner und nicht den Inhalt kopieren.

See also  Listen Sie Windows Server 2016-Volumes und -Datenträger mit PowerShell auf

Wenn wir backup2 eingeben, können wir die 75 Dateien sehen und mit diff überprüfen, ob es sich um 2 identische Verzeichnisse handelt.

 [user @ Joncak6 ~] $ diff support1 backup2 

Wenn Sie einen Softlink aus einer Datei in Verzeichnis 1 erstellen

 ln -s Datei30 Datei100 

Bei Verwendung von rsync mit -r wird der Softlink in diesem Fall nicht synchronisiert. Wir verwenden:

 rsync -a backup1 / backup2 

Wenn wir diesmal schauen, haben wir den synchronisierten Softlink.

Verwenden des Testlaufs in Rsync

Wenn wir uns nicht sicher sind, was wir unterstützen werden, können wir eine Simulation mit -und in Verbindung mit -v sehr nützlich sein.

 [user @ Joncak6 ~] $ rsync -anv backup1 / backup2 Senden einer inkrementellen Dateiliste gesendet 606 Bytes empfangen 12 Bytes 1236.00 Bytes / Sek Gesamtgröße ist 6 Beschleunigung ist 0,01 (DRY RUN) 

Kopieren Sie Dateien auf einen Remote-Server

Es ist möglich, Backups auf externen Servern zu erstellen. In diesem Fall müssen wir über SSH auf den Zielserver zugreifen. Denken Sie daran, die Komprimierung zu aktivieren, um die Übertragung zu beschleunigen. Wir müssen die Zugriffsadresse verwenden, gefolgt von dem Verzeichnis, in dem die Sicherung gespeichert wird.

 [user @ Joncak6 ~] $ rsync -avz backup1 / [email protected]: / home / user / Die Authentizität von Host '172.31.17.163 (172.31.17.163)' kann nicht festgestellt werden. Der Fingerabdruck des ECDSA-Schlüssels lautet 0d: 0c: b1: 1d: e1: cf: 6d: 9f: 51: bf: 0f: dc: 60: 82: a1: 73. Möchten Sie die Verbindung wirklich fortsetzen (Ja / Nein)? ja Warnung: '172.31.17.163' (ECDSA) dauerhaft zur Liste der bekannten Hosts hinzugefügt. Passwort von [email protected]: Senden einer inkrementellen Dateiliste ./ file1 file10 Datei100 -> Datei30 file11 file12 file13 file14 file15 file16 ... gesendet 3312 Bytes empfangen 1443 Bytes 559,41 Bytes / Sek Gesamtgröße ist 6 Speedup ist 0,00 

Es fragt uns nach dem Kennwort des anderen Servers, wenn wir es am Ende nicht mit öffentlichen Schlüsseln haben. Wir haben eine Replik des Ordners backup1 in ServerB.

Kopieren Sie Dateien von einem Remote-Server auf einen lokalen Server

Wenn Sie die Dateien auf einen lokalen Computer herunterladen möchten, verwenden wir denselben Befehl, ändern jedoch die Reihenfolge von Ursprung und Ziel gemäß dem vorherigen Beispiel.

 [user @ Joncak6 ~] $ rsync -avz [email protected]: / home / user / backup1 / home / backup1 

Sicherung mit SSH für verschlüsselte Daten

Sicherheit ist in Produktionsumgebungen sehr wichtig , Kundeninformationen können nicht gefährdet werden und wir können Daten verschlüsseln, während sie mit SSH gesichert werden. Ein weiterer Vorteil besteht darin, dass Anmeldeinformationen geschützt werden können, wenn wir keine öffentlichen Schlüssel verwenden. Der Nachteil besteht darin, dass mehr Systemressourcen verbraucht werden und die Übertragung möglicherweise nicht so schnell erfolgt.

SSH-Anleitung

Um ein Protokoll mit rsync zu verwenden, verwenden wir die Option -e gefolgt von dem zu verwendenden Protokoll. In diesem Fall verwenden wir ssh, und der Befehl sieht folgendermaßen aus.

 [user @ Joncak6 ~] $ rsync -avzhe ssh [email protected]: / home / user / / home / backup1 

Zeige Fortschritt mit Rsync

Das Erstellen eines einzelnen Backups kann einige Zeit in Anspruch nehmen. Mit der Option –progress können Sie einen Fortschritt von der Konsole abrufen. Ich empfehle nicht, diese Option mit Skripten zu verwenden. Sie kann ein sehr umfangreiches Protokoll erstellen.

 [user @ Joncak6 ~] $ rsync -avzhe ssh --progress [email protected]: / home / user / / home / backup1 Senden einer inkrementellen Dateiliste erstelltes Verzeichnis / root / rpmpkgs rpmpkgs / rpmpkgs / httpd-2.2.3-82.el5.centos.i386.rpm 1,02 M 100% 2,72 MB / s 0:00:00 (xfer # 1, to-check = 3/5) rpmpkgs / mod_ssl-2.2.3-82.el5.centos.i386.rpm 99.04K 100% 241.19kB / s 0:00:00 (xfer # 2, to-check = 2/5) rpmpkgs / nagios-3.5.0.tar.gz 1,79 M 100% 1,56 MB / s 0:00:01 (xfer # 3, to-check = 1/5) rpmpkgs / nagios-plugins-1.4.16.tar.gz 2,09 Mio. 100% 1,47 MB ​​/ s 0:00:01 (xfer # 4, to-check = 0/5) 4,99 MByte gesendet, 92 Byte empfangen, 475,56 KByte / Sek Die Gesamtgröße beträgt 4,99 MB. Die Beschleunigung beträgt 1,00 

Verwenden Sie -include und -exclude mit Rsync

Es ist möglich, mit Rsync Zugriffslisten mit den Optionen include und exclude zu verwenden. Sie müssen lediglich Textdateien erstellen und die Namen der Dateien oder Ordner platzieren, die in die Sicherung aufgenommen werden sollen, oder die Liste der zu ignorierenden Elemente hinzufügen Führen Sie die Übertragung durch.

See also  Wie kann ich eine PST-Datei ohne Outlook öffnen

Wir werden eine Datei mit dem Namen include und eine andere mit dem Namen exclude erstellen

 [user @ Joncak6 ~] $ touch {include, exclude} 

Wir fügen jeder Datei das hinzu, was wir wollen, und fügen dann die Datei mit rsync hinzu

 [user @ Joncak6 ~] $ rsync -avze ssh --include 'include' --exclude 'exclude' [email protected]: / home / user / backup1 / / home / media / backup2 

Löschen Sie Dateien mit Rsync

Standardmäßig können wir keine Dateien zwischen Quelle und Ziel löschen, es sei denn, wir verwenden die Option -delete. Wenn das Ziel eine Datei ist, die sich nicht in der Quelle befindet, werden die Dateien gelöscht, sodass die beiden Verzeichnisse gleich sind.
Wenn wir eine Datei im backup2 erstellen.

 [user @ Joncak6 ~] $ touch backup2 / solvetic 

Dann synchronisieren wir von der Sicherung1

 rsync -avz --delete backup1 / backup2 

Wir sehen, wie die Lösungsmitteldatei beseitigt wird.

Maximale Quote der zu übertragenden Dateien

Mit der Option -max-size können wir eine maximale Größe der zu übertragenden oder zu synchronisierenden Dateien festlegen. Wenn wir zum Beispiel nur Dateien übertragen möchten, die nicht größer als 200 MB sind, verwenden wir -max-size ‘200 MB’. Dies kann sehr nützlich sein, wenn wir ein Web unterstützen, aber die Datenbank weglassen möchten.

 [user @ Joncak6 ~] $ rsync -avzhe ssh --max-size'200mb '/ var / www / * [email protected]: / root / backupweb 

Dateien automatisch löschen, nachdem sie übertragen oder synchronisiert wurden

Angenommen, wir haben einen Webserver und einen Sicherungsserver, und wir haben eine tägliche Sicherung, und wir möchten keine Sicherungsinhalte auf dem Webserver speichern. Es ist nicht notwendig, die Dateien manuell zu löschen. rsync Ich kann sie automatisch mit der Option -remove-source-files löschen.

Nach Abschluss der Übertragung werden die Dateien sofort vom Webserver gelöscht.

 [user @ Joncak6 ~] $ rsync - Quelldateien entfernen -zvh backup.tar / tmp / backups / backup.tar 
 gesendet 14.71M Bytes empfangen 31 Bytes 4.20M Bytes / Sek Die Gesamtgröße beträgt 16,18 MB. Die Beschleunigung beträgt 1,10 Am Ende sehen wir, dass die TAR-Datei nicht auf dem Quellserver gefunden wird. [user @ Joncak6 ~] ll backup.tar ls: backup.tar: Keine solche Datei oder kein solches Verzeichnis 

Begrenzen Sie die Bandbreite beim Übertragen von Dateien mit rsync

Es ist üblich, Backups auf Produktionsservern zu erstellen, um zu vermeiden, dass der Service für die Clients beeinträchtigt wird. Bei geringer Bandbreite empfiehlt es sich, das Backup mit der Option -bwlimit zu begrenzen. Wir begrenzen die E / A-Bandbreite.

 [user @ Joncak6 ~] rsync --bwlimit = 100 -avzhe ssh / var / lib / rpm / [email protected]: / root / tmprpm / [email protected] Passwort: Senden einer inkrementellen Dateiliste gesendet 324 Bytes empfangen 12 Bytes 61,09 Bytes / Sek Die Gesamtgröße beträgt 38,08 MB. Die Beschleunigung beträgt 113347,05 

Wir haben das Backup auf 100 kbit / s Übertragungsgeschwindigkeit begrenzt.

Rsync und Cron für automatische inkrementelle Sicherungen

In diesem Abschnitt wird davon ausgegangen, dass Sie bereits wissen, wie die Zeit in einer Crontab angegeben wird. Weitere Informationen hierzu finden Sie in meiner vorherigen Veröffentlichung Verwenden von Cronjobs zum Automatisieren von Aufgaben.

See also  HTML5 - Erstellung von Dokumenten und Attributen

Wenn wir täglich eine vollständige Sicherung durchführen würden, könnten wir die folgende crontab verwenden:

 rsync -au --delete backup1 / backup2 

Dadurch wird das Quellverzeichnis mit dem Zielverzeichnis synchronisiert, und am Ziel wird eine vollständige Sicherung durchgeführt. Wir hätten jedoch nur die Dateien im gleichen Zustand wie seit der letzten Kopie. Wir konnten zu keinem anderen Zeitpunkt zurückkehren. Um eine Kopie der Dateien so zu belassen, wie sie waren, bevor wir sie verwendet haben , dh eine Teilsicherung, sollten wir Folgendes verwenden:

 rsync -ab --backup-dir = old_`date +% F` --delete --exclude = old_ * source / destination / 

Jetzt hätten wir die vollständige Sicherung im Zielverzeichnis und eine Sicherung der Dateien wie vor der letzten Sicherung in einem Verzeichnis. Wenn diese Sicherung am 25. Februar 2015 durchgeführt würde, würde das Verzeichnis viejo_2015-02-25 heißen. Natürlich würde dies für jeden Tag, an dem es ausgeführt wird, ein anderes Sicherungsverzeichnis erstellen. Um Dateien an einem bestimmten Tag in Ihrem Zustand wiederherzustellen, müssten wir die Dateien nacheinander von der neuesten bis zu dem Tag kopieren, an dem sie wiederhergestellt werden sollen Vollständiger Sicherungsordner, und löschen Sie alle neuen Dateien, die nach diesem Tag erstellt wurden.

Inkrementelles Rotary Backup mit rsync und cron

Eine fortlaufende Teilsicherung bezieht sich auf die Tatsache, dass wir eine bestimmte Anzahl von Sicherungsordnern für Teilsicherungen wiederverwenden . Anstatt beispielsweise bei einer täglichen Sicherung das vollständige Datum zum Namen eines Verzeichnisses hinzuzufügen, können wir nur den Wochentag verwenden. Dadurch würden die Verzeichnisse old_0, old_1 … old_6 erstellt, und dann würde ich den Ordner old_0 Anfang der nächsten Woche erneut verwenden. Wir würden diesen Ordner entfernen, falls er existiert, und ihn für die neue Sicherung neu erstellen. Auf diese Weise konnten wir bis zu 7 Tage pünktlich zurückkehren. Der offensichtliche Vorteil davon ist, dass wir nicht mit einer großen Anzahl von Sicherungsordnern (und vielen alten Daten) enden würden, da wir den Speicherplatz und die Namen der Ordner wiederverwenden würden. Sieben Tage können sehr kurz sein, wir können die Zahl des Tages im Monat verwenden, um ungefähr 30 Tage in der Zeit zurückzukehren, oder die Zahl des Tages im Jahr, um bis zu 365 Tage in der Zeit zurückzukehren.

Beispielskript

Wir können ein grundlegendes Skript für ein tägliches oder wöchentliches inkrementelles Backup verwenden. Dies hängt davon ab, wie Sie es in cron eingestellt haben. Ich lasse ein Beispiel für inkrementelles Backup.

 #! / bin / sh SUFFIX = $ (Datum +% j) # Löschen Sie das Verzeichnis auf dem Remote-Server über SSH # ssh remote_up 'ls Backup / my_work / backup _' $ SUFFIX '&& rm -r Backup / my_work / backup _' $ SUFIX # Löschen Sie das Verzeichnis auf dem Remote-Server über SFTP sftp -b / dev / fd / 0 backup_remoto << EOF cd Backups / my_work rmdir backup_ $ SUFFIX aussteigen EOF # Aktualisieren Sie die Informationen, erstellen Sie einen Sicherungsordner und ignorieren Sie den # den Rest der Sicherungsverzeichnisse rsync -ab --recursive --files-from = 'a_support.txt' --backup-dir = backup_ $ SUFFIX --delete --filter = 'protect backup_ *' / home / juan / remote_backup: Backups / my_work / 

Denken Sie daran, das Skript in crontab oder einem der Cron-Ordner hinzuzufügen.

 crontab -e 

Fügen Sie den Ort hinzu, an dem sich das Skript befindet.

 /home/user/bin/respaldo_auto.sh 
Schlussfolgerungen
Wir haben gesehen, wie man rsync mit den nützlichsten Optionen verwendet, zusammen mit Tools wie Cron und Skripten in Bash, Python werden wir alles haben, was nötig ist, um unsere Backups ohne Tools von Drittanbietern zu erstellen. In einem anderen Beitrag werde ich über die Arten von Backups und deren Verwendung sprechen mit zusätzlichen rsync fügen Sie viel komplexere Skripte hinzu.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *