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

tar-Befehl in Linux mit Beispielen

Einführung

Das GNU tar (kurz für T Affe AR chiver) ist das am weitesten verbreitete Archivierungsdienstprogramm in Linux-Systemen. Direkt im Terminal verfügbar, der tar Der Befehl hilft beim Erstellen, Extrahieren und Auflisten von Archivinhalten.

Das Dienstprogramm ist einfach und hat viele hilfreiche Optionen zum Komprimieren von Dateien, Verwalten von Backups oder Extrahieren einer Rohinstallation.

Dieses Tutorial zeigt anhand von Beispielen und den verfügbaren Optionen, wie Sie den tar-Befehl verwenden.

Voraussetzungen

  • Ein System, auf dem Linux ausgeführt wird.
  • Zugriff auf die Befehlszeile/das Terminal.
  • Eine Datei oder Dateien zum Testen des Befehls.

Tar-Befehlssyntax

Der tar Die allgemeine Befehlssyntax lautet:

tar <operation mode> <option(s)> <archive> <file(s) or location(s)>
  • Betriebsmodus gibt an, welche Operation für die Dateien ausgeführt wird (Erstellung, Extraktion usw.). Der Befehl erlaubt und erfordert nur eine Operation.
  • Optionen ändern die Betriebsart und sind nicht erforderlich. Die Anzahl der Optionen ist unbegrenzt.
  • DasArchiv ist der Dateiname und die Erweiterung.
  • Die Dateinamen ist eine durch Leerzeichen getrennte Liste zum Extrahieren oder Komprimieren oder ein mit Platzhaltern übereinstimmender Name.

Es gibt drei mögliche Syntaxstile, um die Operationen und Optionen zu verwenden:

1. Traditioneller Stil , gruppiert ohne Bindestriche.

Zum Beispiel:

tar cfv <archive> <file(s) or location(s)>

2. UNIX-Kurzoptionsstil , mit einem einzelnen Bindestrich und gruppierten Optionen:

tar -cfv <archive> <file(s) or location(s)>

Alternativ ein Bindestrich vor jeder Option:

tar -c -f -v <archive> <file(s) or location(s)>

3. GNU-Long-Option-Stil mit einem Doppelstrich und einem beschreibenden Optionsnamen:

tar --create --file <archive> --verbose <file(s) or location(s)>

Alle drei Stile kann in einem einzigen tar verwendet werden Befehl.

Tar-Befehlsoptionen

Die folgende Tabelle zeigt den häufig verwendeten tar Operationen und Optionen.

Befehl Rolle Beschreibung
--create
-c
Vorgang Erstellt ein neues Archiv.
--list
-t
Vorgang Listet den Inhalt eines Archivs auf.
--extract
-x
Vorgang Ein oder mehrere Elemente aus einem Archiv extrahieren.
--append
-r
Vorgang Hängt Dateien an ein bestehendes Archiv an.
--concatenate
-A
Vorgang Hängt Archive an ein bestehendes Archiv an.
--compare
--diff
-d
Vorgang Vergleicht Archivmitglieder mit Dateien auf dem System.
--delete Vorgang Löscht ein Mitglied aus dem Archiv.
--update
-u
Vorgang Aktualisiert das Archiv nur dann mit neuen Dateien, wenn sie nicht im Archiv vorhanden und neuer als vorhandene Dateien sind.
--file=<archive>
-f <archive>
Option Gibt die Datei an.
-C Option Ändert das Verzeichnis.
--verbose
-v
Option Zeigt die Datei tar läuft weiter.
--wildcard Option Rendert Wildcard-Suchoptionen.
--bzip2
-j
Option Lesen oder schreiben Sie komprimierte Archive im bzip2-Format.
--gzip
-z
Option Lesen oder schreiben Sie komprimierte Archive im gzip-Format.
--xz
-J
Option Komprimierte Archive im xz-Format lesen oder schreiben.

Folgen Sie den Beispielen im nächsten Abschnitt, um zu lernen, wie man mit tar arbeitet .

