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

76

Tenho certeza de que não sou o único com o seguinte problema: toda vez que preciso descompactar um arquivo no * nix, não consigo lembrar de todas as opções e acabo pesquisando no Google, o que é surpreendente, considerando quantas vezes preciso fazem isto.

Você tem uma boa folha de dicas de compressão? Ou que tal um mnemônico para todas aquelas mudanças desagradáveis ​​no alcatrão?

Estou transformando este artigo em um wiki para que possamos criar uma boa folha de dicas aqui.

Ah, e nas páginas de manual: há uma coisa para a qual elas não são úteis: é descobrir como descompactar um arquivo.

programador morto
fonte
11
usar as páginas de manual, então você não tem que criar um wiki, e só tem que lembrar o comando man homem :-) (1)
Florenz Kley
9
Extraia o arquivo Zee é como eu me lembro
canadense Luke
Criar arquivo Zee Vocking pode ser apropriado para a criação de um .tar.gz
CousinCocaine

Respostas:

65

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

Em relação ao alcatrão: basta olhar para o teclado "qwerty". Existem letras "zxcvf" próximas uma da outra. Você precisa dos arquivos "tar czvf file.tar.gz" ou "tar xzvf file.tar.gz".

ADEpt
fonte
Props para realmente responder a pergunta :)
Agora, essa é uma dica "qwerty" LEGAL! :)
fricking impressionante!
Deadprogrammer 22/10/08
2
Outra dica é que a zopção (ou a jopção para .bz2arquivos) não é necessária ao extrair com versões modernas do tar. Descompacta automaticamente o arquivo.
Nate
10
Eu usei o tar cerca de dez bilhões de vezes e nunca notei que todas as opções mais usadas estão ao lado do teclado. headsmack
Tyler McHenry
41

Resumo da opção Tar

Vocês podem editar isso para adicionar mais opções esotéricas, mas aqui estão os princípios básicos:

  • x - extrair arquivos
  • c - criar arquivo
  • t - lista de arquivos
  • v - detalhado (liste os arquivos enquanto os processa)
  • j - use compressão bz2
  • z - use compressão gz
  • f - ler ou gravar arquivos no disco

Exemplos

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

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

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

anon
fonte
23

Há um pequeno script Perl chamado "unp".

unp filename.tar.gz

... e extrai tudo. Funciona com qualquer arquivo compactado, desde que você tenha os binários certos. E você simplesmente esquece a sintaxe ou qualquer coisa desse tipo. Verifique os repositórios da sua distribuição Linux. Deveria estar lá (pelo menos no Arch, Debian e Ubuntu).

Vicent Marti
fonte
Mesmo depois de usar o tar por um longo tempo, ainda preciso procurar no Google pelas bandeiras estúpidas. unp é o caminho a percorrer.
Yada
8

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

Extrair:

tar xzf data.tgz

Para comprimir:

tar czf data.tgz

Além disso, você pode adicionar duas funções também 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 boa função de extração, 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
 }
anon
fonte
5

Basta digitar tar --helpe aqui está sua folha de dicas.

Jeremy Ruten
fonte
12
sério, você já tentou ler essa página de manual?
Deadprogrammer 21/10/08
Pode ser um pouco ilegível e longo, mas acho que funciona bem apenas para procurar o nome de uma opção. Você também pode grep para a opção que procura, ou seja, 'tar --help | extrato grep '.
Jeremy Ruten 21/10/08
11
Ótimo. E então você precisa percorrer uma página de manual que (entre as coisas que você está procurando) oferece toneladas de comandos e opções arcaicas de streamer e opções que ninguém, exceto as necessidades do desenvolvedor.
2
Eu realmente não vejo o que é tão difícil nisso. Para extrair um arquivo, encontre a opção de extração e adicione -x ao seu comando. Se você quiser detalhadamente, encontre essa opção e adicione av para obter -xv. Continue até você obter o comando exato que deseja. Ele ainda possui comandos de exemplo para operações comuns.
Jeremy Ruten 22/10/08
11
Jeremy, o verdadeiro problema é que você nem sempre sabe o vocabulário adequado. Como tal, é fácil ficar confuso e encontrar opções semelhantes, para que não funcionem. Então, você deve colocar (alguns) deles na ordem correta. Isso não é trivial para alguém que está migrando para longe do Windows. Ainda mais, se eles não soubessem scripts no Windows.
Nazadus 8/08/09
3

Se você tiver problemas para lembrar as opções de alcatrão, tente usar pipes:

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

Substitua tar xvpor tar tvpara ver apenas o conteúdo do tarball.

Pessoalmente, eu uso os seguintes mnemônicos:

  • t, x ou c para "tabular", "xtracting" ou "criar", respectivamente.
  • v para listar todos os arquivos.
  • z, j ou nada para tar.gz, tar.bz2 ou plain .tar, respectivamente.
  • f por fornecer um nome de arquivo, versus o padrão de usar stdin / stdout ou um dispositivo de fita.

Embora "j" e "bzip2" pareçam não ter nada a ver um com o outro, acho fácil lembrar dessa exceção.

Além disso, acho engraçado que o Google substitua o "tar do homem".

Logan
fonte
Você deve ter o hábito de sempre fornecer a fopção: apenas recentemente as distribuições de alcatrão são padrão f -, o padrão histórico é f /dev/rmt0ou semelhante. Afinal, o tar é o Tape ARchiver.
ephemient 21/10/08
11
o que está tabulando?
7289 Claudiu
3

O homem é seu amigo.

man tar

madlep
fonte
2

As três operações mais usadas :

--create -c

Crie um novo arquivo tar.

--list -t

Listar 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 morto que já existe.

--update -u

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

--concatenate --catenate -A

Adicione um ou mais arquivos preexistentes ao final de outro arquivo.

--delete

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

--compare --diff -d

Compare os membros do arquivamento aos seus homólogos no sistema de arquivos.


lazer
fonte
2

Eu sempre leio os comandos em minha mente enquanto digito

comprimir arquivo zip detalhado

tar cvzf FILE

extrair arquivo zip detalhado FILE

tar xvzf FILE
feeela
fonte
2

Eu faço o seguinte

Para criar um alcatrão:

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

Para desarmar:

tar zxvf foo.tar.gz

Esses 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 sofisticadas, como tar e untar inline, enquanto tenta mover arquivos entre diretórios da seguinte maneira:

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

90% do tempo eu apenas uso

tar -xvf file.*  

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

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

ramayac
fonte
Até agora, eu estava usando fileroller, mas atualmente estou sem sorte, porque a versão que tenho usa 1,1 Gb de memória.
Andrew Grimm
1

Eu tenho usado 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 ele faz a coisa correta com base na extensão do arquivo.

O outro benefício aunpacké que ele não poluirá o diretório atual com muitos arquivos. Digamos que haja 20 arquivos foo.zipque não estejam em um subdiretório. Em vez de vomitar esses arquivos no diretório atual, aunpackcriará um foosubdiretório e colocará todos os arquivos lá.

Dave Dribin
fonte
1

Tudo que você precisa é tar x(extrato de stdin), tar c(tar para stdout), gzip -c(gzip de stdin para stdout; -1a -9para níveis de compressão; mesmo vale para bzip2) e gunzip -c(gunzip de stdin para stdout) - tudo o resto é tubos.

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 doces, use pv, que é semelhante ao gato, 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%
porty
fonte
0

Eu acho que é fácil pensar no que você quer e não apenas em algumas letras.

Para ilustrar, usarei 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 x .
  2. z se o arquivo terminar com .gz. (gz está atrás do tar no nome do arquivo) Esta opção altera o arquivo morto.
  3. f para o arquivo seguido pelo nome do arquivo.

Isso é demonstrado no exemplo abaixo:

tar xzf file.tar.gz
Espen
fonte
0

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

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

Ocasionalmente, você encontra arquivos compactados, mas não tarados, onde você adiciona um ao qualquer tipo de compactação. por exemplo, g un zip ou b un zip2.

Se alguma coisa, eu esqueço o 2 e às vezes digite "bzip".

mmacaulay
fonte
0

você também pode criar um alias. basta adicionar estas duas linhas ao seu ~/.bash_aliasesarquivo:

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

você pode usar untar foo.tar.gzpara extrair e dotar foo.barcompactar. você pode usar outros aliases fáceis de lembrar.

foerno
fonte
0

C reate Z ip para F ilename

tar -czf myfile.tar.gz myfile.sql

e X tracto Z ip com F ilename

tar -xzf myfile.tar.gz
littledynamo
fonte