Como extrair arquivos no linux

Como Extrair Arquivos ZIP, RAR, TAR.GZ e 7z no Linux

Chegar em um servidor Linux novo, baixar um pacote de configuração ou um dump de backup compactado e não lembrar na hora qual flag usa cada ferramenta de extração é mais comum do que se admite — cada formato tem sua própria sintaxe, e distro nenhuma vem com um comando único que resolve todos. Esse guia reúne os comandos que realmente uso no dia a dia de administração de servidor, sem enrolação.

ZIP: o mais direto de todos

unzip arquivo.zip

Se o pacote unzip não estiver instalado (comum em instalações mínimas de servidor, tipo Debian netinst ou Ubuntu Server sem os pacotes extras), instale com sudo apt install unzip em distros baseadas em Debian/Ubuntu, ou sudo yum install unzip em CentOS/RHEL mais antigos, sudo dnf install unzip nas versões mais recentes do RHEL/Fedora.

Para extrair em um diretório específico sem precisar entrar nele antes:

unzip arquivo.zip -d /caminho/do/destino

TAR e TAR.GZ: o formato mais comum em backup e pacotes Linux

O tar sozinho (sem compressão) usa:

tar -xvf arquivo.tar

Já para arquivos comprimidos com gzip (extensão .tar.gz ou .tgz, que é praticamente o padrão em backup de servidor Linux), adiciona a flag z:

tar -xvzf arquivo.tar.gz

Decompondo as flags, porque é isso que confunde quem está começando: x extrai, v mostra cada arquivo sendo processado na tela (verbose — pode omitir se não quiser ver a lista toda rolando), z descompacta usando gzip, e f precisa ser sempre a última letra antes do nome do arquivo, porque ela indica que o próximo argumento é o nome do arquivo.

Um erro clássico de quem está aprendendo: colocar f no meio da sequência de flags, tipo -xfvz arquivo.tar.gz. Isso quebra porque o tar vai interpretar “vz” como se fosse parte do nome do arquivo. Sempre deixe o f por último.

Para arquivos comprimidos com bzip2 (.tar.bz2, mais raro hoje mas ainda aparece em alguns pacotes de software mais antigos), troca o z por j:

tar -xvjf arquivo.tar.bz2

E se quiser extrair para um diretório diferente do atual, sem precisar mover o arquivo primeiro:

tar -xvzf arquivo.tar.gz -C /caminho/do/destino

RAR: o que sempre precisa de pacote extra

Diferente do zip e do tar, nenhuma distro Linux vem com suporte nativo a RAR — é formato proprietário da WinRAR, então sempre vai precisar instalar algo primeiro:

sudo apt install unrar

Em algumas distros o pacote se chama unrar-free (uma versão com licença mais aberta, mas com suporte limitado a RARs mais recentes/protegidos — se o unrar-free recusar um arquivo específico, é bem provável que seja isso). Depois de instalado, o comando de extração é:

unrar x arquivo.rar

O x extrai preservando a estrutura de pastas original dentro do RAR. Se quiser tudo jogado numa pasta só, sem subpastas, troca por e em vez de x.

7-Zip: o canivete suíço que resolve quase tudo

Se você mexe com formatos variados com frequência, vale instalar o pacote p7zip-full, que lida com .7z nativamente e também abre bastante coisa via plugin:

sudo apt install p7zip-full
7z x arquivo.7z

O comando 7z x funciona até para alguns formatos que não são exatamente 7z, então em servidor que recebe arquivo de origem incerta (tipo um upload de cliente que você não sabe exatamente como foi gerado), o 7-Zip costuma ser a aposta mais segura antes de sair testando ferramenta por ferramenta.

Problemas comuns

1. “gzip: stdin: not in gzip format” ao tentar extrair um .tar.gz. O arquivo não é realmente gzip apesar da extensão — acontece com frequência quando alguém renomeia manualmente um arquivo sem recompactar de verdade. Rode file arquivo.tar.gz para descobrir o formato real antes de insistir no comando errado.

2. Extração de RAR falha silenciosamente ou trava no meio. RARs protegidos por senha ou com versão de compressão muito recente às vezes não são suportados pelo unrar-free. Nesse caso, o p7zip com o plugin de RAR (p7zip-rar, pacote separado em algumas distros) resolve melhor.

3. Permissão negada ao extrair em uma pasta do sistema. Confira se você tem permissão de escrita no diretório de destino, ou rode o comando com sudo — mas cuidado, extrair como root muda o dono dos arquivos extraídos, o que pode causar dor de cabeça depois se um usuário comum precisar editar esses arquivos.

Perguntas frequentes

Dá para extrair sem sobrescrever arquivos existentes?
No tar, use a flag -k (keep old files) junto com as outras: tar -xvzkf arquivo.tar.gz. No unzip, a flag equivalente é -n.

Como sei qual formato de compressão um arquivo realmente é?
Rode file nomedoarquivo — o comando identifica o tipo real pelo cabeçalho binário, não pela extensão do nome, então funciona mesmo se o arquivo tiver sido renomeado errado.

Existe um comando único que reconhece qualquer formato automaticamente?
Não nativamente, mas ferramentas como o 7z cobrem a maioria dos formatos comuns com o mesmo comando 7z x, o que ajuda bastante quando você não quer decorar sintaxe diferente para cada extensão.

Se você administra servidor Linux com mais frequência, veja também o guia de configuração de Samba no Ubuntu Server e o de configuração de servidor DNS com BIND9, que complementam bem esse tipo de tarefa de manutenção.

Posted in Linux.

Patrocinadores

suporte de ti                    marketing digital