Linux Admin - Sicherung und Wiederherstellung

Bevor wir uns mit CentOS-spezifischen Methoden zum Bereitstellen eines Standardsicherungsplans befassen, wollen wir zunächst typische Überlegungen für eine Sicherungsrichtlinie auf Standardebene erläutern. Das erste, woran wir uns gewöhnen wollen, ist das3-2-1 backup rule.

3-2-1 Sicherungsstrategie

In der gesamten Branche wird häufig der Begriff 3-2-1-Sicherungsmodell verwendet. Dies ist ein sehr guter Ansatz, um bei der Implementierung eines Sicherungsplans zu leben. 3-2-1 ist wie folgt definiert:3Kopien von Daten; Zum Beispiel können wir die Arbeitskopie haben; eine Kopie, die auf den CentOS-Server gestellt wird und für Redundanz mit rsync ausgelegt ist; und gedrehte Offsite-USB-Sicherungen werden aus Daten auf dem Sicherungsserver erstellt.2verschiedene Backup-Medien. In diesem Fall hätten wir tatsächlich drei verschiedene Sicherungsmedien: die Arbeitskopie auf einer SSD eines Laptops oder einer Workstation, die CentOS-Serverdaten auf einem RADI6-Array und die externen Sicherungen auf USB-Laufwerken.1Kopie der Daten außerhalb des Standorts; Wir drehen die USB-Laufwerke jede Nacht außerhalb des Unternehmens. Ein anderer moderner Ansatz kann ein Cloud-Backup-Anbieter sein.

Systemwiederherstellung

Ein Bare-Metal-Wiederherstellungsplan ist einfach ein Plan, der von einem CentOS-Administrator erstellt wurde, um wichtige Systeme mit allen intakten Daten online zu schalten. Unter der Annahme eines 100% igen Systemausfalls und des Verlusts sämtlicher früherer Systemhardware muss ein Administrator einen Plan haben, um eine Verfügbarkeit mit intakten Benutzerdaten zu erreichen, die minimale Ausfallzeiten kosten. Der in Linux verwendete monolithische Kernel macht Bare-Metal-Wiederherstellungen mithilfe von Systemabbildern viel einfacher als unter Windows. Wo Windows eine Mikrokernel-Architektur verwendet.

Eine vollständige Datenwiederherstellung und Bare-Metal-Wiederherstellung werden normalerweise durch eine Kombination von Methoden erreicht, einschließlich funktionierender, konfigurierter Produktionsdatenträgerabbilder der wichtigsten Betriebsserver und redundanter Sicherungen von Benutzerdaten, die der 3-2-1-Regel entsprechen. Sogar einige vertrauliche Dateien, die möglicherweise in einem sicheren, feuerfesten Safe mit eingeschränktem Zugriff auf das vertrauenswürdige Personal des Unternehmens gespeichert werden.

Ein mehrphasiger Bare-Metal-Wiederherstellungs- und Datenwiederherstellungsplan mit nativen CentOS-Tools kann bestehen aus:

  • dd zum Erstellen und Wiederherstellen von Produktionsdatenträgern von konfigurierten Servern

  • rsync, um inkrementelle Sicherungen aller Benutzerdaten durchzuführen

  • tar & gzip zum Speichern verschlüsselter Sicherungen von Dateien mit Passwörtern und Notizen von Administratoren. In der Regel kann dies auf einem USB-Laufwerk gespeichert, verschlüsselt und in einem Safe gesperrt werden, auf den ein Senior Manager zugreift. Dies stellt auch sicher, dass jemand anderes wichtige Sicherheitsdaten kennt, wenn der aktuelle Administrator die Lotterie gewinnt und irgendwo auf einer sonnigen Insel verschwindet.

Wenn ein System aufgrund eines Hardwarefehlers oder einer Katastrophe abstürzt, folgen die verschiedenen Phasen der Wiederherstellung von Vorgängen:

  • Erstellen Sie einen funktionierenden Server mit einem konfigurierten Bare-Metal-Image

  • Stellen Sie Daten aus Sicherungen auf dem Arbeitsserver wieder her

  • Haben Sie physischen Zugriff auf Anmeldeinformationen, die für die Ausführung der ersten beiden Vorgänge erforderlich sind

