Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Linux und Vernetzung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

tar ist eines der beliebtesten Formate für die Dateiarchivierung in Unix- und Linux-basierten Systemen

Der Name selbst leitet sich von Klebeband ARchivab, da es für das Schreiben sequenzieller Daten auf Bandgeräten entwickelt wurde. Manchmal wird es auch als Tarball bezeichnet

Standardmäßig archiviert tar die Dateien nur ohne Komprimierung, sondern unter Verwendung einiger Teile. Wir können verschiedene Komprimierungstechniken verwenden, um eine komprimierte Ausgabe zu erhalten. Das Dienstprogramm tar ist in der Regel standardmäßig in den meisten Linux-Distributionen enthalten, und das Format selbst wird von verschiedenen Tools und Dienstprogrammen in anderen Betriebssystemen, einschließlich Windows und macOS, unterstützt

In diesem Artikel werden wir einige gängige Beispiele und die Verwendung des tar-Befehls und seiner unterstützten Flaggen behandeln

Fangen wir auch an...

Tar-Archiv erstellen

Um ein einfaches unkomprimiertes Archiv zu erstellen, lautet die Syntax für den Befehl tar

$ tar cvf <tar-Dateiname> <Dateien zum Archiv&gt

Dabei stehen die Flaggen c für die Erstellung, v für die ausführliche Ausgabe und f für die Angabe des Dateinamens des tar-Archivs. Geben Sie den Tar-Dateinamen standardmäßig mit der Erweiterung .tar an. Die zu archivierenden Dateien können mit Platzhaltern oder als einzelne oder mehrere Dateinamen/Pfade angegeben werden

Ein Beispiel: Ich habe drei Dateien in meinem Verzeichnis

$ ls -l
insgesamt 12

-rw-r-r-

 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

$
Und ich möchte ein tar-Archiv erstellen, das alle drei Dateien enthält, das geht wie folgt

$ tar cvf archive.tar *
file1.txt
file2.txt
file3.txt

$

 ls -l archive.tar

-rw-r-r-

 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar

$
Ich kann auch nur bestimmte Dateien zum Archivieren angeben, z.B.

$ tar cvf archive1.tar file1.txt file2.txt
file1.txt
file2.txt

$

 ls -l archive1.tar

-rw-r-r-

 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive1.tar

$

Komprimiertes Archiv erstellen (GZ)

tar ermöglicht nicht nur die Archivierung von Dateien, sondern auch deren Komprimierung, um Platz zu sparen. Eines der beliebtesten Komprimierungsformate ist gunzip, das in der Regel durch die Erweiterung .gz nach .tar oder als tgz dargestellt wird. Wir können die Flagge z verwenden, um anzugeben, dass die Dateien mit gunzip komprimiert werden sollen. Hier ist ein Beispiel

$ tar cvzf archive.tar.gz file*
file1.txt
file2.txt
file3.txt

$

 ls -l archive.tar archive.tar.gz

-rw-r-r-

 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar

-rw-r-r-

 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz

$
Sie können feststellen, dass sich die Größe der beiden Archivdateien erheblich unterscheidet, obwohl beide die gleichen drei Dateien enthalten. Dies ist auf die Komprimierung mit dem Flag z zurückzuführen

Komprimiertes Archiv erstellen (BZ2)

tar unterstützt mehrere andere Komprimierungsformate. Eine davon ist bz2 oder bzip2, das durch die Erweiterung tar.bz2 oder manchmal auch als tbz2 dargestellt wird. Damit erhalten Sie zwar eine kleinere Archivgröße, aber es verbraucht mehr CPU-Leistung, so dass der Prozess der Komprimierung/Dekomprimierung langsamer sein kann als bei einem gz-Archiv

Beispiel

$ tar cvjf archive.tar.bz2 file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 12 20:25 archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz
$ file archive.tar*
archive.tar:     POSIX tar-Archiv (GNU)
archive.tar.bz2: bzip2 komprimierte Daten, Blockgröße = 900k
archive.tar.gz: gzip komprimierte Daten, von Unix, Originalgröße modulo 2^32 10240

$

Alle Dateien entpacken

