Por que eu iria tar um único arquivo?

100

Na minha empresa, baixamos um instantâneo do banco de dados de desenvolvimento local como um arquivo db.dump.tar.gz . A compactação faz sentido, mas o tarball contém apenas um único arquivo ( db.dump ).

Existe algum ponto para arquivar um único arquivo, ou é .tar.gz apenas um idioma tão comum? Por que não apenas .gz ?

    
por gardenhead 20.04.2016 / 14:52

8 respostas

162

As vantagens de usar .tar.gz em vez de .gz são

  • tar armazena mais metadados (permissões do UNIX, etc.) do que gzip .
  • a configuração pode ser expandida com mais facilidade para armazenar vários arquivos
  • Os arquivos .tar.gz são muito comuns, arquivos somente-gzipados podem confundir alguns usuários. (cf. comentário de MelBurslans )

A sobrecarga de usar tar também é muito pequena.

Se não for realmente necessário, ainda não recomendo tar um único arquivo. Existem muitas ferramentas úteis que podem acessar diretamente arquivos compactados (como zcat , zgrep etc. - também existente para bzip2 e xz ).

    
por 20.04.2016 / 15:05
63

Na verdade, você está fazendo apenas metade da pergunta. A outra pergunta é: "Por que eu comprimiria um arquivo tar com gzip?". E a resposta não é apenas que gzip torna o arquivo menor (na maioria dos casos):

tar :

  • armazena o nome do arquivo e outros metadados : modo, ID do proprietário, ID do grupo, tamanho do arquivo, tempo de modificação
  • armazena uma soma de verificação (somente para o cabeçalho)

gzip :

  • pode armazenar o nome do arquivo original, mas isso é opcional
  • tem uma soma de verificação CRC-32 sobre os dados originais
  • comprime o arquivo

Com apenas tar , você não pode ter certeza de que seus dados não foram corrompidos. Com apenas gzip você não pode restaurar o ID do usuário / grupo, o tempo de modificação e possivelmente não o nome do arquivo original.

A combinação é mais poderosa do que os comandos / formatos individuais fornecem, porque complementam os recursos um do outro .

    
por 21.04.2016 / 11:02
30

Há uma grande vantagem em usar somente arquivos de texto com gzip - o conteúdo pode ser acessado diretamente com ferramentas de linha de comando, como less , zgrep , zcat .

    
por 20.04.2016 / 17:07
21

Eu diria que é provável que as pessoas simplesmente não percebam que podem usar o gzip / bzip2 / xz sem tar. Possivelmente porque eles vêm de um DOS / fundo do Windows onde é normal que a compactação e o arquivamento sejam integrados em um único formato ( ZIP , RAR , etc).

Embora possa haver pequenas vantagens em usar o tar em algumas situações devido ao armazenamento de metadados ou a capacidade de adicionar arquivos extras, também há desvantagens. Com um arquivo gzip / bzip2 / xz simples, você pode descompactá-lo e canalizar os dados descompactados diretamente para outra ferramenta (como seu banco de dados) sem ter que armazenar os dados descompactados como um arquivo no disco. Com um tarball, isso é mais difícil.

    
por 20.04.2016 / 16:30
17

Existe uma diferença importante que poderia tornar o uso de tar importante em algumas circunstâncias: Além dos "metadados" que @jofel mencionou em sua resposta, tar registra o nome do arquivo no arquivo. Quando você extrai, você obtém o nome do arquivo original independentemente do nome do arquivo.

No seu caso, o arquivo tar e o arquivo que ele contém têm os nomes relacionados db.dump.tar.gz e db.tar , mas suponha que você renomeie o arquivo tar para 20-Apr-16.dump.tgz , ou o que for. Descompacte isso com tar xvfz e você receberá db.dump . Para comparação, descompacte 20-Apr-16.dump.gz e você terá 20-Apr-16.dump . (Edit: como apontado nos comentários, o gzip também faz um registro do nome do arquivo; mas normalmente não é usado ao descompactar). Um tar archive também pode conter um nome de caminho relativo que coloca o arquivo extraído em um subdiretório.

Seu caso de uso determinará se esse tipo de persistência de nome de arquivo é necessário, ou até mesmo desejado , ou se é realmente indesejável. Mas, certamente, independentemente da compactação, um arquivo tar viaja de maneira diferente de um arquivo normal.

    
por 20.04.2016 / 22:41
7

Além de todas as outras respostas, recentemente descobri uma situação de script onde apenas um arquivo era esperado, mas um funcionário anterior escreveu os scripts com a possibilidade de mais de um arquivo ser gerado. Assim, os arquivos foram banidos e compactados, depois transferidos e expandidos.

Quando o processo cresceu até o ponto em que ele fez um arquivo de 4,3 GB, ele rolou e criou um arquivo .dump.001, além de um arquivo .dump. Todos os scripts continuaram funcionando.

Isso é a preguiça proativa do administrador de sistemas definida!

    
por 24.04.2016 / 05:01
2

Eu colocaria um único arquivo, para copiá-lo, preservando o timestamp (que é facilmente ignorado nos downloads). Permissões de arquivo e propriedade são menos importantes: download é um termo que se aplica a sistemas que não estão bem integrados.

Se você está usando ou não, é prática padrão compactar o arquivo para fazer downloads mais rapidamente - e evitar ficar sem espaço em disco.

    
por 21.04.2016 / 22:36
-1

Tar é especialmente útil para vários arquivos não gravados em um sistema de arquivos formal, sempre foi. Se, por algum motivo, houver, na ocasião, apenas 1 arquivo a ser escrito, isso não tem nenhuma consequência real. Eu posso dd meu .tar.gz diretamente para / dev / sdx sem considerar partição ou sistema de arquivos. Pode ser também fita.

Geralmente, isso é feito porque o script ou processo foi copiado do código de herança. Claro que não há necessidade de tar se houver apenas um arquivo, mas deixa espaço para aprimoramento em vários arquivos ......

    
por 21.04.2016 / 22:22