Verwenden Sie rsync für Sicherungen auf Dateiebene

rsync ist ein großartiges Dienstprogramm zum Synchronisieren von Dateiverzeichnissen entweder lokal oder mit einem anderen Server. rsync wird seit Jahren von Systemadministratoren verwendet und ist daher zum Sichern von Daten sehr verfeinert. Nach Meinung des Autors ist eine der besten Funktionen der Synchronisierung die Möglichkeit, Skripte über die Befehlszeile zu erstellen.

In diesem Tutorial werden wir rsync auf verschiedene Arten diskutieren -

  • Entdecken und sprechen Sie über einige gängige Optionen
  • Erstellen Sie lokale Backups
  • Erstellen Sie Remote-Backups über SSH
  • Stellen Sie lokale Sicherungen wieder her

rsyncwurde nach seinem Zweck benannt: Remote Sync und ist sowohl leistungsstark als auch flexibel einsetzbar.

Es folgt eine grundlegende rsync- Remote-Sicherung über ssh -

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ 
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

Die folgende Synchronisierung hat fast 2,3 GB Daten über unser LAN gesendet. Das Schöne an rsync ist, dass es Datei für Datei schrittweise auf Blockebene arbeitet. Das heißt, wenn wir nur zwei Zeichen in einer 1-MB-Textdatei ändern, werden bei der nächsten Synchronisierung nur ein oder zwei Blöcke über die LAN übertragen!

Darüber hinaus kann die inkrementelle Funktion zugunsten einer höheren Netzwerkbandbreite deaktiviert werden, die für eine geringere CPU-Auslastung verwendet wird. Dies kann sich als ratsam erweisen, wenn ständig alle 10 Minuten mehrere 10-MB-Datenbankdateien auf ein dediziertes 1-GB-Backup-Lan kopiert werden. Die Begründung lautet: Diese ändern sich ständig und werden alle 10 Minuten schrittweise übertragen. Dies kann die Belastung der Remote-CPU belasten. Da die gesamte Übertragungslast 5 Minuten nicht überschreitet, möchten wir möglicherweise nur die Datenbankdateien in ihrer Gesamtheit synchronisieren.

Im Folgenden sind die häufigsten Switches mit rsync aufgeführt :

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path

Schalter Aktion
-ein Archivierungsmodus und nimmt -r, -p, -t, -g, -l an
-d Nur Verzeichnisbaum synchronisieren, keine Dateien
-r Rekursiv in Verzeichnis
-l Kopieren Sie Symlinks als Symlinks
-p Berechtigungen beibehalten
-G Gruppe erhalten
-v Ausführliche Ausgabe
-z Über Netzwerkverbindung komprimieren
-X Erweiterte Attribute beibehalten
-EIN ACLs beibehalten
-t Zeitstempel beibehalten
-W Übertragen Sie die gesamte Datei, keine inkrementellen Blöcke
-u Überschreiben Sie keine Dateien auf dem Ziel
--Fortschritt Übertragungsfortschritt anzeigen
--löschen Löschen Sie ältere Dateien auf dem Ziel
--max-size = XXX Maximale zu synchronisierende Dateigröße

Wann wird rsync verwendet?

Meine persönliche Präferenz für rsync ist das Sichern von Dateien von einem Quellhost auf einem Zielhost. Zum Beispiel alle Home-Verzeichnisse für die Datenwiederherstellung oder sogar außerhalb und in der Cloud für die Notfallwiederherstellung.

Lokale Sicherung mit rsync

Wir haben bereits gesehen, wie Dateien von einem Host auf einen anderen übertragen werden. Dieselbe Methode kann verwendet werden, um Verzeichnisse und Dateien lokal zu synchronisieren.

Lassen Sie uns eine manuelle inkrementelle Sicherung von / etc / im Verzeichnis unseres Root-Benutzers erstellen.

Zuerst müssen wir ein Verzeichnis off ~ / root für die synchronisierte Sicherung erstellen -

