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ältListen 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.