Heim > php教程 > PHP开发 > Hauptteil

Hinweis 004 Häufig verwendete tar-Befehle unter Linux

黄舟
Freigeben: 2016-12-26 10:47:45
Original
1262 Leute haben es durchsucht

tar hat viele Optionen und Parameter! Wir werden nur einige häufig verwendete Optionen behandeln.

[root@www ~]# tar [-j|-z] [cv] [Dateiname erstellt durch -f] Dateiname... <==Paketierung und Komprimierung
[root@www ~]# tar [-j|-z] [tv] [Dateiname erstellt durch -f] <==Dateinamen anzeigen
[root@www ~]# tar [-j|-z] [xv] [Mit -f erstellter Dateiname] [-C-Verzeichnis] ​​<==Dekomprimierung
Optionen und Parameter:
-c: Erstellen Sie eine gepackte Datei, die mit -v verwendet werden kann, um den gepackten Dateinamen anzuzeigen der Prozess (Dateiname)
-t: Überprüfen Sie, welche Dateinamen im Inhalt der gepackten Datei enthalten sind, wobei Sie sich auf den „Dateinamen“ konzentrieren.
-x: Entpack- oder Dekomprimierungsfunktion, kann mit -C verwendet werden (Großbuchstaben) in Bestimmte Verzeichnisse entsperren
Es ist wichtig zu beachten, dass -c, -t, -x nicht gleichzeitig in einer Reihe von Befehlszeilen erscheinen können.
-j: Komprimierung/Dekomprimierung durch bzip2-Unterstützung: Der Dateiname ist vorzugsweise *.tar.bz2
-z: Komprimierung/Dekomprimierung durch gzip-Unterstützung: Der Dateiname ist derzeit am besten *.tar .gz
-v: Während des Komprimierungs-/Dekomprimierungsvorgangs wird der Name der verarbeiteten Datei angezeigt!
-f Dateiname: Auf -f sollte unmittelbar der zu verarbeitende Dateiname folgen! Es wird empfohlen, eine separate Option -f zu schreiben!
-C Verzeichnis: Diese Option wird zur Dekomprimierung verwendet. Wenn Sie in einem bestimmten Verzeichnis dekomprimieren möchten, können Sie diese Option verwenden.

Einführung in andere Optionen, die in den folgenden Übungen verwendet werden:
-p: Behalten Sie die ursprünglichen Berechtigungen und Attribute der Sicherungsdaten bei, die häufig zum Sichern (-c) wichtiger Konfigurationsdateien verwendet werden
-P: Absoluten Pfad beibehalten, was bedeutet, dass die Sicherungsdaten die Existenz des Stammverzeichnisses enthalten dürfen
--exclude=DATEI: DATEI während des Komprimierungsprozesses nicht verpacken!

Tatsächlich besteht der einfachste Weg, tar zu verwenden, darin, sich die folgende Methode zu merken:

Komprimierung: tar -jcv -f Dateiname.tar.bz2 Die zu seinde Datei komprimiert Oder Abfrage des Verzeichnisnamens: tar -jtv -f Dateiname.tar.bz2 Dekomprimierung: tar -jxv -f Dateiname.tar.bz2 -C Der Dateiname.tar.bz2 des zu dekomprimierenden Verzeichnisses ist der Dateiname, den wir selbst gewählt haben. tar Der erstellte Dateiname wird nicht automatisch generiert! Wir werden es anpassen! Die Erweiterung ist also sehr wichtig! Wenn [-j|-z] nicht hinzugefügt wird, lautet der Dateiname am besten *.tar. Wenn es sich um die Option -j handelt, bedeutet dies, dass bzip2 unterstützt wird. Daher ist der Dateiname am besten *.tar.bz2, da bzip2 die Erweiterung .bz2 generiert! Was die gzip-Unterstützung mit hinzugefügtem -z betrifft, ist der Dateiname am besten *.tar.gz! Verstehst du?