[root@localhost rdc]# mkdir /root/etc_baks

Stellen Sie dann sicher, dass genügend freier Speicherplatz vorhanden ist.

[root@localhost rdc]# du -h --summarize /etc/ 
49M    /etc/
 
[root@localhost rdc]# df -h 
Filesystem           Size     Used     Avail    Use%     Mounted on 
/dev/mapper/cl-root   43G      15G        28G    35%         /

Wir sind gut für die Synchronisierung unseres gesamten / etc / -Verzeichnisses -

rsync -aAvr /etc/ /root/etc_baks/

Unser synchronisiertes / etc / Verzeichnis -

[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x.   3 root root      101 Feb  1 19:40 abrt
-rw-r--r--.   1 root root       16 Feb  1 19:51 adjtime
-rw-r--r--.   1 root root     1518 Jun  7  2013 aliases
-rw-r--r--.   1 root root    12288 Feb 27 19:06 aliases.db
drwxr-xr-x.   2 root root       51 Feb  1 19:41 alsa
drwxr-xr-x.   2 root root     4096 Feb 27 17:11 alternatives
-rw-------.   1 root root      541 Mar 31  2016 anacrontab
-rw-r--r--.   1 root root       55 Nov  4 12:29 asound.conf
-rw-r--r--.   1 root root        1 Nov  5 14:16 at.deny
drwxr-xr-x.   2 root root       32 Feb  1 19:40 at-spi2
--{ condensed output }--

Jetzt machen wir einen inkrementellen rsync -

[root@localhost etc_baks]# rsync -aAvr --progress  /etc/ /root/etc_baks/
sending incremental file list

test_incremental.txt 
   0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1145/1282)
   
sent 204620 bytes  received 2321 bytes  413882.00 bytes/sec
total size is 80245040  speedup is 387.77

[root@localhost etc_baks]#

Nur unsere Datei test_incremental.txt wurde kopiert.

Remote Differential Backups Mit rsync

Lassen Sie uns unsere erste vollständige rsync-Sicherung auf einem Server mit einem bereitgestellten Sicherungsplan durchführen. In diesem Beispiel wird tatsächlich ein Ordner auf einer Mac OS X Workstation auf einem CentOS-Server gesichert. Ein weiterer großartiger Aspekt von rsync ist, dass es auf jeder Plattform verwendet werden kann, auf die rsync portiert wurde.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

Wir haben jetzt einen Ordner von einer Workstation auf einem Server gesichert, auf dem ein RAID6-Volume mit gedrehten Disaster Recovery-Medien ausgeführt wird, die außerhalb des Standorts gespeichert sind. Durch die Verwendung von rsync haben wir eine standardmäßige 3-2-1-Sicherung erhalten, bei der nur ein Server über ein teures redundantes Festplattenarray und gedrehte differenzielle Sicherungen verfügt.

Lassen Sie uns nun mit rsync eine weitere Sicherung desselben Ordners durchführen, nachdem eine einzelne neue Datei mit dem Namen test_file.txt hinzugefügt wurde.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff 
[email protected]'s password:  
sending incremental file list 
 ./ 
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

Wie Sie sehen, wurde nur die neue Datei über rsync an den Server übermittelt . Der Differentialvergleich wurde Datei für Datei durchgeführt.

Einige Dinge zu beachten sind: Dies kopiert nur die neue Datei: test_file.txt, da es die einzige Datei mit Änderungen war. rsync verwendet ssh. Wir mussten unser Root-Konto auf keinem Computer verwenden.

Rsync ist einfach, leistungsstark und effektiv und eignet sich hervorragend zum Sichern ganzer Ordner und Verzeichnisstrukturen. Allerdings rsync selbst automatisiert den Prozess nicht. Hier müssen wir in unserer Toolbox stöbern und das beste, kleine und einfache Werkzeug für den Job finden.

Um rsync-Sicherungen mit Cronjobs zu automatisieren , müssen SSH-Benutzer unbedingt mit SSH-Schlüsseln zur Authentifizierung eingerichtet werden. In Kombination mit Cronjobs kann rsync automatisch in zeitlichen Abständen durchgeführt werden.

