Untar, ungz, gz, tar - wie erinnerst du dich an alle nützlichen Optionen?


76

Ich bin mir ziemlich sicher, dass ich nicht der einzige bin, der das folgende Problem hat: Jedes Mal, wenn ich eine Datei in * nix dekomprimieren muss, kann ich mich nicht an alle Schalter erinnern und google sie, was angesichts der Häufigkeit, mit der ich es zu tun habe, überraschend ist mach das.

Hast du einen guten Kompressions-Spickzettel? Oder wie wäre es mit einer Mnemonik für all diese fiesen Schalter in Teer?

Ich mache aus diesem Artikel ein Wiki, damit wir hier einen schönen Spickzettel erstellen können.

Oh, und zu Manpages: Gibt es eine Sache, für die sie nicht hilfreich sind? Es geht darum, herauszufinden, wie man eine Datei dekomprimiert.


1
benutze die manpages, dann musst du kein wiki erstellen und nur den man befehl merken :-) man (1)
Florenz Kley

9
eXtract Zee File ist, wie ich mich erinnere
Kanadier Luke

Create Zee Vocking File ist möglicherweise für die Erstellung einer .tar.gz
CousinCocaine 14.10.13

Antworten:


65

Oder wie wäre es mit der Verwendung der Shell mit erweiterten Vervollständigungsfunktionen (wie zsh oder neuen Versionen von bash), die die Optionen mit umfassender Hilfe für Sie vervollständigen? :))

Zum Thema Tar: Schauen Sie sich einfach die "QWERTY" -Tastatur an. Es gibt Buchstaben "zxcvf" nebeneinander. Sie benötigen entweder "tar czvf file.tar.gz files" oder "tar xzvf file.tar.gz".


Requisiten für die tatsächliche Beantwortung der Frage :)

Das ist ein cooler "QWERTY" -Tipp! :)

verdammt geil!
Deadprogrammer

2
Ein weiterer Tipp ist, dass die zOption (oder die jOption für .bz2Dateien) beim Extrahieren mit modernen Versionen von tar nicht benötigt wird. Die Datei wird automatisch dekomprimiert.
Nate

10
Ich habe ungefähr zehn Milliarden Mal Teer verwendet und nie bemerkt, dass alle am häufigsten verwendeten Optionen auf der Tastatur direkt nebeneinander liegen. Headsmack
Tyler McHenry

41

Zusammenfassung der Tar-Optionen

Sie können dies gerne bearbeiten, um weitere esoterische Schalter hinzuzufügen, aber hier sind die Grundlagen:

  • x - Dateien extrahieren
  • c - Archiv erstellen
  • t - Dateien auflisten
  • v - ausführlich (Dateien auflisten, während sie verarbeitet werden)
  • j - Verwenden Sie die bz2-Komprimierung
  • z - GZ-Komprimierung verwenden
  • f - Lesen oder Schreiben von Dateien auf die Festplatte

Beispiele

Dekomprimieren Sie eine tar.gz-Datei: tar zxf tarball.tar.gz

Dekomprimieren Sie eine tar.bz2-Datei: tar jxf tarball.tar.bz2

Erstellen Sie eine tar.gz-Datei: tar zcvf tarvall.tar.gz mydir / *


23

Es gibt ein kleines Perl-Skript namens "unp".

unp filename.tar.gz

... und es extrahiert alles. Funktioniert mit jeder komprimierten Datei, solange Sie die richtigen Binärdateien haben. Und man vergisst einfach die Syntax oder irgendetwas davon. Überprüfen Sie die Repositorys Ihrer Linux-Distribution. Es sollte da sein (zumindest auf Arch, Debian und Ubuntu).


Selbst nachdem ich lange Zeit tar benutzt habe, muss ich immer noch nach den dummen Flaggen googeln. Unp ist der Weg zu gehen.
Yada

8

Wirklich bei einer häufigen Verwendung mache ich einen Unterschied zwischen dem Extrahieren von (x) Daten und dem Komprimieren von (c) Daten:

Extrahieren:

tar xzf data.tgz

Komprimieren:

tar czf data.tgz

Außerdem können Sie Ihrer .bashrc zwei Funktionen hinzufügen:

function extract () {     
        if ($# -ne 1); then
                echo "Usage: $0  `<compressed archive>"`
                exit 1
        fi
        tar xzf $1
}

function compress () {
        if ($# -ne 2); then
                echo "Usage: $0 `<compressed archive> <files|directories>"`
                exit 1
        fi
        tar czf $1 $2
}

Es gibt eine weitere nette Extraktionsfunktion, die die Erweiterung Ihrer komprimierten Datei erkennt und die Arbeit für Sie erledigt:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }

5

Geben Sie einfach tar --helpund es ist Ihr Spickzettel.


12
Ernsthaft, haben Sie jemals versucht, diese Manpage zu lesen?
Deadprogrammer

Es mag ein bisschen unleserlich und lang sein, aber ich denke, es funktioniert gut, wenn man nur den Namen einer Option sucht. Sie können auch nach der gewünschten Option suchen, z. B. 'tar --help | Grep-Extrakt '.
Jeremy Ruten

1
Toll. Und dann müssen Sie eine Manpage durchblättern, die Ihnen (unter anderem) Tonnen archaischer Streamer-Befehle und -Optionen verrät, die nur der Entwickler benötigt.

2
Ich verstehe wirklich nicht, was daran so schwer ist. Um ein Archiv zu extrahieren, suchen Sie einfach die Option extract und fügen Ihrem Befehl -x hinzu. Wenn Sie es ausführlich möchten, suchen Sie diese Option und fügen Sie av hinzu, um -xv zu erhalten. Fahren Sie dann fort, bis Sie den gewünschten Befehl erhalten. Es gibt sogar Beispielbefehle für allgemeine Operationen.
Jeremy Ruten

1
Jeremy, das eigentliche Problem ist, dass Sie möglicherweise nicht immer den richtigen Wortschatz kennen. Als solches ist es leicht, verwirrt zu werden und ähnliche Optionen zu finden und sie nicht funktionieren zu lassen. Dann müssen Sie (einige) in der richtigen Reihenfolge platzieren. Dies ist für jemanden, der von Windows weg migriert, nicht trivial. Dies gilt umso mehr, als sie kein Skripting in Windows kannten.
Nazadus

3

Wenn Sie Probleme haben, sich an die tar-Optionen zu erinnern, versuchen Sie es mit Pipes:

  • zcat file.tar.gz | tar xvf -
  • bzcat file.tar.bz2 | tar xvf -

Ersetzen Sie tar xvdurch, tar tvum nur den Inhalt des Tarballs anzuzeigen.

Persönlich benutze ich die folgenden Mnemonics:

  • t, x oder c für "Tabellieren", "Extrahieren" bzw. "Erzeugen".
  • v zum Auflisten aller Dateien.
  • z, j oder nichts für tar.gz, tar.bz2 bzw. plain.tar.
  • f für die Angabe eines Dateinamens im Vergleich zur Standardeinstellung für die Verwendung von stdin / stdout oder eines Bandgeräts.

Obwohl "j" und "bzip2" scheinbar nichts miteinander zu tun haben, fällt es mir leicht, mich an diese Ausnahme zu erinnern.

Ich finde es auch lustig, dass Googling "man tar" ersetzt hat.


Sie sollten es sich zur Gewohnheit machen, immer die fOption bereitzustellen: Es ist erst in letzter Zeit, dass Verteilungen von tar standardmäßig f -, der historische Standard f /dev/rmt0oder ähnlich sind. Schließlich ist tar der Tape ARchiver.
Ephemient

1
was ist tabellarisch?
Claudiu


2

Die drei am häufigsten verwendeten Operationen :

--create -c

Erstellen Sie ein neues Tar-Archiv.

--list -t

Listen Sie den Inhalt eines Archivs auf.

--extract -x

Extrahieren Sie ein oder mehrere Mitglieder aus einem Archiv.


Die fünf erweiterten Teeroperationen :

--append -r

Fügen Sie einem bereits vorhandenen Archiv neue Einträge hinzu.

--update -u

Fügen Sie neuere Kopien von Archivmitgliedern an das Ende eines Archivs hinzu, falls vorhanden.

--concatenate --catenate -A

Fügen Sie ein oder mehrere vorhandene Archive am Ende eines anderen Archivs hinzu.

--delete

Elemente aus einem Archiv löschen (funktioniert nicht bei Bändern).

--compare --diff -d

Vergleichen Sie Archivmitglieder mit ihren Gegenstücken im Dateisystem.



2

Ich lese immer die Befehle in meinem Kopf vor, während ich tippe

komprimiert eine ausführliche Zip-Datei

tar cvzf FILE

extrahieren Sie die ausführliche Zip-Datei FILE

tar xvzf FILE

2

Ich mache folgendes

So erstellen Sie einen Teer:

tar czvf foo.tar.gz <files to be included>

Zu enttarieren:

tar zxvf foo.tar.gz

Dies sollten die Hauptschalter sein, über die Sie sich Sorgen machen müssen:

c - create
z - compress/uncompress
x - extracte
v - verbose
f - file

Sie können einige schickere Dinge wie tar und untar inline tun, während Sie versuchen, Dateien zwischen Verzeichnissen zu verschieben:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )

1

90% der Zeit benutze ich nur

tar -xvf file.*  

x: extrahiere
v: sei ausführlich (optional)
f: Eingabedatei (tar, gz, bzip2, etc ...)

Einfach, nicht wahr? :)
Verwenden Sie Fileroller oder Ark, wenn Sie nicht in einer Konsole sind.


Bisher habe ich Fileroller verwendet, aber derzeit habe ich kein Glück, da die Version, die ich habe, 1,1 GB Speicher verwendet.
Andrew Grimm

1

Ich benutze seit vielen Jahren ein Perl-Skript aunpack, das Teil des atool- Projekts ist. Also läuft man einfach: aunpack foo.{zip/tar.gz/tar.bz2}und es macht das Richtige basierend auf der Dateierweiterung.

Der andere Vorteil aunpackist, dass das aktuelle Verzeichnis nicht mit vielen Dateien verschmutzt wird. Angenommen, es gibt 20 Dateien foo.zip, die sich nicht in einem Unterverzeichnis befinden. Anstatt diese Dateien in das aktuelle Verzeichnis zu verschieben, aunpackwird ein fooUnterverzeichnis erstellt und alle Dateien dort abgelegt.


1

Alles, was Sie brauchen, ist tar x(Extrakt aus stdin), tar c(Teer zu stdout), gzip -c(Gzip von stdin zu stdout; -1zu -9für Komprimierungsstufen; dasselbe gilt für bzip2) und gunzip -c(Gunzip von stdin zu stdout) - alles andere sind Pipes.

Zum Teer und Gzip:

$ tar c * | gzip -c > out.tar.gz

Zum Entpacken und Entpacken

$ gunzip -c < out.tar.gz | tar x

Wenn Sie süße Fortschrittsbalken wünschen, verwenden Sie pv, das cat ähnelt, aber Fortschrittsbalken anzeigt:

$ tar c * | bzip2 -c | pv > out.tar.gz
 22.6MiB 0:00:03 [3.64MiB/s] [  <=>                           ]
$ pv in.tar.gz | bunzip2 -c | tar x
   80MiB 0:00:00 [  58MiB/s] [===============================>] 100%

0

Ich denke, es ist einfach, sich vorzustellen, was Sie wollen, und nicht nur ein paar Buchstaben.

Zur Veranschaulichung werde ich ein Beispiel zum Extrahieren von file.tar.gz verwenden:

Da es sich um eine TAR-Datei handelt, sollten Sie das TAR-Programm verwenden. Dann sind es die Möglichkeiten:

  1. x da willst du e x traktieren.
  2. z wenn die Datei mit .gz endet. (gz steht nach tar im Dateinamen) Diese Option komprimiert das Archiv.
  3. f für Datei, gefolgt vom Archivnamen.

Dies wird im folgenden Beispiel gezeigt:

tar xzf file.tar.gz

0

Ich erinnere mich, dass es immer "tar XXvf" ist, wo die beiden X sind

  • x für e X- Trakt oder c für C- Reakt und
  • entweder z = gzip, j = bzip2 (gzip ist häufiger, daher ist es normalerweise z, aus welchem ​​Grund auch immer, das j = bzip2 steckt einfach in meinem Kopf fest).

Gelegentlich stoßen Sie auf komprimierte, aber nicht geteerte Dateien, in denen Sie unabhängig vom Komprimierungstyp Un hinzufügen . zB g un zip oder b un zip2.

Wenn überhaupt, vergesse ich die 2 und tippe manchmal "bzip".


0

Sie können auch einen Alias ​​erstellen. Füge einfach diese zwei Zeilen zu deiner ~/.bash_aliasesDatei hinzu:

alias untar="tar xvf"
alias dotar="tar cvf"

Sie können dann verwenden untar foo.tar.gz, um zu extrahieren und dotar foo.barzu komprimieren. Sie können andere Aliase verwenden, an die Sie sich leicht erinnern können.


0

C reate Z bis ip F ilename

tar -czf myfile.tar.gz myfile.sql

e X - Darm - Trakt Z ip mit F ilename

tar -xzf myfile.tar.gz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.