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.

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 -tzfOutar -tJf; - a pasta de destino com
senhaEls-la; - uma extração de teste em
/tmpquando 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 -qrse 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.