Como descompactar um arquivo tar.gz
Se você usa software de código aberto, é provável que encontre um arquivo .tar em algum momento. O utilitário de arquivo tar de código aberto existe desde 1979 , por isso é verdadeiramente onipresente no mundo POSIX. Seu propósito é simples: ele pega um ou mais arquivos e os “agrupa” em um arquivo independente, chamado de arquivo em fita, porque quando o tar foi inventado ele era usado para colocar dados fitas de armazenamento.
Pessoas novas no formato tar geralmente o equiparam a um arquivo .zip, mas um arquivo tar não é compactado. O formato tar apenas cria um contêiner para arquivos, mas os arquivos podem ser compactados com utilitários separados. As compressões comuns aplicadas a um arquivo .tar são Gzip, bzip2 e xz. É por isso que você raramente vê apenas um arquivo .tar e mais comumente encontra arquivos .tar.gz ou .tgz.
Instalando o tar
No Linux, BSD, Illumos e até mesmo no Mac OS, o comando tar já está instalado para você.
No Windows, a maneira mais fácil de lidar com arquivos .tar é insta Todo o utilitário 7-Zip de código aberto LGPL. Seu nome indica que é “um utilitário zip, mas também funciona com arquivos tar e até fornece comandos para a interface de linha de comando cmd.
Se você realmente deseja um utilitário tar real no Windows, o GNU tar é instalável através do WSL no Windows 10 ou através do Cygwin.
Criando um tarball
Um arquivo tar é frequentemente referido como um tarball, presumivelmente porque nós, hackers, amamos encurtar palavras para poucas sílabas quanto possível, e “tarball” é mais curto e fácil do que “arquivo tar”.
Em uma GUI, criar um tarball é, no máximo, um processo de três etapas. Estou usando o KDE, mas o processo é essencialmente o mesmo no Gnome ou XFCE:
- Crie um diretório
- Coloque seus arquivos no diretório
- Clique com o botão direito do mouse no diretório e selecione “Comprimir”
compress.jpg
Criando um tarball
Em um shell, é basicamente o mesmo processo.
Para reunir um gr oup de arquivos em um arquivo, coloque seus arquivos em um diretório e invoque tar, fornecendo um nome para o arquivo que você deseja criar e o diretório que deseja arquivar:
O utilitário tar é único entre os comandos, porque não requer travessões na frente de suas opções curtas, permitindo que usuários avançados abreviem comandos complexos como este:
Você não precisa colocar os arquivos em um diretório antes de arquivá-los, mas é considerado falta de etiqueta não fazê-lo, porque ninguém quer 50 arquivos espalhados em sua área de trabalho ao desarquivar um diretório. Esses tipos de arquivos às vezes são chamados de tarbomb, embora nem sempre com uma conotação negativa. Tarbombs são úteis para patches e instaladores de software; é apenas uma questão de saber quando usá-los e quando evitá-los.
Compactando arquivos
Criar um arquivo tar não compacta seus arquivos, apenas os torna mais fáceis de mova-se como um blob. Para compressão, você pode ter uma chamada de tar Gzip ou bzip:
$ tar --create --bzip2 --file foo.tar.bz2 myfiles
$ tar --create --gzip --file foo.tar.gz myfiles
As extensões comuns são tar.gz e .tgz para um tar Gzip arquivo, e .tbz e .tar.bz2 para um arquivo tar compactado.
Extraindo arquivos
Se você recebeu um tarball de um amigo ou de um projeto de software, pode extrair em sua área de trabalho GUI ou em um shell. Em uma GUI, clique com o botão direito no arquivo que deseja extrair e selecione “Extrair.”
extract_0.jpg
Extraindo um arquivo
O gerenciador de arquivos Dolphin oferece um recurso para detectar automaticamente se os arquivos extraídos de um arquivo estão contidos em um diretório ou se um novo diretório precisa ser criado para eles. Eu uso esta opção para que, quando extraio arquivos de um tarbomb, eles permaneçam organizados e contidos.
Em um shell, o comando para extrair um arquivo é bastante intuitivo:
Usuários avançados encurtam para:
Você pode até usar o utilitário tar para descompactar arquivos .zip:
Tar avançado
Os utilitários tar são muito robustos e flexíveis. Assim que estiver familiarizado com o básico, é útil explorar outros recursos.
Adicionar um arquivo ou diretório a um tarball existente
Se você tiver um tarball existente e desejar adicionar um novo arquivo a ele, você não precisa desarquivar tudo apenas para adicionar um novo arquivo.
A maioria dos desktops Linux e BSD vêm com um utilitário de arquivo gráfico. Usando-o, você pode abrir um arquivo tar como se fosse qualquer outro diretório, dê uma olhada dentro, extraia arquivos individuais, adicione arquivos a ele e até mesmo visualize os arquivos de texto e imagens que ele contém.
ark.jpg
O utilitário de arquivo Ark
No shell, você pode adicionar um arquivo ou diretório a um arquivo tar, desde que não esteja compactado. Se o seu arquivo foi compactado, você deve descompactá-lo, mas não precisa desarquivá-lo.
Por exemplo, se um arquivo foi compactado com Gzip:
$ gunzip archive.tar.gz
$ ls
archive.tar
Agora que você tem um arquivo tar descompactado, adicione um arquivo e um diretório a ele:
$ tar --append --file archive.tar foo.txt
$ tar --append --file archive.tar bar/
A versão mais curta:
$ tar rf archive.tar foo.txt
$ tar rf archive.tar bar/
Veja uma lista de arquivos em um tarball
Para ver os arquivos em um arquivo compactado ou descompactado, use o – opção de lista:
$ tar --list --file archive.tar.gz
myfiles/
myfiles/one
myfiles/two
myfiles/three
bar/
bar/four
foo.txt
Usuários avançados encurtam para:
Extraia apenas um arquivo ou diretório
Às vezes você não precisa de todos os arquivos em um arquivo, você apenas deseja extrair um ou dois. Depois de listar o conteúdo de um arquivo tar, use o comando usual tar extract junto com o caminho do arquivo que você deseja extrair:
$ tar xvf archive.tar.gz bar/four
bar/four
Extrair vários arquivos ou diretórios é basicamente o mesmo:
$ tar xvf archive.tar.gz myfiles/one bar/four
myfiles/one
bar/four
Você pode até usar curingas:
$ tar xvf archive.tar.gz --wildcards "*.txt"
foo.txt
Extraia um tarball para outro diretório
Anteriormente, mencionei que alguns tarballs eram tarbombs que sobraram arquivos espalhados pelo seu computador. Se você listar um arquivo tar e ver que seus arquivos não estão contidos em um diretório, você pode criar um diretório de destino para eles:
$ tar --list --file archive.tar.gz
foo
bar
baz
$ mkdir newfiles
$ tar xvf archive.tar.gz -C newfiles
Isso coloca todos os os arquivos do arquivo no diretório “newfiles”.
A opção do diretório de destino é útil para muito mais do que apenas manter os arquivos extraídos organizados, por exemplo, distribuir arquivos que devem ser copiados para um estrutura de diretório existente. Se você está trabalhando em um site e deseja enviar ao administrador alguns arquivos novos, pode fazê-lo de algumas maneiras diferentes. A maneira óbvia é enviar os arquivos para o administrador do site junto com algum texto explicando onde cada arquivo deve estar colocado: “O arquivo index.php anexado vai para /var/www/example.com/store, e o arquivo vouchers.php vai para /var/www/example.com/deals …”
A maneira mais eficiente seria criar um arquivo tar:
Dada essa estrutura, o administrador do site poderia extrair seu arquivo de entrada diretamente para o diretório raiz do servidor. O utilitário tar detecta automaticamente a existência de /var/www/example.com, bem como do armazenamento de subdiretórios, negócios e imagens, e distribui os arquivos nos diretórios apropriados. É copiar e colar em massa, feito de forma rápida e fácil.
GNU tar e BSD tar
O formato tar é apenas um formato, e é um formato aberto, então pode ser criado por mais de uma ferramenta.
Existem dois utilitários tar comuns: o utilitário GNU tar, instalado por padrão em sistemas Linux, e o utilitário BSD tar, instalado por padrão no BSD, Mac OS e alguns sistemas Linux. Para uso geral, qualquer um dos alcatrões serve. Todos os exemplos neste artigo funcionam da mesma forma no GNU ou no BSD tar, por exemplo. No entanto, os dois utilitários têm algumas pequenas diferenças, então quando você se familiarizar com um, você deve tentar o outro.
Você provavelmente terá que instalar o “outro” tar (seja ele qual for seu sistema) manualmente. Para evitar confusão entre os utilitários, GNU tar é frequentemente denominado gtar e BSD tar é denominado bsdtar, com o comando tar sendo um link simbólico, ou um alias, para aquele que veio pré-instalado em seu computador.