Da außerdem „-f Dateiname“ eng hintereinander folgt, schrieben viele Artikel in der Vergangenheit oft „-jcvf Dateiname“, was korrekt ist, aber da die Reihenfolge der Optionen theoretisch geändert werden kann, Viele Leser Ich werde fälschlicherweise denken, dass auch „-jvfc-Dateiname“ verwendet werden kann ~ Tatsächlich führt dies dazu, dass der generierte Dateiname zu c wird! Wegen -fc! Daher wird empfohlen, „-f Dateiname“ beim Erlernen von tar von anderen Optionen zu trennen, damit weniger Probleme auftreten.

Lassen Sie uns ohne weitere Umschweife einige häufig verwendete Tar-Methoden testen!

Verwenden Sie tar, um den Parameter -j oder -z hinzuzufügen, um das Verzeichnis /etc/ zu sichern

Es ist eine gute Sache, das Verzeichnis /etc zu sichern, wenn etwas passiert! Der einfachste Weg, /etc zu sichern, ist die Verwendung von tar! Lassen Sie uns zuerst herumspielen:

[root@www ~]# tar -zpcv -f /root/etc.tar.gz /etc
tar: Entfernen des führenden „/“ aus Mitgliedsnamen < Achten Sie auf diese Warnmeldung
/etc/
....Lassen Sie die Mitte weg....
/etc/esd.conf
/etc/crontab
# Aufgrund des Zusatzes von -v Diese Option, daher wird der aktive Dateiname auf dem Bildschirm angezeigt.
# Wenn Sie zur ersten Seite umblättern können, finden Sie die obige Fehlermeldung! Es wird weiter unten erläutert.
# Bei der Option -p liegt der Schwerpunkt auf der „Beibehaltung der Berechtigungen und Attribute der Originaldatei“.

[root@www ~]# tar -jpcv -f /root/etc.tar.bz2 /etc
# Die angezeigten Informationen sind genau die gleichen wie oben!

[root@www ~]# ll /root/etc*
-rw-r--r-- 1 root root 8740252 15. Nov. 23:07 /root/etc.tar.bz2
-rw-r--r-- 1 root root 13010999 15. November 23:01 /root/etc.tar.gz
[root@www ~]# du -sm /etc
118 /etc
# Warum wird die Verwendung der Option -j empfohlen? Können Sie das anhand der oben genannten Werte erkennen? ^_^

Aus den obigen Übungen wissen wir, dass wir bei Verwendung von bzip2, also der Option -j zum Erstellen von Backups, eine bessere Komprimierungsrate erzielen können! Wie in der Tabelle oben gezeigt, ist das ursprüngliche /etc/ (118 MB) auf etwa 8,7 MB gesunken! Der Grund für das Hinzufügen der Option „-p“ besteht darin, die Berechtigungen und Attribute der Originaldatei beizubehalten! In der Einführung des cp-Befehls in Kapitel 7 haben wir über die unterschiedlichen Auswirkungen von Berechtigungen und Dateitypen (z. B. Linkdateien) auf das Kopieren gesprochen. Ebenso ist es beim Sichern wichtiger Systemdaten besser, eine vollständige Sicherung der Berechtigungen dieser Originaldateien zu erstellen. Hier bietet sich die Option -p an. Sehen wir uns als Nächstes an, welche Daten in der gepackten Datei vorhanden sind.

Überprüfen Sie den Dateninhalt der TAR-Datei (Sie können den Dateinamen überprüfen) und ob der Name der Sicherungsdatei die Bedeutung des Stammverzeichnisses hat

Die Überprüfung der Datei ist sehr einfach Name! Sie können dies tun:

[root@www ~]# tar -jtv -f /root/etc.tar.bz2
....Vorderseite weglassen....
-rw-r--r-- root / root 1016 2008-05-25 14:06:20 etc/dbus-1/session.conf
-rw-r--r-- root/root 153 2007-01-07 19:20:54 etc/ esd .conf
-rw-r--r-- root/root 255 2007-01-06 21:13:33 etc/crontab

