Tutoriel Linux

Tar no Linux: criando e extraindo um arquivo sem perder os caminhos.

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Você recuperou um arquivo. alcatrão Ou tar.gzVocê quer abrir o arquivo corretamente ou precisa compactar uma pasta antes de movê-la. O comando parece simples, até o momento em que o arquivo recria toda a árvore de diretórios no lugar errado ou sobrescreve um arquivo que você queria manter.

Aconselho você a tratar alcatrão Este guia mostrará como criar um arquivo compactado, listar seu conteúdo, extraí-lo para uma pasta escolhida e verificar o resultado antes de mexer nos arquivos de produção.

Tux organiza um arquivo tar do Linux com pastas e caminhos abstratos.
Com o comando tar, a pasta de destino e os caminhos salvos são tão importantes quanto o próprio comando.

O formato Tar é usado para arquivamento, não necessariamente para compressão.

O ponto fundamental a ter em mente: O tar agrupa arquivos e preserva seus caminhos.A compressão geralmente é adicionada posteriormente, usando gzip, xz ou bzip2. É por isso que você encontra arquivos em .alcatrão, .tar.gz, .tgz, .tar.xz Ou .tar.bz2.

Antes de extrair um arquivo desconhecido, não execute diretamente um comando aleatório em sua pasta pessoal ou em qualquer outro lugar. /var/wwwListe o conteúdo. Você poderá verificar se ele contém uma pasta raiz vazia, vários arquivos simples ou caminhos mais longos do que o esperado.

tar -tf backup.tar

tar -tzf backup.tar.gz

tar -tJf backup.tar.xz

O t A lista contém o conteúdo. f Indica o arquivo compactado. As opções z E J. Eles indicam, respectivamente, gzip e xz.

Crie um arquivo tar limpo

Para criar um arquivo não compactado de uma pasta, primeiro navegue até o nível de diretório correto. Isso é importante porque O tar registra os caminhos que você lhe indica..

cd /home/nathan/projets

tar -cf site.tar site

Este comando cria site.tar com o arquivo site dentro. Se você extrair posteriormente, obterá uma pasta. site/, e não uma dispersão de arquivos no diretório atual.

Para criar um arquivo compactado com gzip, adicione z :

tar -czf site.tar.gz site

Para xz, que geralmente é mais compacto, mas mais lento, use J. :

tar -cJf site.tar.xz site

Em um servidor, às vezes prefiro um simples arquivo gzip. É rápido de criar, legível em qualquer lugar e mais do que suficiente para mover uma pasta de configuração ou preparar um backup pontual.

Evite caminhos absolutos em um arquivo.

Um mau hábito é registrar um trajeto absoluto sem pensar:

tar -czf site.tar.gz /var/www/site

Tar geralmente sabe como remover o / Inicialmente, isso irá alertá-lo, mas não é a melhor base para uma transferência sem problemas. Você também corre o risco de não saber exatamente onde os arquivos serão salvos após a extração.

eu prefiro usar -C Para indicar claramente ao tar onde se posicionar antes de ler os arquivos:

tar -czf /tmp/site.tar.gz -C /var/www site

Aqui, o arquivo contém site/, não var/www/site/É mais legível, mais portátil e muito menos trabalhoso de extrair para outra máquina.

Extraia o arquivo para a pasta correta.

Para extrair um arquivo .alcatrão na pasta atual:

tar -xf site.tar

Para um arquivo gzip:

tar -xzf site.tar.gz

Mas, na prática, costumo recomendar a criação de uma pasta vazia e a extração dos arquivos para dentro dela. Assim, você pode ver imediatamente o conteúdo do arquivo compactado, sem poluir o diretório atual.

mkdir -p /tmp/test-extraction

tar -xzf site.tar.gz -C /tmp/test-extraction

encontrar /tmp/test-extraction -maxdepth 2 -type f | head

Este método evita muitas surpresas desagradáveis, especialmente com um arquivo baixado ou enviado por outra pessoa.

Veja o que será triturado antes da extração.

O Tar pode substituir arquivos existentes se os caminhos coincidirem. Em uma máquina de teste, isso não é um problema. Em uma pasta de aplicativo, pode rapidamente se tornar uma grande dor de cabeça.

Antes de extrair os arquivos para uma pasta que já os contenha, liste o conteúdo do arquivo e compare-o com o destino:

tar -tzf site.tar.gz | cabeça

ls -la /var/www/site

Se você quiser testar sem misturar arquivos, continue usando uma pasta temporária:

rm -rf /tmp/test-extraction
mkdir -p /tmp/test-extraction

tar -xzf site.tar.gz -C /tmp/test-extraction

diff -qr /tmp/test-extraction/site /var/www/site

O diferença -qr Não substitui uma estratégia de backup real, mas já oferece uma ideia clara dos diferentes arquivos.

Extraia sem recriar toda a primeira pasta.

Alguns projetos vêm com uma pasta raiz do tipo app-1.4.2/Se você deseja apenas recuperar o conteúdo para um destino específico, --strip-components=1 pode ser útil.

mkdir -p /tmp/app

tar -xzf app-1.4.2.tar.gz -C /tmp/app --strip-components=1

Aviso: Não utilize esta opção sem antes listar o arquivo. Se o arquivo não contiver o nível de pasta esperado, você poderá obter um resultado diferente do pretendido.

Excluir um arquivo de um arquivo compactado

Ao fazer backup de uma pasta de aplicativo, nem sempre é desejável incluir caches, logs extensos ou dependências regeneráveis. A opção --excluir Permite que o arquivo seja mantido mais organizado.

tar -czf site.tar.gz --exclude='site/cache' --exclude='site/logs' site

Se você estiver preparando um backup adequado, não substitua. uma sincronização rsync controlada criando um arquivo manual. O `tar` é conveniente para compactar, transportar ou congelar uma pasta. Para backups regulares, você também deve considerar a rotação de arquivos, testes de restauração e armazenamento separado.

Arquivo Tar.gz para instalação: não confunda arquivo compactado com programa.

Um arquivo .tar.gz Pode conter software, mas isso não significa que ele seja sempre instalado com o mesmo comando. Às vezes contém um binário pronto para executar, às vezes um script, às vezes o código-fonte para compilar.

Se o seu objetivo é realmente instalar software baixado como tar.gzComece por ler o conteúdo, o arquivo. LEIA-ME ou a documentação da editora. Detalhei esse caso separadamente no guia. Instalando um arquivo tar.gz no Linux sem executar comandos aleatórios.

Antes de restaurar o arquivo

Antes de mover ou restaurar um arquivo, verifique pelo menos estes pontos:

  • o conteúdo exato com alcatrão -tf, alcatrão -tzf Ou tar -tJf ;
  • a pasta de destino com senha E ls-la ;
  • uma extração de teste em /tmp quando o arquivo provém de uma fonte externa;
  • os direitos e proprietários após a extração com eu -eu ;
  • os arquivos modificados com diferença -qr se você restaurar por cima de uma pasta existente.

Se precisar renomear ou mover os arquivos extraídos, faça isso corretamente com o comando mvNão se trata de extrair arquivos para a pasta errada. Um arquivo tar bem preparado deve economizar seu tempo, e não deixar você com uma estrutura de diretórios para corrigir manualmente.

Para saber mais, você também pode consultar o Manual do tar GNU e a página tar(1) de man7.orgSão menos fáceis de assimilar do que um guia prático, mas muito úteis assim que você começar a usar opções avançadas.

sudo apt update && sudo apt upgrade