Gerador de comandos tar
Crie, extraia e liste arquivos tar sem precisar procurar as flags.
Sobre esta ferramenta
Escolha se quer criar, extrair ou listar um arquivo tar, selecione a compressão (gzip, bzip2, xz ou zstd), adicione arquivos e exclusões e copie o comando tar com cada flag explicada.
Como usar
- Escolha Criar, Extrair ou Listar conteúdo.
- Escolha a compressão; o nome do arquivo recebe a extensão correspondente.
- Para um novo arquivo tar, liste os arquivos e pastas a incluir e os padrões a excluir.
- Copie o comando e leia o que cada flag faz.
Perguntas
- Como extraio um arquivo .tar.gz?
- Execute tar -xzvf file.tar.gz. Adicione -C pasta para extrair em outro lugar. O GNU tar moderno e o tar do macOS detectam a compressão sozinhos, então tar -xvf file.tar.gz também funciona.
- Qual compressão devo escolher?
- O gzip é o padrão seguro, que abre em qualquer lugar. O zstd costuma ser mais rápido e gerar arquivos menores, se todas as máquinas que forem abrir o arquivo tiverem um tar recente. O xz gera os menores arquivos, mas é o mais lento.
- Por que o -f precisa ficar por último em -czvf?
- O f usa a palavra seguinte como nome do arquivo tar. Em -czfv, o tar trataria v como nome do arquivo. Mantenha o f no fim do grupo de letras.
- O que o --strip-components faz?
- Remove as pastas iniciais de cada caminho durante a extração. Arquivos tar costumam conter uma pasta de topo como project-1.2/; --strip-components=1 coloca o conteúdo dela direto no destino.
- Como vejo o que há dentro sem extrair?
- Use Listar conteúdo, que gera tar -tvf archive.tar.gz. Ele mostra cada arquivo com tamanho e data e não altera nada.
- Como adicionar arquivos a um tar.gz existente?
- Não dá para acrescentar a um arquivo compactado. O tar -rf só adiciona arquivos a um .tar sem compressão. Para um .tar.gz, crie o pacote de novo com os arquivos extras, ou descompacte-o com gunzip, rode tar -rf backup.tar newfile e compacte de novo com gzip.
- Por que o tar diz “Not found in archive”?
- O caminho que você pediu não corresponde exatamente ao nome de um membro. Rode tar -tzf archive.tar.gz e copie o caminho da saída: pacotes criados com tar -czf x.tar.gz . armazenam todos os nomes com um ./ inicial, e muitos têm uma pasta de topo. No GNU tar, os padrões também precisam de --wildcards.
- Como impedir o macOS de adicionar arquivos ._ a um tar?
- O tar do macOS (bsdtar) armazena atributos estendidos como arquivos ._ extras, que aparecem como lixo no Linux. Crie o pacote com --no-mac-metadata, ou defina COPYFILE_DISABLE=1 antes do comando: COPYFILE_DISABLE=1 tar -czf backup.tar.gz project. No Linux e com o GNU tar, nada muda.
Como criar um arquivo tar.gz de uma pasta
Rode tar -czvf backup.tar.gz src docs package.json para empacotar os arquivos e pastas listados. Os caminhos são armazenados como você os digita, então use caminhos relativos. Para armazenar uma pasta sem o caminho acima dela, mude de diretório antes com -C: tar -czf site.tar.gz -C /var/www html. O GNU tar e o bsdtar removem a / inicial dos caminhos absolutos, para que o arquivo não possa sobrescrever arquivos do sistema ao ser extraído.
Para deixar coisas de fora, adicione --exclude=node_modules ou --exclude="*.log", e coloque os padrões entre aspas para que o shell não os expanda. Um padrão sem barra corresponde a esse nome em qualquer profundidade. No GNU tar, coloque as opções --exclude antes da lista de arquivos, porque elas só valem para os arquivos listados depois delas. Grave o arquivo fora da pasta que está empacotando, para que o tar não tente empacotar o arquivo dentro dele mesmo.
tar.gz ou zip: qual formato de arquivo usar?
O tar mantém as permissões Unix, os proprietários e os links simbólicos, o que importa para scripts e deploys. Ele compacta todos os arquivos como um único fluxo, então muitos arquivos pequenos e parecidos encolhem mais do que no zip. O custo é não ter acesso aleatório: listar ou extrair um arquivo significa ler o pacote inteiro. O zip compacta cada arquivo separadamente e abre nativamente no Windows, embora o Windows 10 em diante também traga o tar.
.tgz é só um nome mais curto para .tar.gz, com exatamente o mesmo conteúdo. .tar.bz2 e .tar.xz trocam velocidade por arquivos menores, e .tar.zst é rápido e pequeno, mas exige GNU tar 1.31 ou mais recente, ou um bsdtar recente, com a flag --zstd. Tanto o GNU tar quanto o bsdtar também aceitam -a, que escolhe a compressão pela extensão do arquivo ao criar.
Como extrair um único arquivo de um tar
Coloque o nome do arquivo depois do pacote: tar -xzf backup.tar.gz src/config.yml. O caminho precisa ser exatamente igual ao que tar -tzf backup.tar.gz imprime, incluindo um ./ inicial ou a pasta de topo, se houver. O GNU tar precisa de --wildcards para usar padrões como "*.yml", enquanto o bsdtar do macOS os aceita diretamente. Adicione -O para imprimir o arquivo no terminal em vez de gravá-lo: tar -xzOf backup.tar.gz src/config.yml.
Antes de extrair um arquivo tar de outra pessoa, liste o conteúdo. Alguns não têm pasta de topo e despejam centenas de arquivos na pasta atual, e arquivos existentes com os mesmos nomes são sobrescritos sem aviso. Extraia em uma pasta nova e vazia: mkdir out e depois tar -xzf archive.tar.gz -C out. Para conferir um download antes, compare o SHA-256 dele com o Gerador de hash ou com sha256sum.
Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta