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

5 erweiterte rsync-Tipps für Linux-Systemadministratoren

In einem früheren Artikel mit dem Titel Sysadmin-Tools:Verwenden von rsync zum Verwalten von Sicherung, Wiederherstellung und Dateisynchronisierung habe ich cp besprochen und sftp , und befasste sich mit den Grundlagen von rsync zum Verschieben von Dateien. Es gibt auch ein paar andere großartige Artikel hier zum Thema Sysadmin auf tar und SSH aktivieren, die Sie sich ansehen sollten. Das Kopieren von Dateien zu und von Remote-Systemen und eine einfache Möglichkeit, ein Backup von etwas zu erstellen, an dem Sie gerade arbeiten (oder von kritischen Unternehmensdaten), sind grundlegende, nützliche Tools in der Sysadmin-Toolbox, die ich immer wieder verwende. Manchmal möchten Sie jedoch etwas Anspruchsvolleres tun, z. B. Daten über eine weniger vertrauenswürdige oder langsamere Verbindung verschieben. Rsync kann Verschlüsselung zum Schutz während der Übertragung, Komprimierung für einen besseren Datenfluss und Prüfsummen bereitstellen, um sicherzustellen, dass Sie das erhalten, was Sie erwartet haben.

[ Den Lesern gefiel auch: So kopieren Sie Dateien sicher zwischen Linux-Hosts mit SCP und SFTP ]

Betreuen einer Website

Ich habe zuerst angefangen, rsync zu verwenden um eine lokale Version einer Website zu synchronisieren, die ich damals verwaltete, als CI/CD für ihren Vater nur ein Augenzwinkern war. Ich könnte eine lokale Kopie behalten, um daran zu arbeiten, und auch eine Sicherungskopie der neuesten Version der Site haben. Ich werde dieses Szenario als mein Beispiel verwenden. Sie können rsync verwenden um jedes entfernte Dateisystem für Backups zu synchronisieren oder um schnell eine Test-to-Production-Pipeline zu erstellen. Ich habe es auch verwendet, um ein Verzeichnis zu synchronisieren und dann tar verwendet um lokale Backups zu erstellen:

skipworthy  ~  enable  websync  ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
 skipworthy  ~  enable  websync  rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index

sent 85 bytes  received 229 bytes  209.33 bytes/sec
total size is 0  speedup is 0.00
skipworthy  ~  enable  websync  ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable

Wie zuvor mit dem lokalen rsync , wir laufen im Archivmodus und sparen mtime und Dateiattribute, rekursiv in Unterverzeichnisse und nur aktualisierte Daten, die neu oder geändert sind.

Hinweis :-v bedeutet fast immer ausführlich , Ausgabe an die Konsole senden.

Nehmen wir also an, ich wollte der Website eine Seite hinzufügen und sie hochladen:

skipworthy  ~  enable  websync  rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)

Dies ist ein guter Zeitpunkt, um darauf hinzuweisen, dass Sie einige Dinge beachten müssen, wenn Sie rsync verwenden Dateien zu pushen. Rsync benötigt die Berechtigung für den gesamten Verzeichnisbaum, nicht nur für das Zielverzeichnis. Es gibt mehrere Möglichkeiten, wie Sie dies erreichen können. Zum einen ist es möglich, die uid anzugeben und gid des rsync Daemon in /etc/rsyncd.conf . Eine andere Möglichkeit besteht darin, rsync auszuführen als Benutzer mit den erforderlichen Berechtigungen. Beides kann in einer sicheren Umgebung problematisch sein, gehen Sie hier also vorsichtig vor.

Beachten Sie auch, dass dies standardmäßig der Fall ist, wenn Sie rsync verwenden aus der Ferne verbinden Sie sich direkt mit rsync Dienst auf Port 873 . Daran müssen Sie denken, wenn Sie Firewall-Regeln und -Berechtigungen einrichten. Darüber hinaus gibt es SELinux-Berechtigungen, die eine ganz andere Diskussion sind und nicht im Rahmen dieses Artikels liegen. Eine Lösung für das Problem mit Verzeichnisberechtigungen und Sicherheitsbedenken im Allgemeinen ist die Verwendung von SSH (das sollte Ihnen jetzt bekannt vorkommen). SSH richtet einen verschlüsselten Tunnel ein und kann so eingestellt werden, dass es jeden Port abhört, ganz zu schweigen davon, dass Sie einen SSH-Schlüssel angeben können, um die Verbindung weiter zu sichern und Remote-Verbindungen etwas automatisierungsfreundlicher zu gestalten.

Erweiterte Funktionen

Für dieses nächste Beispiel werde ich diese Änderungen als Root übertragen. Bitte sei nicht wie ich:

rsync -aruv -e ssh  ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo

sent 246 bytes  received 36 bytes  43.38 bytes/sec
total size is 31  speedup is 0.11

Beachten Sie erneut, dass die üblichen SSH-Optionen für Verbindungen verfügbar sind, einschließlich der Angabe des Ports und des Schlüsselorts. Rsync erlaubt Ihnen auch, die Remote-Shell-Option auszuwählen, solange sie auf beiden Seiten installiert und in .ssh/config konfiguriert ist .

Prüfsummen

Ich habe Prüfsummen bereits erwähnt, und hier gibt es zwei potenziell nützliche Dinge. Zuerst rsync führt standardmäßig eine Prüfsumme aus und verifiziert sie dann auf dem Ziel, wodurch Sie gewarnt werden, dass Daten während des Flugs verloren gehen oder beschädigt werden.

Zweitens können Sie auch Prüfsummen verwenden, um zu bestimmen, welche Dateien übertragen werden sollen (d. h. welche Dateien tatsächlich anders sind zwischen Quelle und Ziel), was nützlich ist, wenn Sie nicht sicher sind, ob die mtime /eine Zeit stellt die tatsächliche Version der gewünschten Datei dar. Ich hatte Dateisysteme, die ich zu synchronisieren versuchte und die berührt wurden von einer anderen App, daher waren die Zeiten falsch.

skipworthy  ~  enable  websync  rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 364 bytes  780.00 bytes/sec

Hinweis :Dies verursacht zusätzlichen Aufwand bei der Verarbeitung und bei der Übertragung, da für jede Datei auf jeder Seite eine Prüfsumme generiert und dann verglichen wird.

Komprimierung

Ein weiterer nützlicher Trick ist die Komprimierung. Das -z Option komprimiert den Stream, --zc legt den Komprimierungstyp fest und --zl setzt den Pegel:

skipworthy  ~  enable  websync  rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list

sent 26 bytes  received 248 bytes  548.00 bytes/sec
total size is 31  speedup is 0.11

Wenn Sie den Typ oder die Ebene nicht angeben, rsync verwendet eine in der RSYNC_COMPRESS_LIST bereitgestellte Liste Umgebungsvariable zum Aushandeln eines gemeinsamen Komprimierungstyps und -niveaus.

[ Suchen Sie nach mehr Informationen zur Systemautomatisierung? Beginnen Sie mit The Automated Enterprise, einem kostenlosen Buch von Red Hat. ] 

Abschluss

Da haben Sie es also:rsync ist ein weiteres Werkzeug, das immer noch nützlich und relevant für die Administration von Linux-Systemen ist – ein Werkzeug, über das ich in meiner Karriere oft froh war, es zu haben. Es gibt viele, viele weitere Dinge, die Sie damit tun können, die wir hier nicht erkunden konnten – schauen Sie wie immer in den Manpages nach!


Linux
  1. Linux-Tipps zur Verwendung von Cron zum Planen von Aufgaben

  2. 3 Tipps zum Drucken mit Linux

  3. 8 Tipps für die Linux-Kommandozeile

  4. 8 Tipps für eine zuverlässige Linux-Systemautomatisierung

  5. 3 solide Selbstbewertungstipps für Systemadministratoren

Tipps zur Verwendung des Top-Befehls unter Linux

Linux Rsync-Befehlsbeispiele für Anfänger

Kurzanleitung zu Ansible für Linux-Systemadministratoren

30 Übungen zu Linux-Berechtigungen für Systemadministratoren

40 nützliche Linux-Netzwerkbefehle für moderne SysAdmins

Linux-Sicherungsdienstprogramm für inkrementelle Sicherungen