Ein tar-Archiv (ob komprimiert oder unkomprimiert) kann einfach mit der Option x entpackt werden. Die folgenden Beispiele verdeutlichen seine Verwendung

$ tar xvf archive.tar
file1.txt
file2.txt
file3.txt
$ ls -l
total 24
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 19 18:25 archive.tar
-rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

$
Dies funktioniert für ein gz-komprimiertes Archiv wie folgt

$ tar xvf archive.tar.gz
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 19 18:27 archive.tar.gz

-rw-r-r-

 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

$
Oder auch für ein bz2 komprimiertes Archiv als

$ tar xvf archive.tar.bz2
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2

-rw-r-r-

 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

$

Tar-Inhalt auflisten

Um den Inhalt eines tar-Archivs aufzulisten, können Sie das Flag t verwenden, wie unten gezeigt

$ tar tvf archive.tar.bz2

-rw-r-r-

 abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt

-rw-r-r-

 abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt

-rw-r-r-

 abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt

$

Bestimmte Dateien enttarnen

Sie können eine einzelne Datei aus einer tar- oder tar.gz- oder tar.bz2-Archiv entpacken, indem Sie den Dateinamen wie folgt angeben

$ tar xvf archive.tar.bz2 file1.txt
file1.txt

$

 ls -l
total 8

-rw-r-r-

 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2

-rw-r-r-

 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

$
In ähnlicher Weise können Sie mehrere Dateinamen durch Leerzeichen getrennt angeben, um sie in einem Rutsch zu entpacken

$ tar xvf archive.tar.bz2 file1.txt file3.txt
file1.txt
file3.txt
$ ls -l
total 12
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2

-rw-r-r-

 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

$

Untar mit Wildcard

Um eine oder mehrere Dateien unter Verwendung eines Platzhaltermusters zu entpacken, verwenden Sie die Option --wildcards

$ tar xvf archive.tar.bz2 --wildcards "file*"
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2

-rw-r-r-

 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

$

Dateien zum Archiv hinzufügen

Neue Dateien können zu bestehenden unkomprimierten Tarballs hinzugefügt werden, indem Sie r oder --append mit neuen Dateinamen oder Platzhaltermustern verwenden (beachten Sie, dass dies nur mit unkomprimierten .tar-Dateien und nicht mit den komprimierten Formaten tar.gz oder tar.bz2 funktioniert)

$ tar rvf archive.tar file-new*
file-new.txt
file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
-rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt

-rw-r-r-

 abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt

-rw-r-r-

 abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt

$
Sie können feststellen, dass die Auflistung des Inhalts von archive.tar wieder die beiden neu hinzugefügten Dateien anzeigt

Dateien aus dem Archiv löschen

Das Entfernen bestimmter Dateien aus einem tar-Archiv ist mit der Option --delete wie folgt möglich (vergleichen Sie die tar-Liste vor und nach dem Löschen der Dateien)

$ tar tvf archive.tar
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
-rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt
-rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt
-rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt
$ tar --delete -f archive.tar file-new.txt file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt

-rw-r-r-

 abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt

-rw-r-r-

 abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt

$
Auch dies funktioniert nur bei unkomprimierten Tarballs und schlägt bei komprimierten Archivformaten fehl

Erstellen mit Verify

Bei der Erstellung von unkomprimierten tar-Dateien können Sie den Inhalt des Archivs mit der W-Flagge wie folgt verifizieren

$ tar cvfW archive.tar file*.txt
file1.txt
file2.txt
file3.txt
Verify file1.txt
Verify file2.txt
Verify file3.txt

$
Dies kann nicht mit Komprimierungsflags verwendet werden, obwohl Sie die erstellte tar-Datei später mit gzip oder andere Tools komprimieren können

Tar in einen Ordner extrahieren

Wenn Sie den Inhalt Ihres Tarballs nicht in das aktuelle Verzeichnis, sondern in einen bestimmten Ordner extrahieren möchten, verwenden Sie die Flagge -C mit dem Verzeichnispfad wie unten gezeigt

