Um problema com os .tar.gz
arquivos é que, quando tento apenas listar o conteúdo de um arquivo, o computador realmente o descompacta, o que levaria muito tempo se o arquivo fosse grande.
Outros formatos de arquivo como .7z
, .rar
, .zip
não tem esse problema. Listar seu conteúdo leva apenas um instante.
Na minha opinião ingênua, essa é uma grande desvantagem do .tar.gz
formato de arquivo.
Então, eu realmente tenho 2 perguntas:
- por que as pessoas usam
.tar.gz
tanto, apesar dessa desvantagem? - que escolhas (refiro-me a outros softwares ou ferramentas) eu tenho se eu quiser o recurso "lista instantânea de conteúdo"?
tar
compression
gzip
archive
Dave.d
fonte
fonte
Respostas:
É importante entender que há uma troca aqui.
tar
significa arquivador de fitas . Em uma fita, você faz principalmente leitura e escrita seqüencial. Atualmente, as fitas raramente são usadas, mastar
ainda são usadas por sua capacidade de ler e gravar seus dados como um fluxo.Você pode fazer:
Você não pode fazer isso com
zip
ou algo parecido.Você não pode nem listar o conteúdo de um
zip
arquivo morto sem armazená-lo localmente em um arquivo procurável primeiro. Pensa como:não vai funcionar.
Para conseguir essa leitura rápida do conteúdo,
zip
ou algo semelhante, é necessário criar um índice. Esse índice pode ser armazenado no início do arquivo (nesse caso, só pode ser gravado em arquivos regulares, não em fluxos) ou no final, o que significa que o arquivador precisa lembrar de todos os membros do arquivo antes de imprimi-lo no final e significa que um arquivo truncado pode não ser recuperável.Isso também significa que os membros do arquivo precisam ser compactados individualmente, o que significa uma taxa de compactação muito menor, especialmente se houver muitos arquivos pequenos.
Outra desvantagem com formatos como
zip
é que o arquivamento está vinculado à compactação, não é possível escolher o algoritmo de compactação. Veja como ostar
arquivos costumavam ser compactados comcompress
(tar.Z
), depois comgzip
, entãobzip2
, então, àxz
medida que novos algoritmos de compactação com melhor desempenho eram criados. O mesmo vale para criptografia. Quem confiariazip
na criptografia de hoje em dia?Agora, o problema com os
tar.gz
arquivos não é tanto que você precisa descompactá-los. A descompactação geralmente é mais rápida do que a leitura de um disco (você provavelmente descobrirá que listar o conteúdo de um arquivo tgz grande é mais rápido que listar o mesmo descompactado quando não estiver armazenado em cache na memória), mas é necessário ler o arquivo inteiro.Não conseguir ler o índice rapidamente não é realmente um problema. Se você prever a necessidade de ler o conteúdo da tabela de um arquivo morto com frequência, poderá simplesmente armazenar essa lista em um arquivo separado. Por exemplo, no momento da criação, você pode:
Um problema maior da IMO é o fato de que, devido ao aspecto seqüencial do arquivo, você não pode extrair arquivos individuais sem ler toda a seção inicial do arquivo que leva a ele. IOW, você não pode fazer leituras aleatórias dentro do arquivo morto.
Agora, para arquivos pesquisáveis, não precisa ser assim.
Se você compactar seu
tar
arquivo compactadogzip
, que o compacta como um todo, o algoritmo de compactação usa os dados vistos no início para compactar, portanto, é necessário começar do início para descompactar.Mas o
xz
formato pode ser configurado para compactar dados em blocos individuais separados (grandes o suficiente para que a compactação seja eficiente), isso significa que, desde que você mantenha um índice no final desses blocos compactados, para arquivos procuráveis, acesse o dados não compactados aleatoriamente (pelo menos em partes).pixz
(paraleloxz
) usa esse recurso ao compactartar
arquivos para adicionar também um índice do início de cada membro do arquivo ao final doxz
arquivo.Portanto, para arquivos buscáveis, você não apenas pode obter uma lista do conteúdo do arquivo tar instantaneamente (sem metadados) se eles foram compactados com
pixz
:Mas você também pode extrair elementos individuais sem precisar ler o arquivo inteiro:
Agora, o motivo pelo qual coisas como
7z
ouzip
raramente são usadas no Unix é principalmente porque elas não podem arquivar arquivos Unix. Eles foram projetados para outros sistemas operacionais. Você não pode fazer um backup fiel dos dados usando esses. Eles não podem armazenar metadados como proprietário (ID e nome), permissão, eles não podem armazenar links simbólicos, dispositivos, fifos ..., eles não podem armazenar informações sobre links físicos e outras informações de metadados, como atributos estendidos ou ACLs.Alguns deles nem sequer podem armazenar membros com nomes arbitrários (alguns se engasgam com barra invertida ou nova linha ou dois pontos, ou nomes de arquivos não-ascii) (alguns
tar
formatos também têm limitações).Nunca descompacte um arquivo tgz / tar.xz no disco!
No caso não é óbvio, não se usar um
tgz
outar.bz2
,tar.xz
... arquivar como:Se você tem um
.tar
arquivo descompactado no seu sistema de arquivos, é que você fez algo errado.O ponto de toda aqueles
xz
/bzip2
/gzip
sendo compressores de transmissão é que eles podem ser usados na mosca, em oleodutos como emEmbora as
tar
implementações modernas saibam chamarunxz
/gunzip
/bzip2
por si mesmas, então:geralmente também funcionaria (e descompactaria os dados rapidamente e não armazenaria a versão não compactada do arquivo no disco).
Exemplo
Aqui está uma árvore de fontes do kernel Linux compactada com vários formatos.
Primeiro, como observado acima, os 7z e zip são um pouco diferentes porque não podem armazenar os poucos links simbólicos e faltam a maioria dos metadados.
Agora, alguns intervalos para listar o conteúdo depois de liberar os caches do sistema:
Você notará que a listagem do
tar.xz
arquivo é mais rápida que a do.tar
PC de 7 anos, pois a leitura desses megabytes extras do disco leva mais tempo do que a leitura e descompactação do arquivo menor.Então, OK, listar os arquivos com 7z ou zip é mais rápido, mas isso não é um problema, como eu disse, é fácil contornar o armazenamento da lista de arquivos ao lado do arquivo:
Ainda mais rápido que 7z ou zip, mesmo após a remoção de caches. Você também notará que o tamanho cumulativo do arquivo morto e seu índice ainda são menores que os arquivos zip ou 7z.
Ou use o
pixz
formato indexado:Agora, para extrair elementos individuais do arquivo, o pior cenário para um arquivo tar é ao acessar o último elemento:
Isso é muito ruim, pois ele precisa ler (e descompactar) todo o arquivo. Compare com:
Minha versão do 7z parece não ser capaz de acessar aleatoriamente, então parece ser ainda pior do que
tar.xz
:Agora, já que
pixz
geramos um dos anteriores:É mais rápido, mas ainda relativamente lento, porque o arquivo contém alguns blocos grandes:
Portanto,
pixz
ainda é necessário ler e descompactar uma grande quantidade de dados (de até) ~ 19 MB.Podemos tornar o acesso aleatório mais rápido, tornando os arquivos com blocos menores (e sacrificando um pouco de espaço em disco):
fonte
.tar.gz
pode levar muito tempo. Especialmente se o meio estiver lento. É então que o formato de um arquivo se torna a diferença entre o impossível e o prático.Os administradores corporativos e acadêmicos geralmente são mais notados quando as coisas quebram do que apreciados quando as coisas acontecem com eficiência. Tais ambientes geram medo da experimentação e desprezam a novidade .
Dar ( D isk Ar chiver) apresenta uma série de alcatrão -como características, além de melhorias, tais como acesso rápido aleatório para arquivos compactados, AKA catalogação, indexação AKA, AKA "conteúdo instantâneo listagem" ...
Veja também: Formatos de compactação com bom suporte para acesso aleatório dentro de arquivos?
fonte