Tar-Befehlsbeispiele

Die folgenden Beispiele haben die folgenden Anforderungen:

1. Erstellen Sie ein Verzeichnis namens tar_examples und navigieren Sie zum Verzeichnis:

mkdir tar_examples && cd tar_examples

2. Erstellen Sie ein weiteres Verzeichnis namens files in tar_examples und geben Sie dieses Verzeichnis ein:

mkdir files && cd files

3. Erstellen Sie Dateien, um die Dateien zu füllen Verzeichnis:

touch file{0..100}.txt

Um zum übergeordneten Verzeichnis zurückzukehren, verwenden Sie:

cd ..

Alle nachstehenden Beispiele funktionieren mit tar_examples Verzeichnis.

1. Erstellen Sie ein Archiv

Die Syntax zum Erstellen eines Archivs hängt vom Archivtyp ab. Verwenden Sie zum Erstellen eines Archivs tar mit dem -c oder --create Betrieb.

Erstellen Sie ein tar-Archiv

Um ein Tar-Archiv (auch Tarball genannt) zu erstellen, verwenden Sie:

tar cf <archive name>.tar <file(s) or location(s)>

Archivieren Sie beispielsweise die Dateien Verzeichnis:

tar cf files.tar files

Die Ausgabe listet jede Datei auf, die dem Archiv hinzugefügt wurde. Zeigen Sie den Inhalt des Verzeichnisses an, um die erstellte file.tar zu sehen Archiv:

tar cf files.tar files

Die Ausgabe listet jede Datei auf, die dem Archiv hinzugefügt wurde. Zeigen Sie den Inhalt des Verzeichnisses an, um die erstellte file.tar zu sehen Archiv:

ls -l

Erstellen Sie ein komprimiertes tar.gz-Archiv

Fügen Sie das -z hinzu Option zum Erstellen einer komprimierten GNUzip-Datei (gzip):

tar czf <archive name>.tar.gz <file(s) or location(s)>

Zum Beispiel:

tar czf files.tar.gz files

Die Dateigröße ist kleiner als eine normale Tarball-Datei und das Originalverzeichnis.

Erstellen Sie ein komprimiertes tar.bz2-Archiv

Das bzip2 ist ein Dateikomprimierungsprogramm und eine Alternative zu gzip.

So erstellen Sie eine tar.bz2 Datei, fügen Sie -j hinzu Stichwort:

tar cjf <archive name>.tar.bz2 <file(s) or location(s)>

Zum Beispiel:

tar cjf files.tar.bz2 files

bzip2 hat eine höhere Komprimierungsrate und dauert länger als gzip.

tar.xz-Archiv erstellen

Verwenden Sie das -J Tag zum Komprimieren von Archiven im tar.xz-Format:

tar cJf <archive name>.tar.xz <file(s) or location(s)>

Zum Beispiel:

tar cJf files.tar.xz files

Die xz-Komprimierung dauert im Vergleich zu gzip und bz2 am längsten. Bei größeren Dateien hat xz jedoch die höchsten Komprimierungsraten.

2. Dateien nach Erstellung entfernen

Um die Dateien nach der Archivierung von der Festplatte zu entfernen, verwenden Sie --remove-files Option am Ende:

tar cf <archive> <file(s) or location(s)> --remove-files

Erstellen Sie beispielsweise ein tar-Archiv mit den Dateien Verzeichnis und entfernen Sie es mit einem Befehl von der Festplatte:

tar cf files.tar files --remove-files

Überprüfen Sie den Inhalt des Verzeichnisses, um sicherzustellen, dass der Vorgang korrekt funktioniert.

3. Auszug aus dem Archiv

Das Extrahieren aus einem Archiv oder komprimierten Archiv verwendet den -x oder --extract Betrieb mit tar . Die zusätzlichen Optionen hängen vom Dateityp ab und wo tar die Komponenten extrahieren soll.

Auszug aus dem tar-Archiv