$ tar xvf archive.tar -C new-directory/
file1.txt
file2.txt
file3.txt
file2.txt
file4.txt
$ ls -l new-directory/
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt

-rw-r-r-

 1 abhisheknair abhisheknair 15 Sep 19 18:59 file2.txt

-rw-r-r-

 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt

-rw-r-r-

 1 abhisheknair abhisheknair 10 Sep 19 18:58 file4.txt

$

Diff Flag verwenden

Sie können die Flagge --diff oder d verwenden, um Änderungen zwischen den Dateien im tar-Archiv und den Dateien im Dateisystem zu finden. Hier ist ein Beispiel, bei dem diff einmal ausgeführt wird, wenn die Datei im tar-Archiv und die Datei außerhalb des Archivs identisch waren. Nachdem die Datei aktualisiert wurde, wurde es noch einmal ausgeführt, um den Unterschied in der Ausgabe zu zeigen

$ tar dvf archive.tar file4.txt
file4.txt
$
$ echo newline > file4.txt
$
$ tar dvf archive.tar file4.txt
file4.txt
file4.txt: Mod time unterscheidet sich
file4.txt: Größe weicht ab

$

Dateien ausschließen

Bei der Erstellung von tar-Archiven kann es erforderlich sein, bestimmte Dateien auszuschließen. Dies kann mit dem Flag --exclude erreicht werden

$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/
dir/
dir/file1.txt
dir/file3.txt
$ ls -l dir
total 24
-rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new.txt
-rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new2.txt
-rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:20 file-new3.txt
-rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:27 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair 6 Sep 19 19:27 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair 8 Sep 19 19:27 file3.txt
$ tar tvf archive.tar.gz
drwxr-xr-x abhisheknair/abhisheknair 0 2021-09-19 19:30 dir/

-rw-r-r-

 abhisheknair/abhisheknair 5 2021-09-19 19:27 dir/file1.txt

-rw-r-r-

 abhisheknair/abhisheknair 8 2021-09-19 19:27 dir/file3.txt

$
Wie Sie der obigen Ausgabe entnehmen können, können wir das Flag --exclude mehrfach angeben, um mehrere Dateinamen oder Muster in der UND-Bedingung angeben. Beachten Sie, dass von den sechs Dateien im Verzeichnis des obigen Beispiels nur zwei Dateien die Bedingung erfüllen, um in archive.at.gz aufgenommen zu werden

Tar Inhalt anzeigen Größe

Wir können die Größe des Inhalts eines komprimierten tar-Archivs mit dem folgenden Befehl abfragen

$ tar tvf archive.tar.gz
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt

-rw-r-r-

 abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt

$

 tar -xzf archive.tar.gz --to-stdout|wc -c
56

$
Ähnlich für bz2 Archiv

$ tar tvf archive.tar.bz2
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt

-rw-r-r-

 abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt

$

 tar -xjf archive.tar.bz2 --to-stdout|wc -c
56

$

Berechtigungen beibehalten

Standardmäßig behält der tar-Befehl die Berechtigungen der Dateien und Verzeichnisse bei, die er archiviert. Sie können dies jedoch auch explizit mit der Flagge -p oder --preserve-permissions angeben, wie unten gezeigt

$ tar cvpzf archive.tar.gz *.txt
file1.txt
file2.txt
file3.txt

$

Zusammenfassung 👨‍💻

tar ist seit langem ein nützliches Dienstprogramm auf Unix/Linux-Systemen und wurde hauptsächlich für Archivierungs- und Sicherungsaufgaben verwendet. Das Dienstprogramm hat sich im Laufe der Zeit mit vielen Optionen weiterentwickelt. Es kann für einfache bis komplexe Aufgaben verwendet werden, vorausgesetzt, Sie kennen die Funktionen, die es bietet. Dieser Artikel behandelt einige der grundlegenden Operationen, die Sie mit dem Befehl tar durchführen können, und zeigt, wie er Ihnen bei Ihren tägliche Aufgaben der Systemverwaltung kann helfen

Weitere Einzelheiten finden Sie auf der Manpage man tar oder mit dem Befehl tar --help oder tar --usage.

  • Abhishek Nair
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zu Linux
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder