Untar, ungz, gz, tar - como você se lembra de todas as opções úteis?

70
Tenho certeza de que não sou o único com o seguinte problema: toda vez que eu preciso descompactar um arquivo no * nix, não consigo me lembrar de todos os switches e termino pesquisando, o que é surpreendente considerando quantas vezes Eu preciso fazer isso.

Você tem uma boa cola de compressão? Ou que tal um mnemônico para todos aqueles interruptores desagradáveis no alcatrão?

Eu estou fazendo deste artigo um wiki para que possamos criar uma boa folha de dicas aqui.

Ah, e sobre man pages: há uma coisa pela qual eles não ajudam, é para descobrir como descompactar um arquivo.

    
por deadprogrammer 21.10.2008 / 23:56

16 respostas

62

Ou que tal usar o shell com recursos avançados de conclusão (como zsh ou versões novas do bash) que completarão as opções para você, com ajuda abrangente? :))

Em relação ao tar: basta olhar para o teclado "qwerty". Há letras "zxcvf" ao lado do outro. Você precisa dos arquivos "tar czvf file.tar.gz" ou "tar xzvf file.tar.gz".

    
por 22.10.2008 / 00:02
39

Resumo da opção de alcatrão

Vocês são bem-vindos para editar isso para adicionar opções mais esotéricas, mas aqui está o básico:

  • x - extract files
  • c - create archive
  • t - list files
  • v - verbose (list files as it processes them)
  • j - use bz2 compression
  • z - use gz compression
  • f - read or write files to disk

Exemplos

Descompacte um arquivo tar.gz: tar zxf tarball.tar.gz

Descompacte o arquivo tar.bz2: tar jxf tarball.tar.bz2

Crie um arquivo tar.gz: tar zcvf tarvall.tar.gz mydir / *

    
por 05.08.2013 / 22:12
22

Existe um pequeno script em Perl chamado "unp".

unp filename.tar.gz

... e isso extrai tudo. Funciona com qualquer arquivo compactado contanto que você tenha os binários corretos. E você acabou de esquecer a sintaxe ou qualquer outra porcaria. Verifique os repositórios da sua distribuição Linux. Deve estar lá (pelo menos no Arch, Debian e Ubuntu).

    
por 22.10.2008 / 00:19
6

Basta digitar tar --help e sua planilha.

    
por 22.10.2008 / 00:01
6

Realmente com um uso freqüente, eu faço diferença entre extrair (x) dados e compactar (c) dados:

Para extrair:

tar xzf data.tgz

Para compactar:

tar czf data.tgz

Além disso, você também pode adicionar duas funções ao seu .bashrc:

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
}

Há outra função de extração legal, que detecta a extensão do seu arquivo compactado e faz o trabalho para você:

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
 }
    
por 03.11.2011 / 03:46
3

Se você tiver problemas para lembrar das opções de tar, tente usar pipes:

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

Substitua tar xv por tar tv para visualizar apenas o conteúdo do tarball.

Pessoalmente, uso os seguintes mnemônicos:

  • t, x ou c para "tabulação", "xtração" ou "criação", respectivamente.
  • v para listar todos os arquivos.
  • z, j ou nada para tar.gz, tar.bz2 ou simples .tar, respectivamente.
  • f para atribuir um nome de arquivo ao padrão de usar stdin / stdout ou um dispositivo de fita.

Embora "j" e "bzip2" não tenham nada a ver um com o outro, acho fácil lembrar essa exceção.

Além disso, acho engraçado que o Google tenha substituído "man tar".

    
por 22.10.2008 / 00:03
3

O homem é seu amigo.

man tar

    
por 22.10.2008 / 00:23
2

Eu sempre leio os comandos em minha mente, enquanto digito

comprima o arquivo zip detalhado

tar cvzf FILE

extrair o arquivo zip verboso FILE

tar xvzf FILE
    
por 27.02.2012 / 13:04
2

Eu faço o seguinte

Para criar um tar:

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

Para descompactar:

tar zxvf foo.tar.gz

Estes devem ser os principais switches com os quais você precisa se preocupar:

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

Você pode fazer coisas mais extravagantes como tar e untar inline enquanto tenta mover arquivos entre diretórios da seguinte forma:

tar cf - <files to be copied> | (cd <target directory>; tar xvf - )
    
por 15.10.2018 / 08:36
1

90% do tempo que uso apenas

tar -xvf file.*  

x: extract
v: seja detalhado (opcional)
f: arquivo de entrada (tar, gz, bzip2 , etc ...)

Fácil, né? :)
Use o Fileroller ou o Ark se você não estiver em um console.

    
por 22.10.2008 / 00:14
1

Estou usando um script Perl chamado aunpack , parte do projeto atool , há muitos anos. Então você acabou de executar: aunpack foo.{zip/tar.gz/tar.bz2} e faz a coisa correta com base na extensão do arquivo.

O outro benefício de aunpack é que ele não polui o diretório atual com muitos arquivos. Digamos que há 20 arquivos em foo.zip que não estão em um subdiretório. Em vez de vomitar esses arquivos no diretório atual, aunpack criará um subdiretório foo e colocará todos os arquivos lá.

    
por 22.10.2008 / 15:49
1

As três operações mais usadas :

--create -c

Crie um novo tar arquivo.

--list -t

Relacione o conteúdo de um arquivo.

--extract -x

Extraia um ou mais membros de um arquivo.

As cinco operações avançadas de alcatrão :

--append -r

Adicione novas entradas a um arquivo já existente.

--update -u

Adicione cópias mais recentes de membros do arquivo ao final de um arquivo, se existirem.

--concatenate --catenate -A

Adicionar um ou mais arquivos pré-existentes para o fim de outro arquivo.

--delete

Excluir itens de um arquivo (não funciona em fitas).

--compare --diff -d

Comparar  membros do arquivo para suas contrapartes  no sistema de arquivos.

por 22.05.2010 / 23:00
1

Tudo o que você precisa é tar x (extrair de stdin), tar c (tar para stdout), gzip -c (gzip de stdin para stdout; -1 para -9 para níveis de compactação; o mesmo vale para bzip2 ) e gunzip -c (gunzip de stdin para stdout) - todo o resto é pipe.

Para tar e gzip:

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

Para descompactar e descompactar

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

Se você quiser barras de progresso, use pv que é semelhante ao cat mas mostra barras de progresso:

$ 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%
    
por 18.05.2017 / 12:30
0

Acho fácil pensar no que você quer e não apenas em algumas cartas.

Para ilustrar, vou usar um exemplo de como extrair file.tar.gz:

Como é um arquivo tar, você deve usar o programa tar. Então são as opções:

  1. x desde que você deseja e x trato.
  2. z se o arquivo terminar com .gz. (gz é após tar no nome do arquivo) Esta opção gunzip o arquivo.
  3. f para arquivo seguido pelo nome do arquivo.

Isso é demonstrado no exemplo abaixo:

tar xzf file.tar.gz
    
por 08.08.2009 / 16:34
0

A maneira como eu me lembro é que é sempre "tar XXvf", onde os dois Xs são

  • x para e X trato ou c para C reate e,
  • z = gzip, j = bzip2 (o gzip é mais comum, então geralmente é z, por qualquer razão o j = bzip2 está preso na minha cabeça).

Ocasionalmente, você encontra arquivos compactados, mas não tarificados, nos quais adiciona un ao que quer que seja o tipo de compactação. por exemplo. g un zip ou b un zip2.

Se qualquer coisa, eu esqueço o 2 e, por vezes, digite "bzip".

    
por 08.08.2009 / 17:18
0

você também pode criar um alias. basta adicionar essas duas linhas ao seu arquivo ~/.bash_aliases :

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

você pode usar untar foo.tar.gz para extrair e dotar foo.bar para compactar. você pode usar outros aliases fáceis de lembrar.

    
por 16.02.2017 / 15:53