Verwenden Sie DD für Block-für-Block-Bare-Metal-Recovery-Images

DD ist ein Linux-Dienstprogramm, das es seit den Anfängen des Linux-Kernels gibt, der die GNU-Dienstprogramme erfüllt.

dd kopiert im einfachsten Sinne ein Image eines ausgewählten Festplattenbereichs. Bietet dann die Möglichkeit, ausgewählte Blöcke einer physischen Festplatte zu kopieren. Wenn Sie also keine Backups haben, werden alle Blöcke ersetzt, sobald dd über eine Festplatte schreibt. Der Verlust früherer Daten übersteigt die Wiederherstellungsfunktionen selbst für hochpreisige Datenwiederherstellungen auf professioneller Ebene.

Der gesamte Prozess zum Erstellen eines bootfähigen Systemabbilds mit dd ist wie folgt:

  • Booten Sie vom CentOS-Server mit einer bootfähigen Linux-Distribution
  • Suchen Sie die Bezeichnung der bootfähigen Festplatte, die abgebildet werden soll
  • Legen Sie fest, wo das Wiederherstellungsimage gespeichert werden soll
  • Suchen Sie die auf Ihrer Festplatte verwendete Blockgröße
  • Starten Sie den dd image-Vorgang

In diesem Tutorial erstellen wir der Zeit und Einfachheit halber ein ISO-Image des Master-Boot-Datensatzes von einer virtuellen CentOS-Maschine. Wir werden dieses Bild dann außerhalb des Standorts speichern. Falls unser MBR beschädigt wird und wiederhergestellt werden muss, kann der gleiche Vorgang auf eine gesamte bootfähige Festplatte oder Partition angewendet werden. Die benötigte Zeit und der benötigte Speicherplatz gehen für dieses Tutorial jedoch etwas über Bord.

CentOS-Administratoren wird empfohlen, eine vollständig bootfähige Festplatte / Partition in einer Testumgebung wiederherzustellen und eine Bare-Metal-Wiederherstellung durchzuführen. Dies entlastet Sie erheblich, wenn Sie die Übung in einer realen Situation mit Managern und einigen Dutzend Endbenutzern, die Ausfallzeiten zählen, abschließen müssen. In einem solchen Fall können 10 Minuten des Herausfindens wie eine Ewigkeit erscheinen und einen ins Schwitzen bringen.

Note- Achten Sie bei der Verwendung von dd darauf, Quell- und Zieldatenträger NICHT zu verwechseln. Sie können Daten und bootfähige Server zerstören, indem Sie Ihren Sicherungsspeicherort auf ein Startlaufwerk kopieren. Oder möglicherweise schlimmer noch, Daten für immer zu zerstören, indem Sie mit DD Daten auf sehr niedrigem Niveau kopieren.

Im Folgenden finden Sie die allgemeinen Befehlszeilenoptionen und -parameter für dd -

Schalter Aktion
if = In Datei oder Quelle, die kopiert werden soll
von = Out-Datei oder die Kopie der In-Datei
bs Stellen Sie sowohl die Eingangs- als auch die Ausgangsblockgröße ein
obs Legen Sie die Blockgröße der Ausgabedatei fest
RDS Legen Sie die Blockgröße der Eingabedatei fest
Anzahl Legen Sie die Anzahl der zu kopierenden Blöcke fest
konv Zusätzliche Optionen für die Bildgebung
Kein Fehler Beenden Sie die Verarbeitung eines Fehlers nicht
synchronisieren Pads nicht angepasste Eingabeblöcke im Falle eines Fehlers oder einer Fehlausrichtung

Note on block size- Die Standardblockgröße für dd beträgt 512 Byte. Dies war die Standardblockgröße von Festplatten mit geringerer Dichte. Die heutigen Festplatten mit höherer Dichte wurden auf Blockgrößen von 4096 Byte (4 KB) erhöht, um Festplatten im Bereich von 1 TB und mehr zu ermöglichen. Daher sollten wir die Größe des Festplattenblocks überprüfen, bevor wir dd mit neueren Festplatten mit höherer Kapazität verwenden.

In diesem Lernprogramm verwenden wir anstelle der Arbeit an einem Produktionsserver mit dd eine CentOS-Installation, die in VMWare ausgeführt wird. Wir werden VMWare auch so konfigurieren, dass ein bootfähiges Linux-ISO-Image gestartet wird, anstatt mit einem bootfähigen USB-Stick zu arbeiten.

Zuerst müssen wir das CentOS-Image mit dem Titel: CentOS Gnome ISO herunterladen . Dies sind fast 3 GB. Es wird empfohlen, immer eine Kopie aufzubewahren, um bootfähige USB-Sticks zu erstellen und virtuelle Serverinstallationen zu starten, um Fehler zu beheben und Bare-Metal-Images zu erstellen.

Andere bootfähige Linux-Distributionen funktionieren genauso gut. Linux Mint kann für bootfähige ISOs verwendet werden, da es eine hervorragende Hardwareunterstützung und ausgefeilte GUI-Festplatten-Tools für die Wartung bietet.

Das bootfähige CentOS GNOME Live-Image kann heruntergeladen werden von: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Konfigurieren Sie unsere VMWare Workstation-Installation so, dass sie von unserem bootfähigen Linux-Image startet. Die Schritte gelten für VMWare unter OS X. Sie sind jedoch für VMWare Workstation unter Linux, Windows und sogar Virtual Box ähnlich.

Note- Die Verwendung einer virtuellen Desktop-Lösung wie Virtual Box oder VMWare Workstation ist eine hervorragende Möglichkeit, Laborszenarien zum Erlernen von CentOS-Verwaltungsaufgaben einzurichten. Es bietet die Möglichkeit, mehrere CentOS-Installationen zu installieren, praktisch keine Hardwarekonfiguration, sodass sich die Person auf die Verwaltung konzentrieren kann, und sogar den Serverstatus zu speichern, bevor Änderungen vorgenommen werden.

Zuerst konfigurieren wir eine virtuelle CD-ROM und hängen unser ISO-Image zum Booten an, anstatt die Installation des virtuellen CentOS-Servers.

Legen Sie nun die Startdiskette fest -

Beim Booten startet unsere virtuelle Maschine vom bootfähigen CentOS-ISO-Image und ermöglicht den Zugriff auf Dateien auf dem zuvor konfigurierten virtuellen CentOS-Server.

Lassen Sie uns unsere Festplatten überprüfen, um festzustellen, von wo wir den MBR kopieren möchten (die komprimierte Ausgabe lautet wie folgt).

MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Wir haben unsere beiden physischen Festplatten gefunden: sda und sdb . Jeder hat eine Blockgröße von 512 Bytes. Daher führen wir jetzt den Befehl dd aus, um die ersten 512 Bytes für unseren MBR auf SDA1 zu kopieren.

Der beste Weg, dies zu tun, ist -

[root@mint rdc]# dd if=/dev/sda bs=512 count=1  | gzip -c >
/mnt/sdb/images/mbr.iso.gz 
1+0 records in 
1+0 records out 
512 bytes copied, 0.000171388 s, 3.0 MB/s

[root@mint rdc]# ls /mnt/sdb/ 
   mbr-iso.gz
   
[root@mint rdc]#

Einfach so, wir haben ein vollständiges Image unseres Master-Boot-Datensatzes. Wenn wir genug Platz haben, um das Boot-Laufwerk abzubilden, können wir genauso gut ein vollständiges System-Boot-Image erstellen -

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

Die Option conv = sync wird verwendet, wenn Bytes für ein physisches Medium ausgerichtet werden müssen. In diesem Fall kann dd einen Fehler erhalten, wenn keine genauen 4K-Ausrichtungen gelesen werden (z. B. ... eine Datei, die nur 3K groß ist, aber mindestens einen einzelnen 4K-Block auf der Festplatte benötigt) Datei kann nicht von dd gelesen werden.). Wenn dd mit conv = sync verwendet wird, füllt noerror die 3K mit trivialen, aber nützlichen Daten für das physische Medium in 4K-Blockausrichtungen auf. Es wird kein Fehler angezeigt, der eine große Operation beenden kann.

