Respostas:
O TAR cria um único arquivo arquivado de muitos arquivos, mas não os compacta.
Um arquivo tar é a concatenação de um ou mais arquivos. Cada arquivo é precedido por um registro de cabeçalho de 512 bytes. Os dados do arquivo são gravados inalterados, exceto que seu comprimento é arredondado para um múltiplo de 512 bytes e o espaço extra é preenchido com zero. O final de um arquivo é marcado por pelo menos dois registros consecutivos preenchidos com zero.
O GZIP compacta um único arquivo em outro arquivo, mas não cria arquivos.
... Embora seu formato de arquivo também permita a concatenação de vários fluxos (os arquivos compactados são simplesmente descompactados como se fossem originalmente um arquivo), o gzip é normalmente usado para compactar apenas arquivos únicos. [4] Os arquivos compactados geralmente são criados reunindo coleções de arquivos em um único arquivo tar e depois compactando esse arquivo com o gzip.
tar -xzvf tarball.tar.gz single/file.txt
. Nos bastidores, ele precisa fazer um trabalho extra, mas, para as aparências, extrai um único arquivo.
.tar.*
arquivo compactado é sempre "sólido", ou seja. consiste em um único fluxo compactado. Um .zip
arquivo, por outro lado, não é sólido, o algoritmo de compactação é iniciado novamente para cada arquivo. Ele sacrifica a eficiência da compactação para acelerar o acesso aleatório. .7z
os arquivos podem ser sólidos, não sólidos ou ter blocos sólidos.
Gzip / Bzip2 são compressores de fluxo. Eles compactam um fluxo de dados em algo menor. Eles podem ser usados em arquivos individuais, mas não em grupos de arquivos por conta própria.
O Tar, por outro lado, tem a capacidade de transformar uma lista de arquivos, com caminhos, permissões e informações de propriedade, em um único fluxo contínuo - e vice-versa.
É por isso que, para arquivar arquivos (e se também é necessário compactação), geralmente se usa tar + algum método de compactação.
Tar é responsável por fazer uma e apenas uma coisa bem: (des) arquivar em (de) um único arquivo. Sobre o que? De uma e apenas uma coisa: um conjunto de arquivos.
O Gzip é responsável por fazer uma e apenas uma coisa bem: (des) compactar. Sobre o que? De uma coisa e apenas uma coisa: um único arquivo de qualquer tipo ... e isso inclui um arquivo criado com tar.
Ele volta à filosofia UNIX de pipelining, a arquitetura subjacente de "tubos e filtros"; o tratamento de tudo como um arquivo e o objetivo arquitetônico sólido de "uma coisa faz apenas uma coisa e faz bem" (que resulta em uma espécie de plug-and-play muito elegante e simples .)
Em sua simplicidade, é quase de natureza algébrica (um grande objetivo no design de sistemas). E isso não é tarefa fácil.
De muitas maneiras (e não sem falhas), isso é quase um ponto alto em composição, modularidade, acoplamento solto e alta coesão. Se você entende esses quatro (e eu quero dizer realmente entender ), entende, será óbvio por que tar e gzip funcionam assim em pares.
Primeiro de tudo, TAR não foi criado para criar arquivo arquivos. É Tape ARchiver . Seu trabalho é gravar ou carregar um arquivo de / para fita.
A opção -f faz com que use um arquivo como "fita virtual", que pode ser compactada por outro programa. De fato, essa compactação também acontece em gravações do mundo real.
Obviamente, a filosofia de usar um programa para fazê-lo também conta nesse caso, mas pode-se perder o motivo pelo qual os arquivos TAR são estruturados como um fluxo em vez de um diretório de conteúdo + conteúdo.
Tradicionalmente, os sistemas Unix usado um programa para executar uma tarefa acordo com a filosofia Unix : tar
era apenas um meio para empacotar vários arquivos em um único arquivo, originalmente para backup em fita (daí tar
, t macaco ar cebolinha). tar
não fornece compactação; o arquivo não comprimida resultante é tipicamente comprimida com algum outro programa, tais como gzip
, bzip2
, ou xz
. Antigamente, eles usavam o compress
comando para fazer isso; algoritmos de compressão mais recentes são muito mais eficazes que isso.
A abordagem altamente modularizada ditada pela filosofia do Unix significa que cada programa pode ser usado individualmente, conforme apropriado, ou combinado para executar tarefas mais complexas, incluindo a criação de arquivos compactados, conforme descrito aqui. Para esse tipo de tarefa, também facilita a troca de ferramentas individuais, conforme necessário; você apenas alteraria o programa de compactação para usar um algoritmo de compactação diferente, sem precisar substituir o tar
próprio utilitário.
Essa abordagem modular não deixa de ter suas desvantagens. Conforme mencionado nos comentários de outras respostas, um formato de arquivo compactado dedicado como .zip
é mais capaz de lidar com a extração de arquivos individuais; tarballs compactados precisam ser descompactados quase totalmente para extrair arquivos perto do final do arquivo, enquanto os .zip
arquivos permitem acesso aleatório ao seu conteúdo. (Alguns formatos mais recentes, como, por exemplo .7z
, suportam arquivos sólidos e não sólidos, bem como blocos sólidos de tamanho variável em arquivos maiores.) O uso contínuo de tar
em conjunto com um utilitário de compactação separado é uma questão de tradição e compatibilidade; também .7z
e .zip
não suporta metadados do sistema de arquivos Unix, como permissões.