Ubuntu tar, zip, gzip

Para mandar uma pasta por e-mail, guardar um backup ou baixar um programa, você vai lidar com arquivos compactados: .tar.gz, .zip, .xz. No Linux, o mais comum é o tar, que parece assustador (tar -czvf?) até você descobrir que cada letra é uma palavra.

Você vai aprender
  • A diferença entre empacotar (juntar) e compactar (encolher).
  • O que significa cada letra de tar -czvf e tar -xzvf.
  • Por que conferir o conteúdo com tar -tf antes de extrair.
  • Quando usar .tar.gz, .tar.xz ou .zip.

O simulador não roda tar nem zip. As sessões abaixo foram conferidas num Ubuntu 26.04 real. Pratique no seu terminal com uma pasta de teste.


Empacotar não é compactar

São duas tarefas diferentes, que no Linux costumam ser feitas por programas diferentes:

TarefaO que fazProgramaResultado
EmpacotarJunta muitos arquivos e pastas num arquivo só, sem encolhertarsite.tar
CompactarEncolhe um arquivogzip, bzip2, xzlog.gz
As duas coisasEmpacota e compacta em seguidatar com z, j ou Jsite.tar.gz
As duas coisasEmpacota e compacta, formato do Windowszipsite.zip

Por isso a extensão .tar.gz tem duas partes: "um pacote tar, compactado com gzip". A forma curta .tgz significa a mesma coisa.


Criar um .tar.gz

A pasta site tem uma página, um CSS e um arquivo temporário. Vamos empacotar e compactar tudo:

tar
O programa (de tape archive, "arquivo em fita", da época dos backups em fita).
-c
criar um pacote novo (create).
z
compactar com gzip.
v
verboso: mostrar cada arquivo enquanto trabalha.
f site.tar.gz
file: o nome do arquivo a criar. O nome vem logo depois do f, por isso o f fica por último.
site
O que colocar dentro: pastas e arquivos, quantos quiser.
$ tar -czvf site.tar.gz site
site/
site/rascunho.tmp
site/index.html
site/css/
site/css/style.css
$ ls -lh site.tar.gz
-rw-rw-r-- 1 ana ana 244 Oct 15 10:40 site.tar.gz

As linhas que aparecem são o efeito do v: o tar conta o que está guardando. Sem o v, ele trabalha em silêncio.

Como decorar

criar · zipado · vendo · file. E para extrair, troque o c pelo x: extrair · zipado · vendo · file. O hífen é opcional: tar czvf funciona igual.

Deixar arquivos de fora: --exclude

$ tar -czf site.tar.gz --exclude="*.tmp" site
$ tar -tzf site.tar.gz
site/
site/index.html
site/css/
site/css/style.css                   « o rascunho.tmp ficou de fora

Conferir antes de extrair: -t

Antes de abrir um pacote que você baixou, veja o que tem dentro. O t (de table of contents, "sumário"; a forma longa é --list) mostra o conteúdo sem extrair nada:

tar
O programa.
-t
Listar o conteúdo.
f site.tar.gz
De qual arquivo.
$ tar -tf site.tar.gz
site/
site/index.html
site/css/
site/css/style.css

Por que isso importa? Alguns pacotes têm tudo dentro de uma pasta (site/…), e outros têm os arquivos soltos. Extrair um pacote "solto" na pasta Downloads espalha dezenas de arquivos misturados com os seus. Olhando antes, você sabe se precisa criar uma pasta para ele.

Com v, a lista vem com detalhes, como um ls -l:

$ tar -tvf site.tar.gz
drwxrwxr-x ana/ana           0 2026-10-15 10:40 site/
-rw-rw-r-- ana/ana          14 2026-10-15 10:40 site/index.html
drwxrwxr-x ana/ana           0 2026-10-15 10:40 site/css/
-rw-rw-r-- ana/ana           5 2026-10-15 10:40 site/css/style.css

Extrair: -x

tar
O programa.
-x
extrair (extract).
v
Mostrar cada arquivo.
f site.tar.gz
O pacote.
-C restaurado
Extrair dentro da pasta restaurado (de change directory). Sem ele, extrai na pasta atual.
$ mkdir restaurado
$ tar -xvf site.tar.gz -C restaurado
site/
site/index.html
site/css/
site/css/style.css
$ ls restaurado
site
Não precisa dizer o tipo de compactação para extrair

Para criar, você diz z, j ou J. Para extrair e listar, o tar do Ubuntu descobre o tipo sozinho: tar -xf arquivo.tar.xz funciona. Escrever -xzf também funciona, desde que o arquivo seja mesmo .gz.

Extrair sobrescreve sem perguntar

Se já existir um arquivo com o mesmo nome no destino, o tar substitui pelo do pacote. Por isso, extraia numa pasta nova com -C quando não tiver certeza.