Wenn wir mit Daten von Datenträgern arbeiten, möchten wir immer Folgendes einschließen: conv = sync, noerror parameter.

Dies liegt einfach daran, dass die Festplatten keine Streams wie TCP-Daten sind. Sie bestehen aus Blöcken, die auf eine bestimmte Größe ausgerichtet sind. Wenn wir beispielsweise 512-Byte-Blöcke haben, benötigt eine Datei mit nur 300 Byte immer noch volle 512 Byte Speicherplatz (möglicherweise 2 Blöcke für Inode-Informationen wie Berechtigungen und andere Dateisysteminformationen).

Verwenden Sie gzip und tar für die sichere Speicherung

gzip und tar sind zwei Dienstprogramme, an die sich ein CentOS-Administrator gewöhnen muss. Sie werden viel mehr verwendet, als nur Archive zu dekomprimieren.

Verwenden von Gnu Tar unter CentOS Linux

Tar ist ein Archivierungsprogramm, das Winrar unter Windows ähnelt . Sein Name Tape Archive, abgekürzt als tar , fasst das Dienstprogramm ziemlich gut zusammen. tar nimmt Dateien und legt sie zur logischen Vereinfachung in einem Archiv ab. Anstelle der Dutzende von Dateien, die in / etc. Gespeichert sind. Wir könnten sie einfach in ein Archiv "tarieren", um die Sicherung und Speicherung zu vereinfachen.

tar ist seit vielen Jahren der Standard zum Speichern archivierter Dateien unter Unix und Linux. Daher wird die Verwendung von tar zusammen mit gzip oder bzip als bewährte Methode für Archive auf jedem System angesehen.

Im Folgenden finden Sie eine Liste der gängigen Befehlszeilenoptionen und -optionen, die mit tar - verwendet werden.

Schalter Aktion
-c Erstellt ein neues .tar-Archiv
-C Extrahiert in ein anderes Verzeichnis
-j Verwendet die bzip2-Komprimierung
-z Verwendet die gzip-Komprimierung
-v Ausführliche Archivierungsfortschritte anzeigen
-t Listet Archivinhalte auf
-f Dateiname des Archivs
-x Extrahiert das Teerarchiv

Im Folgenden finden Sie die grundlegende Syntax zum Erstellen eines Teerarchivs .

tar -cvf [tar archive name]

Note on Compression mechanisms with tar- Es wird empfohlen, bei der Verwendung von tar eines von zwei gängigen Komprimierungsschemata beizubehalten: gzip und bzip2. gzip-Dateien verbrauchen weniger CPU-Ressourcen, sind jedoch normalerweise größer. Die Komprimierung von bzip2 dauert zwar länger, verbraucht jedoch mehr CPU-Ressourcen. Dies führt jedoch zu einer kleineren Dateigröße.

Wenn Sie die Dateikomprimierung verwenden, sollten Sie immer Standard-Dateierweiterungen verwenden, damit alle, auch wir, wissen (im Gegensatz zu Vermutungen durch Ausprobieren), welches Komprimierungsschema zum Extrahieren von Archiven erforderlich ist.

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

Wenn Sie möglicherweise Archive auf einer Windows-Box oder zur Verwendung unter Windows extrahieren müssen, wird empfohlen, die Dateien .tar.tbz oder .tar.gz zu verwenden, da die meisten Einzelerweiterungen mit drei Zeichen nur Windows- und Windows-Administratoren verwirren (das heißt jedoch) manchmal das gewünschte Ergebnis)

Erstellen wir ein gezipptes Tar-Archiv aus unseren Remote-Backups, die von der Mac Workstation kopiert wurden.

[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/ 
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz

Note- Anstatt alle Dateien direkt zum Archiv hinzuzufügen, haben wir den gesamten Ordner RemoteStuff archiviert . Dies ist die einfachste Methode. Einfach, weil beim Extrahieren das gesamte Verzeichnis RemoteStuff mit allen Dateien im aktuellen Arbeitsverzeichnis als ./currentWorkingDirectory/RemoteStuff/ extrahiert wird.

Extrahieren wir nun das Archiv im Verzeichnis / root / home.

[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com

Wie oben gezeigt, wurden alle Dateien einfach in das enthaltene Verzeichnis in unserem aktuellen Arbeitsverzeichnis extrahiert.

[root@centos ~]# ls -l 
total 2262872 
-rw-------.   1   root   root       1752   Feb   1   19:52   anaconda-ks.cfg 
drwxr-xr-x. 137   root   root       8192   Mar   9   04:42   etc_baks 
-rw-r--r--.   1   root   root       1800   Feb   2   03:14   initial-setup-ks.cfg 
drwxr-xr-x.   6   rdc    rdc        4096   Mar  10   22:20   RemoteStuff 
-rw-r--r--.   1   root   root 2317140451   Mar  12   07:12   RemoteStuff.tgz 
-rw-r--r--.   1   root   root       9446   Feb  25   05:09   ssl.conf [root@centos ~]#

Verwenden Sie gzip, um Dateisicherungen zu komprimieren

Wie bereits erwähnt, können wir entweder bzip2 oder gzip von tar mit dem verwenden -j oder -zBefehlszeilenschalter. Wir können auch gzip verwenden, um einzelne Dateien zu komprimieren. Die Verwendung von bzip oder gzip allein bietet jedoch nicht so viele Funktionen wie in Kombination mit tar .

Bei Verwendung von gzip werden standardmäßig die Originaldateien entfernt und durch eine komprimierte Version mit der Erweiterung .gz ersetzt.

Einige gängige Befehlszeilenoptionen für gzip sind -

Schalter Aktion
-c Bewahrt Dateien nach dem Einfügen in das Archiv auf
-l Holen Sie sich Statistiken für das komprimierte Archiv
-r Komprimiert Dateien in den Verzeichnissen rekursiv
-1 bis 9 Gibt die Komprimierungsstufe auf einer Skala von 1 bis 9 an

gzip funktioniert mehr oder weniger Datei für Datei und nicht archiviert wie einige Windows O / S-Zip-Dienstprogramme. Der Hauptgrund dafür ist, dass tar bereits erweiterte Archivierungsfunktionen bietet. gzip bietet nur einen Komprimierungsmechanismus.

Wenn Sie also an gzip denken, denken Sie an eine einzelne Datei. Wenn Sie an mehrere Dateien denken, denken Sie an Teerarchive . Lassen Sie uns dies nun mit unserem vorherigen Teerarchiv untersuchen .

Note - Erfahrene Linux-Profis bezeichnen ein geteertes Archiv häufig als Tarball.

Lassen Sie uns aus unserem rsync- Backup ein weiteres Tar- Archiv erstellen .

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

Zu Demonstrationszwecken wollen wir gzip den neu erstellten Tarball und sagen gzip die alte Datei zu halten. Standardmäßig ersetzt gzip ohne die Option -c das gesamte tar-Archiv durch eine .gz- Datei.

[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.

Versuchen wir, den Schalter -l mit gzip zu testen .

[root@centos Documents]# gzip -l RemoteStuff.tar.gz  
     compressed        uncompressed        ratio uncompressed_name 
     2317140467          2326661120        0.4% RemoteStuff.tar
     
[root@centos Documents]#

Um zu demonstrieren, wie sich gzip von den Windows Zip-Dienstprogrammen unterscheidet, führen wir gzip für einen Ordner mit Textdateien aus.

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

Verwenden Sie nun die Option -r, um alle Textdateien im Verzeichnis rekursiv zu komprimieren.

[root@centos Documents]# gzip -9 -r text_files/

[root@centos Documents]# ls ./text_files/
file1.txt.gz  file2.txt.gz  file3.txt.gz  file4.txt.gz  file5.txt.gz
 
[root@centos Documents]#

Sehen? Nicht das, was manche erwartet haben. Alle ursprünglichen Textdateien wurden entfernt und einzeln komprimiert. Aufgrund dieses Verhaltens ist es am besten, nur an gzip zu denken, wenn Sie in einzelnen Dateien arbeiten müssen.

Wenn wir mit Tarballs arbeiten , extrahieren wir unseren synchronisierten Tarball in ein neues Verzeichnis.

[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php

Wie oben gezeigt, haben wir unseren Tarball extrahiert und in das Verzeichnis / tmp dekomprimiert.

[root@centos Documents]# ls /tmp 
hsperfdata_root
RemoteStuff

TarBall-Archive verschlüsseln

Das Verschlüsseln von Tarball-Archiven zum Speichern sicherer Dokumente, auf die andere Mitarbeiter des Unternehmens im Falle einer Notfallwiederherstellung möglicherweise zugreifen müssen, kann ein schwieriges Konzept sein. Grundsätzlich gibt es drei Möglichkeiten, dies zu tun: Verwenden Sie entweder GnuPG oder openssl oder ein Dienstprogramm eines dritten Teils.

GnuPG wurde hauptsächlich für die asymmetrische Verschlüsselung entwickelt und berücksichtigt eher eine Identitätsassoziation als eine Passphrase. Es kann zwar mit symmetrischer Verschlüsselung verwendet werden, dies ist jedoch nicht die Hauptstärke von GnuPG. Daher würde ich GnuPG für das Speichern von Archiven mit physischer Sicherheit rabattieren, wenn mehr Personen als die ursprüngliche Person Zugriff benötigen (z. B. ein Unternehmensmanager, der sich vor einem Administrator schützen möchte, der alle Schlüssel zum Königreich als Hebel hält).

OpenSl wie GnuPG kann tun, was wir wollen und wird mit CentOS ausgeliefert. Aber auch hier ist es nicht speziell darauf ausgelegt, das zu tun, was wir wollen, und die Verschlüsselung wurde in der Sicherheitsgemeinschaft in Frage gestellt.

Unsere Wahl ist ein Dienstprogramm namens 7zip. 7zip ist ein Komprimierungsprogramm wie gzip , bietet jedoch viele weitere Funktionen. Wie Gnu Gzip gehören 7zip und seine Standards zur Open-Source-Community. Wir müssen nur 7zip aus unserem EHEL-Repository installieren (das nächste Kapitel behandelt die Installation der Extended Enterprise Repositories im Detail).

Installieren Sie 7zip auf Centos

7zip ist eine einfache Installation, sobald unsere EHEL-Repositorys in CentOS geladen und konfiguriert wurden.

[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
epel/x86_64/metalink
|  13 kB  00:00:00
epel
| 4.3 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB  00:00:04      
(2/2):
epel/x86_64/primary_db
| 4.6 MB  00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

So einfach ist das: 7zip ist installiert und kann mit 256-Bit-AES-Verschlüsselung für unsere Tarball-Archive verwendet werden.

Verwenden wir jetzt 7z, um unser komprimiertes Archiv mit einem Passwort zu verschlüsseln. Die Syntax dafür ist ziemlich einfach -

7z a -p <output filename><input filename>

Wo, a: zum Archiv hinzufügen und -p: verschlüsseln und zur Passphrase auffordern

[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)

Creating archive: RemoteStuff.tgz.7z

Items to compress: 1

Enter password (will not be echoed):
Verify password (will not be echoed) :

Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz  RemoteStuff.tgz.7z  slapD
text_files

[root@centos Documents]#

Jetzt haben wir unser .7z-Archiv, das den gezippten Tarball mit 256-Bit-AES verschlüsselt.

Note- 7zip verwendet eine AES-256-Bit-Verschlüsselung mit einem SHA-256-Hash des Kennworts und des Zählers, der zur Schlüsselableitung bis zu 512 KB wiederholt wird. Dies sollte sicher genug sein, wenn ein komplexer Schlüssel verwendet wird.

Das Verschlüsseln und erneute Komprimieren des Archivs kann bei größeren Archiven einige Zeit in Anspruch nehmen.

7zip ist ein erweitertes Angebot mit mehr Funktionen als gzip oder bzip2. Es ist jedoch nicht Standard bei CentOS oder in der Linux-Welt. Daher sollten die anderen Dienstprogramme so oft wie möglich verwendet werden.