Wenn Sie die Option -v hinzufügen, Details Die Dateiberechtigungen/Attribute werden aufgelistet! Wenn Sie nur den Dateinamen wissen möchten, entfernen Sie einfach -v. Aus den obigen Daten können wir eine sehr interessante Sache finden: Jeder Dateiname hat kein Stammverzeichnis! Das hat uns auch die Warnmeldung „tar: Das führende /‘ aus Mitgliedsnamen wird entfernt (das /‘ am Anfang des Dateinamens wurde entfernt)“ aus der vorherigen Übung gesagt!

Warum müssen wir dann das Stammverzeichnis entfernen? Hauptsächlich aus Sicherheitsgründen! Die mit tar gesicherten Daten müssen möglicherweise zur Verwendung dekomprimiert werden. Der in tar aufgezeichnete Dateiname (der Dateiname, den wir gerade mit tar -jtvf beobachtet haben) ist nach der Dekomprimierung der tatsächliche Dateiname. Wenn das Stammverzeichnis entfernt wird und Sie die Sicherungsdaten in /tmp dekomprimieren, lautet der Name der dekomprimierten Datei „/tmp/etc/xxx“. Aber „Wenn das Stammverzeichnis nicht entfernt wird, ist der Name der dekomprimierten Datei ein absoluter Pfad, das heißt, die dekomprimierten Daten werden definitiv in /etc/xxx abgelegt!“ „Auf diese Weise werden Ihre Originaldaten unter /etc/ durch die Sicherungsdaten überschrieben!“ Tipps: Sie werden sagen: „Da es sich um Sicherungsdaten handelt, ist die Wiederherstellung kein Problem, oder?“ „Stellen Sie sich eine Situation vor, in der die von Ihnen gesicherten Daten die alte Version von CentOS 4 sind. /etc unter 5.x wird durch die Sicherungsdaten der alten Version überschrieben!“ Was sollten Sie an dieser Stelle tun? Daher ist es natürlich sicherer, das Stammverzeichnis zu entfernen. Wenn Sie sicher sind, dass Sie das Stammverzeichnis in einer TAR-Datei sichern müssen, können Sie die Option -P (Großbuchstaben) verwenden. Sehen Sie sich bitte die Beispielanalyse unten an: Beispiel: Sichern Sie das (Stamm-)Verzeichnis im Dateinamen und check Überprüfen Sie den Inhaltsdateinamen der Sicherungsdatei

[root@www ~]# tar -jpPcv -f /root/etc.and.root.tar.bz2 /etc
....The Zwischenprozess wird weggelassen. etc/esd.conf
/etc/crontab
# Diesmal enthält der überprüfte Dateiname nicht die Option -v, es handelt sich also nur um den Dateinamen! Es gibt keine detaillierten Attribute/Berechtigungen und andere Parameter.


Sind Ihnen Unterschiede aufgefallen? Wenn Sie die Option -P hinzufügen, ist das Stammverzeichnis im Dateinamen vorhanden! Der persönliche Vorschlag von Bruder Bird besteht jedoch darin, die Option -P nicht für die Sicherung hinzuzufügen! Schließlich führen wir oft Backups durch, um Probleme in der Zukunft zu verfolgen, und müssen das ursprüngliche System nicht unbedingt wiederherstellen! Daher ist die Anwendung von Sicherungsdaten nach dem Entfernen des Stammverzeichnisses flexibler! Es ist auch sicherer!

Extrahieren Sie die gesicherten Daten und berücksichtigen Sie die Dekomprimierungsaktion für das spezifische Verzeichnis (Anwendung der Option -C)

Was ist, wenn Sie sie entpacken möchten? Eine ganz einfache Aktion ist das direkte Auspacken!

[root@www ~]# tar -jxv -f /root/etc.tar.bz2

[root@www ~]# ll

....(Vorheriges weggelassen).. ..

drwxr-xr-x 105 root root 12288 Nov 11 04:02 etc
....(später weggelassen)....


Zu diesem Zeitpunkt die Verpackung Die Datei führt die Aktion „In diesem Verzeichnis entpacken“ aus! Sie werden also nach einer Weile ein Verzeichnis namens etc unter Ihrem Home-Verzeichnis finden! Wenn Sie also die Datei unter /tmp entpacken möchten, können Sie auf cd /tmp klicken und dann den obigen Befehl ausführen. Dies scheint jedoch sehr problematisch zu sein ~ Gibt es eine einfachere Möglichkeit, „das zu entsperrende Verzeichnis anzugeben“? Ja, Sie können die Option -C verwenden! Zum Beispiel:

