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.


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".


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 / *


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).


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
 }

5

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


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".


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


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.



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

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 - )

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.


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á.


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%

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

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".


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.