Die allgemeine Syntax zum Extrahieren aus einem tar-Archiv lautet:

tar xf <archive name>.tar

Standardmäßig extrahiert tar alle Komponenten in das aktuelle Verzeichnis. Um anzugeben, wo die Komponenten extrahiert werden sollen, fügen Sie -C hinzu Option und geben Sie den Pfad an:

tar xfC <archive name>.tar <path>

Zum Beispiel, um ein Verzeichnis mit dem Namen extracted_tar zu erstellen und extrahieren Sie die Dateien aus files.tar , ausführen:

mkdir extracted_tar && tar xfC files.tar extracted_tar

Der Befehl gibt keine Bestätigungsmeldung aus. Überprüfen Sie den Inhalt des Verzeichnisses, um zu bestätigen, dass die Komponenten erfolgreich extrahiert wurden.

Auszug aus dem tar.gz-Archiv

Verwenden Sie das -z Option zum Extrahieren einer tar.gz-Datei:

tar xzf <archive name>.tar.gz

Der Befehl extrahiert den Inhalt im aktuellen Verzeichnis. Fügen Sie -C hinzu Option zur Angabe des Speicherorts:

tar xzfC <archive name>.tar.gz <location>

Erstellen Sie beispielsweise ein neues Verzeichnis mit dem Namen extracted_gz und extrahieren Sie die files.tar.gz Inhalt:

mkdir extracted_gz && tar xzfC files.tar.gz extracted_gz

Die tar.gz-komprimierten Archive brauchen im Vergleich zu anderen Komprimierungsformaten am wenigsten Zeit zum Extrahieren.

Auszug aus dem tar.bz2-Archiv

Um Dateien aus einem tar.bz2-komprimierten Archiv in das aktuelle Verzeichnis zu extrahieren, verwenden Sie:

tar xjf <archive name>.tar.bz2

Extrahieren Sie tar.bz2-Archive in ein bestimmtes Verzeichnis mit:

tar xjfC <archive name>tar.bz2 <location>

Erstellen Sie beispielsweise ein Verzeichnis und extrahieren Sie den Inhalt aus files.tar.bz2 :

mkdir extracted_bz2 && tar xjfC files.tar.bz2 extracted_bz2

Auszug aus dem tar.xz-Archiv

Fügen Sie das -J hinzu Option zum Extrahieren aus tar.xz-komprimierten Archiven. Die im aktuellen Verzeichnis zu extrahierende Syntax lautet:

tar xJf <archive name>.tar.xz

Um den Inhalt in ein bestimmtes Verzeichnis zu extrahieren, verwenden Sie -C Option und fügen Sie den Pfad hinzu:

tar xJfC <archive name>.tar.xz <location>

Erstellen Sie beispielsweise ein Verzeichnis und extrahieren Sie die Datei files.tar.xz Inhalt:

mkdir extracted_xz && tar xJfC files.tar.xz extracted_xz

Das xz-Komprimierungsformat ist der Mittelweg zwischen gz und bz2, wenn es um die Extraktionszeit geht.

4. Steuerung überschreiben

Steuerelemente zum Überschreiben von Tar behandeln Situationen, in denen sich Dateinamen im Archiv mit Dateien im Arbeitsverzeichnis überschneiden.

Die drei möglichen Überschreibaktionen sind:

1. Dateien im Arbeitsverzeichnis überschreiben:

tar xf <archive> <Optional file(s) or location(s)> --overwrite

2. Dateien im Arbeitsverzeichnis nicht überschreiben:

tar xf <archive> <Optional file(s) or location(s)> --keep-old-files

Wenn die Dateien bereits existieren, führt tar die Extraktion nicht durch.

3. Dateien nur extrahieren, wenn sie neuer sind als die vorhandenen Dateien:

tar xf <archive> <Optional file(s) or location(s)> --keep-newer-files

Wenn die Dateien im Arbeitsverzeichnis neuer oder gleich alt sind, entpackt tar die Dateien nicht.