[root@www ~]# tar -jxv -f /root/etc.tar.bz2 -C /tmp

[root@www ~]# ll /tmp

. ...(der erste wird weggelassen)....

drwxr-xr-x 105 root root 12288 Nov 11 04:02 etc
....(der zweite wird weggelassen)....


Auf diese Weise können Sie die Datei in ein anderes Verzeichnis entpacken! Bruder Niao ist persönlich der Meinung, dass man sich diese Option -C merken muss! Okay, denken Sie nach der Verarbeitung bitte daran, diese beiden Verzeichnisse zu löschen!

[root@www ~]# rm -rf /root/etc /tmp/etc

Wieder einmal ist dieser „rm -rf“ ein sehr gefährlicher Befehl! Bitte bestätigen Sie beim Herunterladen unbedingt den folgenden Dateinamen. Was wir löschen möchten, sind /root/etc und /tmp/etc. Bitte nicht /etc/ löschen! Das System wird sterben~ ^_^

Methode zum Dekomprimieren nur einer einzelnen Datei

Gerade haben wir den Inhalt der gesamten gepackten Datei dekomprimiert! Stellen Sie sich eine Situation vor: Wenn ich nur eine der Dateien in der Paketdatei entpacken möchte, wie soll ich das tun? Es ist ganz einfach: Sie verwenden einfach -jtv, um den gewünschten Dateinamen zu finden, und entpacken dann den Dateinamen. Nehmen wir zur Veranschaulichung das folgende Beispiel:

# 1. Suchen Sie zuerst den gewünschten Dateinamen, vorausgesetzt, die Schattendatei ist entpackt:
[root@www ~]# tar -jtv -f /root/etc.tar.bz2 |.
-r-------- root/root 1230 2008-09-29 02:21:20 etc/shadow-
-r-------- root/root 622 2008- 29.09. 02:21:20 etc/gshadow-
-r-------- root/root 636 29.09.2008 02:21:25 etc/gshadow
-r--- ----- root/root 1257 29.09.2008 02:21:25 etc/shadow <==Das ist es, was wir wollen!
# Suchen Sie zuerst nach wichtigen Dateinamen! Unter ihnen ist grep die Funktion des Schlüsselworts „Abrufen“! Wir erklären es im dritten Artikel!
# Hier muss man nur eine Idee haben! Diese Pipeline |. Wird mit grep verwendet, um die Bedeutung von Schlüsselwörtern zu extrahieren!

# 2. Entpacken Sie die Datei! Die Syntax und die tatsächliche Vorgehensweise lauten wie folgt:
[root@www ~]# tar -jxv -f gepackte Datei.tar.bz2 Dateiname, der entpackt werden soll
[root@www ~]# tar -jxv -f /root/ etc.tar.bz2 etc/shadow
etc/shadow
[root@www ~]# ll etc
insgesamt 8
-r-------- 1 Wurzel Wurzel 1257 29. September 02:21 Schatten <==Du trinkst! Es gibt nur eine Datei!
# Sehr interessant! Zu diesem Zeitpunkt wird nur eine Datei entsperrt! Der entscheidende Punkt ist jedoch der Dateiname! Sie müssen den richtigen Dateinamen finden.
# In diesem Fall können Sie /etc/shadow nicht schreiben! Aufgrund des in etc.tar.bz2 aufgezeichneten Dateinamens!

So packen Sie ein Verzeichnis ohne einige Dateien im Verzeichnis