Extrair só um arquivo

Coloque o caminho, exatamente como aparece no tar -tf, no fim do comando:

$ tar -xf site.tar.gz site/index.html
$ ls site
index.html

gzip, bzip2 ou xz?

A letra do meio escolhe o compactador. Quanto mais ele encolhe, mais tempo leva:

LetraCompactadorExtensãoTamanhoVelocidadeUso típico
zgzip.tar.gzBomRápidoBackups do dia a dia; o mais comum
jbzip2.tar.bz2MelhorLentoPacotes antigos
Jxz.tar.xzO menorO mais lentoDistribuir programas, arquivar por muito tempo

Um exemplo com uma pasta de logs de 48 MB (números ilustrativos: texto repetitivo encolhe muito; fotos e vídeos quase nada):

$ du -sh logs
48M     logs
$ tar -czf logs.tar.gz logs
$ tar -cJf logs.tar.xz logs
$ ls -lh logs.tar.*
-rw-rw-r-- 1 ana ana 3,1M Oct 15 11:50 logs.tar.gz
-rw-rw-r-- 1 ana ana 1,9M Oct 15 11:51 logs.tar.xz
Fotos, vídeos e .zip já vêm compactados

JPG, MP4, MP3 e PDF já são formatos comprimidos. Compactar de novo economiza quase nada. Para eles, um .tar sem compactação (tar -cf) é mais rápido e dá praticamente o mesmo tamanho.


zip e unzip: para trocar com quem usa Windows

O .zip abre em qualquer sistema com dois cliques. Use-o quando o arquivo for para outra pessoa.

zip
O programa.
-r
recursivo: inclui o conteúdo das pastas. Sem ele, o zip guarda só a pasta vazia.
site.zip
O arquivo a criar. Atenção: no zip, o nome do arquivo vem primeiro.
site
O que colocar dentro.
$ zip -r site.zip site
  adding: site/ (stored 0%)
  adding: site/index.html (stored 0%)
  adding: site/css/ (stored 0%)
  adding: site/css/style.css (stored 0%)

"stored 0%" quer dizer que o arquivo foi guardado sem compactar, porque era pequeno demais para valer a pena. Arquivos maiores mostram algo como (deflated 72%): encolheram 72%.

Conferir e extrair

$ unzip -l site.zip
Archive:  site.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2026-10-15 10:40   site/
       14  2026-10-15 10:40   site/index.html
        0  2026-10-15 10:40   site/css/
        5  2026-10-15 10:40   site/css/style.css
---------                     -------
       19                     4 files
$ unzip site.zip -d copia
Archive:  site.zip
   creating: copia/site/
 extracting: copia/site/index.html
   creating: copia/site/css/
 extracting: copia/site/css/style.css

-l lista (como o tar -t) e -d escolhe a pasta de destino (como o tar -C). Para proteger com senha, use zip -e -r segredo.zip pasta: ele pergunta a senha duas vezes.


gzip e xz sozinhos: um arquivo só

Para encolher um arquivo grande, como um log, não precisa de tar:

$ ls -lh acesso.log
-rw-rw-r-- 1 ana ana 48M Oct 15 11:50 acesso.log
$ gzip acesso.log
$ ls -lh acesso.log*
-rw-rw-r-- 1 ana ana 3,1M Oct 15 11:50 acesso.log.gz    « o original sumiu
$ gunzip acesso.log.gz
$ ls acesso.log*
acesso.log

Por padrão, o gzip substitui o original pela versão .gz. Para manter os dois, use -k (de keep, "manter"). Para ler um .gz sem descompactar, use zcat, zless ou zgrep, as versões "z" de cat, less e grep:

$ zgrep "403" /var/log/nginx/access.log.2.gz
192.168.0.10 - - [13/Oct/2026:14:20:11 -0300] "GET /admin HTTP/1.1" 403 162 "-" "curl/8.14.1"

Formas diferentes de fazer

TarefaTerminalInterface gráfica
Compactar uma pastatar -czf pasta.tar.gz pasta ou zip -r pasta.zip pastaNo Arquivos: botão direito → Comprimir…
Extrairtar -xf arquivo.tar.gz ou unzip arquivo.zipBotão direito → Extrair, ou dois cliques
Ver o conteúdotar -tf ou unzip -lDois cliques abre o visualizador sem extrair
FormatoMelhor quando…
.tar.gzBackup e troca entre Linux; guarda permissões e donos dos arquivos.
.tar.xzQuer o menor tamanho e tem tempo; arquivamento.
.zipO arquivo vai para alguém com Windows ou macOS.
.gz sozinhoÉ um arquivo só, como um log.

Quando não funciona

"Recusando a criar um arquivo-tar vazio"
$ tar -czf backup.tar.gz
tar: Recusando a criar um arquivo-tar vazio
Tente "tar --help" ou "tar --usage" para mais informações.

O que aconteceu: faltou dizer o que colocar no pacote.

Como resolver: acrescente as pastas ou arquivos no fim: tar -czf backup.tar.gz Documentos.

"a opção exige um argumento -- "f""
$ tar -czvf
tar: a opção exige um argumento -- "f"
Tente "tar --help" ou "tar --usage" para mais informações.

O que aconteceu: o f espera o nome do arquivo logo em seguida. Também acontece com tar -cfzv nome: aí o tar acha que o arquivo se chama "zv".

Como resolver: deixe o f por último, colado ao nome: -czvf nome.tar.gz.

"Este não parece ser um arquivo-tar"
$ tar -tf foto.jpg
tar: Este não parece ser um arquivo-tar
tar: Saindo com status de falha em razão de erros anteriores

O que aconteceu: o arquivo não é um pacote tar. Às vezes é um .zip com a extensão errada, ou um download que não terminou.

Como confirmar: file arquivo diz o tipo real, pelo conteúdo.

Erro com "(child)" ao extrair
$ tar -xzf projeto.tar.gz
tar (child): projeto.tar.gz: Função open falhou: Arquivo ou diretório inexistente
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

O que aconteceu: o arquivo não existe na pasta atual. "child" é o gzip que o tar chamou para descompactar; o erro aparece duas vezes, uma de cada programa, metade em inglês.

Como resolver: confira com ls e use Tab para completar o nome.

"Removendo `/' inicial dos nomes dos membros"
$ tar -czf hosts.tar.gz /etc/hosts
tar: Removendo `/' inicial dos nomes dos membros

O que aconteceu: não é erro, é um aviso de segurança. O tar guarda etc/hosts em vez de /etc/hosts, para que, ao extrair, o arquivo vá para a pasta atual e não sobrescreva o do sistema.

"cannot find or open" no unzip
$ unzip fotos.zip
unzip:  cannot find or open fotos.zip, fotos.zip.zip or fotos.zip.ZIP.

O que aconteceu: o arquivo não está na pasta atual (talvez em Downloads).

Como resolver: unzip ~/Downloads/fotos.zip -d ~/fotos.


Referência de opções

tar

LetraSignificadoExemplo
cCriar pacotetar -cf a.tar pasta
xExtrairtar -xf a.tar
tListar o conteúdotar -tf a.tar
fNome do arquivo (sempre por último, antes do nome)-cf nome.tar
vMostrar cada arquivotar -xvf a.tar
z / j / Jgzip / bzip2 / xztar -cJf a.tar.xz pasta
-C pastaExtrair (ou criar) a partir de outra pastatar -xf a.tar -C /tmp
--excludeDeixar arquivos de fora--exclude="*.log"
-rAcrescentar a um .tar sem compactaçãotar -rf a.tar novo.txt

zip / unzip

ComandoDescrição
zip -r arq.zip pastaCompacta a pasta inteira
zip -e -r arq.zip pastaCom senha
zip arq.zip novo.txtAcrescenta um arquivo a um zip existente
unzip -l arq.zipLista o conteúdo
unzip arq.zip -d pastaExtrai na pasta escolhida
unzip -o arq.zipSobrescreve sem perguntar

gzip / xz

ComandoDescrição
gzip arqCompacta e troca arq por arq.gz
gzip -k arqCompacta mantendo o original
gzip -d arq.gz / gunzip arq.gzDescompacta
gzip -9 arqCompactação máxima (mais lenta)
zcat / zless / zgrepLê um .gz sem descompactar
xz arq / unxz arq.xzO mesmo, com xz

Exercícios

1. Backup compactado

Complete para criar docs.tar.gz com a pasta Documentos:

tar - docs.tar.gz Documentos

2. Olhar antes de abrir

Complete para listar o conteúdo de programa.tar.xz sem extrair:

tar - programa.tar.xz

3. Extrair em outra pasta

Complete para extrair site.tar.gz dentro de /tmp/teste:

tar -xf site.tar.gz /tmp/teste

4. No comando tar -czvf backup.tar.gz fotos, o que faz o z?

5. Você vai mandar uma pasta para um colega que usa Windows. Qual é a melhor escolha?


Resumo

  • tar empacota; gzip/xz compactam; .tar.gz é "pacote compactado".
  • Criar: tar -czvf nome.tar.gz pasta (criar · gzip · ver · file).
  • Conferir antes: tar -tf nome.tar.gz. Extrair: tar -xf nome.tar.gz -C destino.
  • O f vem por último, colado ao nome do arquivo.
  • Para Windows, use zip -r e unzip -l / unzip -d.
  • gzip substitui o original; -k mantém os dois.