5. Archivinhalte auflisten

Verwenden Sie den folgenden Befehl, um den Inhalt eines Archivs aufzulisten:

tar tf <archive>

Die Option funktioniert für jede Dateierweiterung, die tar.

enthält

Listen Sie beispielsweise die Dateien und Verzeichnisse in files.tar auf Archiv:

tar tf files.tar.gz

Die Ausgabe listet alle im Archiv gespeicherten Inhalte auf.

6. Eine Datei in einem Archiv finden

Es gibt zwei Möglichkeiten, bestimmte Inhalte mit tar zu finden:

1. Das -t Die Option zum Auflisten von Dateien in einem Archiv ist praktisch, um bestimmte Dateien zu finden. Fügen Sie den Dateinamen (oder die Namen) nach dem Befehl hinzu:

tar tf <archive> <file(s)>

Zum Beispiel, um file50.txt zu finden in der files.tar.gz archivieren, ausführen:

tar tf files.tar.gz file/file50.txt

Die Option erfordert die Kenntnis des möglichen Pfads zur Datei.

2. Verwenden Sie den tar zusammen mit dem grep-Befehl zum Filtern der Ausgabe:

tar tf <archive> | grep <file(s)>

Zum Beispiel:

tar tf files.tar.gz | grep file50.txt

Die Option erfordert keine Kenntnis des möglichen Pfads zur Datei.

7. Mehrere Dateien in einem Archiv finden

Verwenden Sie die --wildcards Option, um mehrere Dateiinstanzen abzugleichen. Zum Beispiel:

tar tf files.tar.gz --wildcards file/files5*.txt

Wenden Sie Wildcard-Matching an, wenn Dateien einen ähnlichen Namen haben, oder um einen bestimmten Dateityp zu filtern.

8. Dateien beim Erstellen des Archivs ausschließen

Um bestimmte Dateien während der Erstellung aus dem Archiv auszuschließen, fügen Sie die folgende Option hinzu:

tar cf <archive> --exclude='<pattern>' <files(s) or location(s)>

Erstellen Sie beispielsweise ein Archiv aus dem Dateiverzeichnis und schließen Sie alle .txt-Dateien aus:

tar cf files.tar --exclude='*.txt' files

Archivinhalt auflisten:

tar tf files.tar

Die Ausgabe zeigt keine .txt-Dateien, nur die Dateien Verzeichnis im Archiv.

9. Einzelne Datei aus dem Archiv extrahieren

Vermeiden Sie es, das gesamte Archiv zu extrahieren, wenn Sie eine oder mehrere Dateien benötigen.

So erhalten Sie eine einzelne Datei aus einem Archiv:

1. Inhalt auflisten und prüfen, ob die Datei existiert:

tar tf files.tar | grep file100.txt

Die Ausgabe gibt den Pfad zu der Datei aus, die für den nächsten Schritt benötigt wird.

2. Extrahieren Sie die spezifische Datei mit:

tar xf files.tar files/file100.txt

Der Befehl erstellt das Verzeichnis files nur mit der angegebenen Datei. Befolgen Sie die gleichen Schritte, um eine einzelne Datei aus komprimierten Archiven zu extrahieren, indem Sie das entsprechende Tag hinzufügen. Verwenden Sie beispielsweise -z Option zum Pullen aus einer tar.gz-Datei.

10. Ausführliche Option

Die Option verbose zeigt zusätzliche Informationen an, nachdem ein tar-Befehl ausgeführt wurde. Fügen Sie -v hinzu oder --verbose zu jeder Operation, um das Ergebnis zu sehen.

Erstellen Sie beispielsweise eine tar.gz-Datei und fügen Sie -v hinzu :

tar czfv files.tar.gz files

Die Ausgabe zeigt jede Datei, wie sie dem Archiv hinzugefügt wird.

Einige tar-Befehle zeigen zusätzliche Informationen, wenn Sie -v hinzufügen zweimal markieren. Versuchen Sie beispielsweise, mit -vv Dateien zu einem Archiv hinzuzufügen :

tar czfvv files.tar.gz files

Die Ausgabe gibt ein langes Listenformat aus und ähnelt der Ausführung des Befehls ls -l.

11. Aus Archiv löschen

Um aus dem Archiv zu löschen, suchen Sie die Datei, die Sie entfernen möchten, zum Beispiel:

tar tf files.tar | grep file100.txt

Entfernen Sie dann die Datei mit --delete Stichwort:

tar --delete -f files.tar files/file100.txt

Die Löschoption funktioniert nicht bei komprimierten Dateiformate.

12. Dateien an Archiv anhängen

Hängen Sie Dateien mit -r an ein vorhandenes Archiv an Schild. Die Syntax lautet:

tar rf <archive name>.tar <file(s) or location(s)>

Hängen Sie beispielsweise die komprimierte Datei files.tar.gz an Datei in die files.tar Archiv:

tar rf files.tar files.tar.gz

Bereits komprimierte Archive können nicht aktualisiert werden, daher funktioniert die Syntax nur für Tarball-Dateien .

13. Archive kombinieren

Verwenden Sie --concatenate oder -A Option zum Kombinieren mehrerer Archive. Die grundlegende Syntax ist:

tar Af <archive to extend> <archive to extend with>

Kopieren Sie als Beispiel die vorhandene files.tar Datei mit dem cp-Befehl:

cp files.tar files_copy.tar

Als nächstes verketten Sie die beiden Archive:

tar Af files.tar files_copy.tar

Überprüfen Sie die Dateigröße, um zu bestätigen, dass die Verkettung funktioniert hat.

14. Unterschied zwischen Archiv und Dateien

Um den Unterschied zwischen einem Archiv und Dateien auf der Festplatte zu überprüfen, verwenden Sie -d Stichwort:

tar df <archive name>

Der Befehl sucht nach denselben Inhalten und vergleicht sie mit dem, was sich im Archiv befindet. Die Option sucht nur nach vorhandenen Dateien und ignoriert alle neu hinzugefügten Dateien.

Die folgenden Schritte zeigen, wie Sie -d verwenden , --diff , oder --compare Tag mit tar :

1. Erstellen Sie ein Tar-Archiv:

tar cf files.tar files

2. Vergleichen Sie das Archiv mit dem bestehenden Verzeichnis:

tar df files.tar

Die Ausgabe zeigt nichts an, was bedeutet, dass es keinen Unterschied zwischen den vorhandenen Dateien gibt.

3. Fügen Sie Text zu einer bestehenden Datei in den Dateien hinzu Verzeichnis:

echo 'Hello' >> files/file0.txt

4. Vergleichen Sie das Archiv erneut mit dem bestehenden Verzeichnis:

tar df files.tar

Dieses Mal zeigt die Ausgabe Unterschiede in der Änderungszeit und der Größe für eine bestimmte Datei. Der Vergleich bietet Einblick in alle Änderungen, die nach der Erstellung des Archivs am System vorgenommen wurden.

15. Dateien im Archiv aktualisieren

Aktualisieren Sie die vorhandenen Dateien im Archiv mit einer neueren Version von der Festplatte mit -u Möglichkeit:

tar uf <archive> <file(s) or location(s)>

Aktualisieren Sie beispielsweise files.tar Archiv mit geänderter Textdatei:

tar uf files.tar files

Überprüfen Sie den tar-Inhalt auf die geänderte Datei:

tar tfv files.tar | grep files0.txt

Der Befehl aktualisiert das Archiv mit geänderten Dateien ohne Überschreibungen.

16. Geänderte Zeit

Tar bietet verschiedene Optionen, um den Zeitstempel der Datei zu ändern. Legen Sie beim Erstellen eines Archivs ein benutzerdefiniertes Datum fest, indem Sie --mtime hinzufügen Option und Angabe eines Datums:

tar cf <archive> <file(s) or location(s)> --mtime=YYYY-MM-DD

Erstellen Sie beispielsweise ein Archiv und legen Sie das Datum auf den 1. Januar 1999 fest:

tar cf files.tar files --mtime=1999-01-01

Alternativ extrahieren Sie die Dateien mit dem aktuellen Datum und der Uhrzeit:

tar xf files.tar -m

Eine nützliche Funktion bei der Arbeit mit Zeit ist das Filtern von Dateien, die nach einem bestimmten Datum geändert wurden. Um beispielsweise Dateien zu extrahieren, die nach einem bestimmten Datum erstellt wurden, verwenden Sie --newer-mtime Option und fügen Sie das Datum hinzu:

tar xf <archive> --newer-mtime=YYYY-MM-DD

17. Berechtigungen

Es gibt zwei Möglichkeiten, Dateiberechtigungen beim Extrahieren eines Archivs mit tar zu steuern:

1. Ursprüngliche Berechtigungen beibehalten:

tar xf <archive name> --preserve-permissions

Die Berechtigungen sind wie in der Datei vor der Archiverstellung angegeben.

2. Ändern Sie die Berechtigungen auf den standardmäßigen umask-Wert:

tar xf <archive name> --no-same-permissions

Die Dateien übernehmen die standardmäßigen Linux-Berechtigungen.

18. Dateibesitz

Tar ermöglicht die Konfiguration des Dateibesitzes. Um beispielsweise den Dateieigentümer beim Erstellen eines Archivs festzulegen, fügen Sie --owner hinzu und --group Optionen und geben Sie jeweils Werte an:

tar cf <archive> <file(s) or location(s)> --owner=<value> --group=<value>

Der Eigentümerwert repräsentiert die UID (Benutzer-ID), während der Gruppenwert die GID ist (Gruppen-ID). Um diese Werte für einen Benutzer zu finden, führen Sie Folgendes aus:

id <username>

Erstellen Sie beispielsweise ein Archiv und setzen Sie den Besitz auf root:

tar cf files.tar files --owner=0 --group=0

Tar ermöglicht die Beibehaltung des Eigentums beim Extrahieren aus einem Archiv. Fügen Sie dazu --same-owner hinzu Option am Ende:

tar xf <archive> --same-owner

19. In externes Programm schreiben

Der --to-command Die Option weist tar an, jede extrahierte Datei an die Standardausgabe für ein externes Programm zu senden. Die grundlegende Syntax ist:

tar xf <archive> --to-command='<command>'

Extrahieren Sie beispielsweise die Datei files.tar Inhalt und leiten Sie die Dateinamen als Verzeichnisse weiter:

tar xf files.tar --to-command='mkdir $TAR_FILENAME'

Der Befehl erstellt Verzeichnisse, die nach jeder extrahierten Datei benannt sind. Weitere Informationen und die verfügbaren Linux-Umgebungsvariablen finden Sie auf der Handbuchseite.

20. Tägliche Backups erstellen

Um tägliche Backups zu automatisieren, erstellen Sie ein Bash-Skript und fügen Sie die folgenden Zeilen hinzu:

tar czf backup-$(date +%Y%m%d).tar.gz files
find backup* -mtime +1 -delete

Der Befehl tar erstellt ein komprimiertes Archiv, während der Befehl find nach Backup-Dateien sucht, die älter als einen Tag sind. Ändern Sie das +1 Parameter auf +7 für wöchentlich oder +31 für monatliche Backups.


Linux
  1. Linux Tee-Befehl mit Beispielen

  2. Linux-Kopfbefehl mit Beispielen

  3. JQ-Befehl in Linux mit Beispielen

  4. Linux-tar-Befehl

  5. tar-Befehlsbeispiele unter Linux

Tr-Befehl in Linux mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Linux-CD-Befehl mit Beispielen

Linux-Uhrbefehl mit Beispielen

15 Verwendung des Tar-Befehls unter Linux mit Beispielen

Linux-IP-Befehl mit Beispielen