Angenommen, wir möchten die wichtigen Verzeichnisse /etc/ /root packen, aber wir möchten die Dateien nicht packen Beginnen Sie mit /root/etc*, da es sich bei diesen Dateien ausschließlich um Sicherungsdateien handelt, die wir gerade erstellt haben! Und vorausgesetzt, dass diese neue Verpackungsdatei als /root/system.tar.bz2 abgelegt werden soll, sollte diese Datei natürlich nicht selbst gepackt werden (da diese Datei unter /root abgelegt wird!), zu diesem Zeitpunkt können wir sie verwenden Hilfe von --exclude ! Ausschließen heißt nicht einschließen! Sie können also Folgendes tun:

[root@www ~]# tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc*
> /root/system.tar.bz2 /etc /root

Der obige Befehl ist eine ganze Liste ~ Tatsächlich können Sie Folgendes eingeben: 『tar -jcv -f /root/system.tar.bz2 - -exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc /root』, wenn Sie zwei Zeilen eingeben möchten, fügen Sie am Ende einen Backslash () hinzu und drücken Sie sofort [Enter], Sie können zur zweiten Zeile gehen und mit der Eingabe fortfahren. Die Art und Weise, wie dieser Auftrag erteilt wird, erläutern wir im Detail in Kapitel 3. Durch diese Aktion --exclude="file" können wir mehrere spezielle Dateien oder Verzeichnisse aus der Verpackungsliste entfernen und so die Verpackungsaktion vereinfachen! ^_^

Außerdem stellte Brother Bird in der neuen Version des tar-Befehls fest, dass die ursprüngliche „--exclude-Datei“ anscheinend nicht tatsächlich ausgeführt werden konnte! Ich habe diese Option deutlich gesehen, als ich man tar verwendet habe, aber als ich info tar verwendet habe, habe ich festgestellt, dass sich die Optionsfunktion in den Modus „--exclude=file“ geändert hat! Diesem Ort muss besondere Aufmerksamkeit gewidmet werden!

Sichern Sie nur Dateien, die neuer als ein bestimmter Zeitpunkt sind.

In manchen Fällen möchten Sie nur neue Dateien sichern, keine alten Dateien! Zu diesem Zeitpunkt ist die Option --newer-mtime sehr wichtig! Tatsächlich gibt es zwei Optionen, eine ist „--newer“ und die andere ist „--newer-mtime“. Was ist der Unterschied zwischen diesen beiden Optionen? Bei der Einführung von Touch in Kapitel 7 haben wir über drei verschiedene Zeitparameter gesprochen. Bei Verwendung von --newer bedeutet dies, dass das nachfolgende Datum „mtime und ctime“ enthält, während –newer-mtime nur mtime ist! Du weißt es also! ^_^. Dann lasst uns versuchen, mit Luo fertig zu werden!

# 1. Verwenden Sie zuerst find, um Dateien zu finden, die neuer als /etc/passwd sind
[root@www ~]# find /etc -newer /etc/passwd
.... ( Prozess weggelassen)....
# Zu diesem Zeitpunkt wird ein Dateiname angezeigt, der neuer als die mtime der Datei /etc/passwd ist.
# Dieses Ergebnis ist auf jedem Host unterschiedlich! Sie können zuerst Ihren eigenen Gastgeber überprüfen, Sie werden nicht wie Bruder Bird sein!

