Linux / Comando unxz: descomprimir .xz sem perder a cópia
O comando unxz descomprime arquivos .xz, como xz -d. Em uma operação normal bem-sucedida, ele restaura o arquivo e remove a entrada comprimida; use -k para conservar essa entrada ou -c para enviar o conteúdo à saída padrão e escolher outro destino.
Normalmente, dump.sql.xz se torna dump.sql pela remoção do sufixo. A compressão descrita no guia do xz é uma camada diferente de um pacote tar: descomprimir .tar.xz deixa um .tar. Para recuperar seus membros, use a extração pelo comando tar.
Sintaxe e preparação
unxz [opções] arquivo.xz [arquivo.xz...]
Essa linha representa os argumentos possíveis; substitua os nomes pelos arquivos reais. Consulte man unxz e xz --version no sistema em que trabalhará. O manual oficial recomenda que scripts usem explicitamente xz -d ou xz -dc, em vez de depender do nome alternativo unxz.
Comece com uma cópia em uma pasta separada, confirme a entrada, o espaço para o conteúdo descomprimido e um nome de saída livre. Nos exemplos com dump.sql.xz, a entrada já está preparada: os modos padrão e -k são alternativas, pois o primeiro consome o comprimido e ambos podem criar dump.sql. Restaurar os bytes de um SQL também não executa esse SQL nem comprova que um banco de dados foi recuperado.
Restaurar, preservar e visualizar texto
Descompressão padrão: o comando abaixo produz dump.sql e remove dump.sql.xz após uma descompressão normal bem-sucedida. Confira o destino antes de executar.
unxz dump.sql.xz
Conservar o comprimido: -k mantém dump.sql.xz enquanto cria dump.sql. O nome de saída ainda deve estar livre; essa opção não preserva o conteúdo de uma saída antiga que você decidir sobrescrever.
unxz -k dump.sql.xz
Visualizar o início de um texto: neste exemplo, notes.txt.xz representa outro arquivo já comprimido, cujo conteúdo é texto. -c envia os dados ao pipe |, e head mostra até as primeiras dez linhas sem outras opções. Não envie conteúdo binário desconhecido diretamente para a tela.
unxz -c notes.txt.xz | head
Essa visualização não confirma a integridade do arquivo inteiro. Head pode fechar a leitura antes de unxz terminar de produzir os dados. No Bash sem pipefail, o código do pipeline normalmente é o do último comando; head pode terminar com zero enquanto unxz apresenta erro. A regra está no manual de pipelines do Bash. Verifique o fluxo completo separadamente com unxz -t notes.txt.xz.
Recuperar em outro nome mantendo a entrada
Para preparar um teste reproduzível, use uma pasta na qual note.txt, note.txt.xz e restored.txt ainda não existam. Execute printf 'hello\n' > note.txt, que escreve seis bytes: hello seguido de uma quebra de linha. Depois execute xz note.txt; se a compressão terminar com sucesso, ficará note.txt.xz, sem a entrada de texto.
unxz -c note.txt.xz > restored.txt
ls -l restored.txt
O resultado esperado é restored.txt com os seis bytes originais e note.txt.xz ainda presente. Como a saída foi redirecionada, unxz não cria automaticamente outro arquivo chamado note.txt. A listagem mostra o nome e o tamanho de restored.txt; seus campos de permissões, proprietário e data dependem do ambiente.
O operador > é aplicado pelo shell e pode esvaziar uma saída existente antes de unxz abrir a entrada. Se a origem estiver ausente ou a descompressão falhar, a saída pode ficar vazia ou incompleta. As duas linhas do exemplo não impedem que ls termine com zero depois de a primeira falhar: confira o código da descompressão antes de prosseguir. Para condicionar a listagem ao retorno zero, a alternativa é unxz -c note.txt.xz > restored.txt && ls -l restored.txt, sempre usando uma saída nova.
- Confirme o caminho de entrada, o espaço disponível e um destino sem dados que você precisa preservar.
- Teste o fluxo com
unxz -t note.txt.xzantes de gravar a recuperação e confira o diagnóstico e o código de saída. Esse modo não cria nem remove arquivos. - Escolha o modo padrão,
-kou-cconforme precise manter o comprimido ou mudar o destino. - Confira o conteúdo completo e compare-o com uma referência confiável. Para dados importantes, conserve também uma cópia independente e verifique a restauração da aplicação correspondente.
No xz, zero indica sucesso, um indica erro e dois indica uma condição de aviso sem erro efetivo. Um teste bem-sucedido normalmente não imprime nada; leia também as mensagens. As verificações de integridade do fluxo não autenticam quem forneceu o arquivo nem substituem um resumo criptográfico ou uma assinatura comparados com uma referência confiável.
Opções principais
| Opção | Finalidade e condição |
|---|---|
-k |
Mantém o arquivo comprimido de entrada durante a descompressão. |
-c |
Escreve o conteúdo na saída padrão e implica a preservação da entrada. Confira separadamente o destino de um redirecionamento. |
-t |
Testa a integridade do fluxo sem gravar um arquivo descomprimido no disco. |
-f |
Permite substituir uma saída existente. Não repara corrupção no arquivo de entrada. |
-v |
Mostra mais informações sobre o andamento e o resultado do processamento. |
Sobrescrita, memória e pacotes tar
Se o destino já existir, xz normalmente informa um erro e ignora aquela entrada. Não conte com uma pergunta de confirmação. Antes de usar -f, preserve o destino antigo ou escolha outro nome. A recusa de sobrescrita do programa não impede o truncamento feito antes pelo shell em um redirecionamento.
A descompressão também precisa de memória, além do espaço para a saída. Se houver erro de limite de memória, consulte as opções e exigências da versão instalada; a quantidade necessária depende da configuração usada para comprimir o arquivo. O limite --memlimit-decompress faz a operação falhar quando ela não pode ser realizada dentro do valor especificado. Não confunda falta de memória com falta de espaço em disco nem aumente um limite sem considerar os recursos disponíveis.
Para um pacote tar confiável ainda comprimido, confira os membros com tar -tJf backup.tar.xz. Crie uma pasta nova com mkdir restore-xz e extraia com tar -xJf backup.tar.xz -C restore-xz. A letra J é maiúscula e seleciona xz no GNU tar. Essa listagem ajuda a planejar o destino, mas não torna um pacote desconhecido confiável.
Na verificação de 29 de outubro de 2026 com unxz, xz e liblzma 5.8.3, Bash 5.3.9, head 8.32 e tar 1.35 do Git for Windows, os modos padrão e -k restauraram exatamente os bytes de um SQL fictício. O modo padrão removeu o comprimido, enquanto -k o preservou. A saída redirecionada de note.txt.xz recuperou os seis bytes esperados, mantendo o comprimido e sem criar note.txt; a forma xz -dc produziu o mesmo conteúdo. O SQL não foi executado nem veio de um banco real.
Em um texto maior, head mostrou dez linhas e retornou zero enquanto unxz retornou um; com pipefail, o pipeline retornou um nesse ambiente. Esse resultado depende do tamanho e do buffering. Uma colisão sem força preservou a saída antiga, e um arquivo com o rodapé alterado foi rejeitado por -t com código um. Um limite de descompressão de 1 MiB (1.048.576 bytes) provocou uma recusa por memória no arquivo de teste. Com entrada ausente, o redirecionamento esvaziou uma saída descartável e ls ainda terminou com zero. A extração dos pacotes tar comprimido e já descomprimido recuperou os bytes dos membros. Esses testes não mediram desempenho ou memória e não verificam permissões nativas do Linux ou todos os metadados.
Pergunta frequente
O que fazer depois de executar unxz backup.tar.xz?
Normalmente resta backup.tar, sem a camada xz. Confira os membros com tar -tf backup.tar, crie uma pasta nova com mkdir restore e extraia com tar -xf backup.tar -C restore. Como o arquivo já é tar, essa extração não usa -J. O guia do tar ligado na introdução explica também os cuidados com os nomes e o destino.
Documentação oficial
O manual oficial do xz e unxz descreve os modos de descompressão, as opções, os limites de memória e os códigos de saída. Para scripts, sua orientação é usar o nome xz com argumentos explícitos, como xz -d ou xz -dc.




