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.
- A diferença entre empacotar (juntar) e compactar (encolher).
- O que significa cada letra de
tar -czvfetar -xzvf. - Por que conferir o conteúdo com
tar -tfantes de extrair. - Quando usar
.tar.gz,.tar.xzou.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:
| Tarefa | O que faz | Programa | Resultado |
|---|---|---|---|
| Empacotar | Junta muitos arquivos e pastas num arquivo só, sem encolher | tar | site.tar |
| Compactar | Encolhe um arquivo | gzip, bzip2, xz | log.gz |
| As duas coisas | Empacota e compacta em seguida | tar com z, j ou J | site.tar.gz |
| As duas coisas | Empacota e compacta, formato do Windows | zip | site.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 offica 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.
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
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.
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:
| Letra | Compactador | Extensão | Tamanho | Velocidade | Uso típico |
|---|---|---|---|---|---|
z | gzip | .tar.gz | Bom | Rápido | Backups do dia a dia; o mais comum |
j | bzip2 | .tar.bz2 | Melhor | Lento | Pacotes antigos |
J | xz | .tar.xz | O menor | O mais lento | Distribuir 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
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
| Tarefa | Terminal | Interface gráfica |
|---|---|---|
| Compactar uma pasta | tar -czf pasta.tar.gz pasta ou zip -r pasta.zip pasta | No Arquivos: botão direito → Comprimir… |
| Extrair | tar -xf arquivo.tar.gz ou unzip arquivo.zip | Botão direito → Extrair, ou dois cliques |
| Ver o conteúdo | tar -tf ou unzip -l | Dois cliques abre o visualizador sem extrair |
| Formato | Melhor quando… |
|---|---|
.tar.gz | Backup e troca entre Linux; guarda permissões e donos dos arquivos. |
.tar.xz | Quer o menor tamanho e tem tempo; arquivamento. |
.zip | O arquivo vai para alguém com Windows ou macOS. |
.gz sozinho | É um arquivo só, como um log. |
Quando não funciona
$ 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.
$ 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.
$ 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.
$ 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.
$ 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.
$ 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
| Letra | Significado | Exemplo |
|---|---|---|
c | Criar pacote | tar -cf a.tar pasta |
x | Extrair | tar -xf a.tar |
t | Listar o conteúdo | tar -tf a.tar |
f | Nome do arquivo (sempre por último, antes do nome) | -cf nome.tar |
v | Mostrar cada arquivo | tar -xvf a.tar |
z / j / J | gzip / bzip2 / xz | tar -cJf a.tar.xz pasta |
-C pasta | Extrair (ou criar) a partir de outra pasta | tar -xf a.tar -C /tmp |
--exclude | Deixar arquivos de fora | --exclude="*.log" |
-r | Acrescentar a um .tar sem compactação | tar -rf a.tar novo.txt |
zip / unzip
| Comando | Descrição |
|---|---|
zip -r arq.zip pasta | Compacta a pasta inteira |
zip -e -r arq.zip pasta | Com senha |
zip arq.zip novo.txt | Acrescenta um arquivo a um zip existente |
unzip -l arq.zip | Lista o conteúdo |
unzip arq.zip -d pasta | Extrai na pasta escolhida |
unzip -o arq.zip | Sobrescreve sem perguntar |
gzip / xz
| Comando | Descrição |
|---|---|
gzip arq | Compacta e troca arq por arq.gz |
gzip -k arq | Compacta mantendo o original |
gzip -d arq.gz / gunzip arq.gz | Descompacta |
gzip -9 arq | Compactação máxima (mais lenta) |
zcat / zless / zgrep | Lê um .gz sem descompactar |
xz arq / unxz arq.xz | O mesmo, com xz |
Exercícios
1. Backup compactado
Complete para criar docs.tar.gz com a pasta Documentos:
2. Olhar antes de abrir
Complete para listar o conteúdo de programa.tar.xz sem extrair:
3. Extrair em outra pasta
Complete para extrair site.tar.gz dentro de /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
tarempacota;gzip/xzcompactam;.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
fvem por último, colado ao nome do arquivo. - Para Windows, use
zip -reunzip -l/unzip -d. gzipsubstitui o original;-kmantém os dois.