[root@www ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1945 Sep 29 02:21 /etc/passwd

# 2. Okay, lass es uns mit Teer verpacken! Das Datum ist der 29.09.2008, wie oben zu sehen
[root@www ~]# tar -jcv -f /root/etc.newer.then.passwd.tar.bz2
> ="29.09.2008" /etc/*
....(in der Mitte weggelassen)....
/etc/smartd.conf <==Es gibt wirklich eine Sicherungsdatei
. ...(in der Mitte weggelassen)....
/etc/yum.repos.d/ <==Die Verzeichnisse werden alle aufgezeichnet!
tar: /etc/yum.repos.d/CentOS-Base.repo: Datei ist unverändert; nicht gesichert
# Die letzte Zeile zeigt „nicht gesichert“, was bedeutet, dass sie nicht gesichert wurde!

# 3. Zeigen Sie die Datei
[root@www ~]# tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | an '/$'
# Mit diesem Befehl können Sie die Dateinamen in tar.bz2 aufrufen, die nicht mit / enden! Das ist es, was wir wollen!

Jetzt wissen Sie, wie nützlich dieser Befehl ist! Sie können sogar differenzielle Dateien aufzeichnen und sichern. Eine solche Sicherung wird viel einfacher! Sie können sich das so vorstellen: Wenn ich erst vor einem Monat eine vollständige Datensicherung durchgeführt hätte, dann kann ich, wenn ich diesen Monat sichern möchte, natürlich nur die aktualisierten Dateien nach dem Zeitpunkt sichern, an dem ich letzten Monat gesichert habe! Warum? Weil die Originaldateien gesichert wurden! Warum es noch einmal tun? Sichern Sie einfach die neuen Daten. Dies kann die Backup-Kapazität verringern!

Basisname: Tarfile, Tarball?

Es ist auch erwähnenswert, dass die von tar gepackten Dateien unterschiedliche Namen haben, unabhängig davon, ob sie komprimiert sind oder nicht! Wenn es nur zum Packen dient, ist es einfach „tar -cv -f file.tar“. Wir nennen diese Datei tarfile. Wenn es Unterstützung für die Komprimierung gibt, wie zum Beispiel „tar -jcv -f file.tar.bz2“, nennen wir es einen Tarball (Tarball?)! Dies ist nur ein einfacher Titel, aber viele Bücher und das Internet verwenden den Namen dieses Tarballs! Deshalb muss ich es Ihnen vorstellen.

Darüber hinaus kann tar nicht nur Daten in Dateien packen, sondern auch Dateien in bestimmte spezielle Geräte packen. Ein häufiges Beispiel ist beispielsweise ein Bandlaufwerk (Band). Da es sich bei dem Bandlaufwerk um ein einmaliges Lese-/Schreibgerät handelt, können wir zum Kopieren keine Befehle wie cp verwenden! Wenn Sie dann /home, /root, /etc auf einem Bandlaufwerk (/dev/st0) sichern möchten, können Sie Folgendes verwenden: „tar -cv -f /dev/st0 /home /root /etc“. sehr einfache und einfache Bar! Es kommt sehr häufig vor, dass Bandlaufwerke für Backups verwendet werden (insbesondere bei Unternehmensanwendungen)!

Spezielle Anwendung: Verwendung von Pipeline-Befehlen und Datenfluss

Bei der Verwendung von tar gibt es eine der speziellsten Möglichkeiten, nämlich die Umleitung des Standardeingabe- und -ausgabedatenflusses (Standardeingabe). /Standardausgabe) und der Pipeline-Befehlsmethode (Pipe) werden die zu verarbeitenden Dateien gepackt und in das Zielverzeichnis dekomprimiert. Detailliertere Daten zur Datenflussumleitung und Pipeline-Befehlen stellen wir in Kapitel 11 bash vor. Schauen wir uns zunächst ein Beispiel an!

# 1. Packen Sie das gesamte /etc-Verzeichnis und entpacken Sie es in /tmp
[root@www ~]# cd /tmp
[root@www tmp]# tar -cvf - / etc |. tar -xvf -
# Diese Aktion ähnelt cp -r /etc /tmp~ Sie hat immer noch ihren Nutzen!
# Was zu beachten ist, ist, dass die Ausgabedatei zu - und die Eingabedatei auch zu - wird und es eine weitere | gibt.
# Vereinfacht ausgedrückt können Sie es sich als ein Gerät (Puffer) im Speicher vorstellen.
# Für detailliertere Datenfluss- und Pipeline-Befehle lesen Sie bitte das Bash-Kapitel!

Im obigen Beispiel möchten wir „die Daten unter /etc direkt in den aktuellen Pfad kopieren, der sich unter /tmp befindet“, aber wir denken, dass die Verwendung von cp -r etwas mühsam ist. Dann verpacken Sie es einfach auf diese Weise. Das - im Befehl bedeutet die gepackte Datei! Da wir nicht möchten, dass die Zwischendatei existiert, verwenden wir diese Methode, um sie zu kopieren!

Das Obige ist der Inhalt des tar-Befehls, der häufig in Note 004 Linux verwendet wird. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage