Como um desenvolvedor principalmente do Windows, talvez eu esteja perdendo algo cultural na comunidade Linux, mas isso sempre me confundiu.
Ao baixar algo, os arquivos são primeiro colocados em um .tar
arquivo e depois compactados . Por que o processo de duas etapas? Não fechando conseguir o arquivo de agrupamento? Existe algum outro benefício que eu não conheço?
Respostas:
bzip
egzip
trabalhar em arquivos únicos, não em grupos de arquivos. Simplesmente antigozip
(epkzip
) opera em grupos de arquivos e tem o conceito de arquivo embutido.A filosofia * nix é uma das pequenas ferramentas que realizam trabalhos específicos muito bem e podem ser encadeadas. É por isso que existem duas ferramentas aqui que têm tarefas específicas e foram projetadas para se encaixar bem. Também significa que você pode usar tar a arquivos de grupo e, em seguida, você tem uma escolha de uma ferramenta de compressão (
bzip
,gzip
, etc).fonte
tar
arquivos: suporte a permissão do sistema de arquivos Linux . O que aconteceria se você baixasse um pacote Debian, seu gerenciador de pacotes o instalasse, mas nenhum dos executáveis fosse executável? Essa é a verdadeira razão pela qual todo mundo usa tarballs ...;)Uma distinção importante está na natureza dos dois tipos de arquivos.
Os arquivos TAR são pouco mais que uma concatenação do conteúdo do arquivo com alguns cabeçalhos, enquanto gzip e bzip2 são compressores de fluxo que, em tarballs, são aplicados a toda a concatenação.
Os arquivos ZIP são uma concatenação de arquivos compactados individualmente, com alguns cabeçalhos. Na verdade, o algoritmo DEFLATE é usado por zip e gzip e, com o ajuste binário apropriado, você pode pegar a carga de um fluxo gzip e colocá-la em um arquivo zip com entradas de cabeçalho e dicionário apropriadas.
Isso significa que os dois tipos de arquivos diferentes têm diferentes compensações. Para grandes coleções de pequenos arquivos, TAR seguido por um compressor de fluxo normalmente resultará em uma taxa de compressão mais alta do que ZIP porque o compressor de fluxo terá mais dados para construir suas frequências de dicionário e, portanto, será capaz de espremer mais informações redundantes. Por outro lado, um erro (preservação do comprimento do arquivo) em um arquivo ZIP só corromperá os arquivos cujos dados compactados foram afetados. Normalmente, os compressores de stream não podem se recuperar de forma significativa de erros no meio do stream. Assim, os arquivos ZIP são mais resistentes à corrupção, pois parte do arquivo ainda estará acessível.
fonte
É estranho que ninguém mais tenha mencionado que as versões modernas do GNU
tar
permitem que você comprima enquanto empacota:Você também pode usar o compressor de sua escolha, desde que ele suporte as opções '
-c
' (para stdout ou de stdin) e '-d
' (descompactar):Isso permitiria a você especificar qualquer compressor alternativo.
[ Adicionado : se você estiver extraindo
gzip
oubzip2
compactando arquivos, o GNUtar
os detecta automaticamente e executa o programa apropriado. Ou seja, você pode usar:e estes serão tratados adequadamente. Se você usa um compressor não padrão, precisa especificá-lo ao fazer a extração.]
O motivo da separação é, como na resposta selecionada, a separação de funções. Entre outras coisas, significa que as pessoas podem usar o '
cpio
' programa para empacotar os arquivos (em vez detar
) e, em seguida, usar o compressor de escolha (uma vez, o compressor preferido erapack
, mais tarde eracompress
(que era muito mais eficaz do quepack
), e entãogzip
que correu anéis em torno de seus antecessores, e é totalmente competitivo comzip
(que foi portado para Unix, mas não é nativo lá), e agorabzip2
que, na minha experiência, geralmente tem uma vantagem de 10-20% sobregzip
.[ Adicionado : alguém anotou em sua resposta que
cpio
tem convenções engraçadas. Isso é verdade, mas até que o GNUtar
obtivesse as opções relevantes ('-T -
'),cpio
era o melhor comando quando você não queria arquivar tudo o que estava sob um determinado diretório - você poderia escolher exatamente quais arquivos seriam arquivados. A desvantagem decpio
disso é que você não apenas pode escolher os arquivos - você tem que escolhê-los. Ainda há um lugar ondecpio
pontua; ele pode fazer uma cópia in-situ de uma hierarquia de diretório para outra sem nenhum armazenamento intermediário:A propósito, a
-depth
opção ' ' ativadafind
é importante neste contexto - ela copia o conteúdo dos diretórios antes de definir as permissões nos próprios diretórios. Quando verifiquei o comando antes de inserir o acréscimo a esta resposta, copiei alguns diretórios somente leitura (permissão 555); quando fui deletar a cópia, tive que relaxar as permissões nos diretórios antes que 'rm -fr /new/place
' pudesse terminar. Sem a-depth
opção, ocpio
comando teria falhado. Só me lembrei disso quando fui fazer a limpeza - a fórmula citada é tão automática para mim (principalmente em virtude de muitas repetições ao longo de muitos anos). ]fonte
O engraçado é que você pode obter comportamentos não previstos pelos criadores de
tar
egzip
. Por exemplo, você não pode apenas compactar um arquivo tar, você também pode compactar arquivos compactados com tar, para produzir umfiles.gz.tar
(isso seria tecnicamente mais próximo da maneira comopkzip
funciona). Ou você pode colocar outro programa no pipeline, por exemplo, alguma criptografia, e pode escolher uma ordem arbitrária de tar, gzip e criptografar. Quem quer que tenha escrito o programa de criptografia não precisa ter a menor idéia de como seu programa seria usado, tudo o que ele precisa fazer é ler a entrada padrão e gravar na saída padrão.fonte
No mundo Unix, a maioria dos aplicativos são projetados para fazer uma coisa, e bem. Os utilitários zip mais populares no Unix, gzip e bzip2 fazem apenas compactação de arquivos. tar faz a concatenação do arquivo. Canalizar a saída do tar em um utilitário de compactação faz o que é necessário, sem adicionar complexidade excessiva a qualquer parte do software.
fonte
Outra razão pela qual é tão prevalente é que tar e gzip estão em quase toda a base de instalação do * NIX lá fora. Acredito que esse seja provavelmente o maior motivo. É também por isso que os arquivos zip são extremamente prevalentes no Windows, porque o suporte é embutido, independentemente das rotinas superiores em RAR ou 7z.
GNU tar também permite que você crie / extraia esses arquivos de um comando (uma etapa):
tar -cfvj destination.tar.bz2 *.files
tar -cfvz destination.tar.gz *.files
Extraia um arquivo: (a parte -C é opcional, o padrão é o diretório atual)
tar -xfvj archive.tar.bz2 -C destination_path
tar -xfvz archive.tar.gz -C destination_path
Isso é o que guardei na memória de meus muitos anos no Linux e recentemente no Nexenta (OpenSolaris).
fonte
Acho que você estava procurando mais contexto histórico para isso. O zip original era para um único arquivo. Tar é usado para colocar vários arquivos em um único arquivo. Portanto, tarar e compactar é o processo de duas etapas. Por que ainda é tão dominante hoje, ninguém sabe.
Da wikipedia para Tar_ (file_format)
fonte
tar é UNIX assim como UNIX é tar
Em minha opinião, a razão de ainda usar
tar
hoje é que é um dos casos (provavelmente raros) em que a abordagem do UNIX fez tudo perfeitamente certo desde o início.Olhando mais de perto os estágios envolvidos na criação de arquivos, espero que você concorde que a forma como a separação de diferentes tarefas ocorre aqui é a filosofia UNIX no seu melhor:
uma ferramenta (
tar
para dar um nome aqui) especializada em transformar qualquer seleção de arquivos, diretórios e links simbólicos, incluindo todos os metadados relevantes, como carimbos de data / hora, proprietários e permissões em um fluxo de bytes.e apenas outra ferramenta arbitrariamente intercambiável (
gzip
bz2
xz
para citar apenas algumas opções) que transforma qualquer fluxo de entrada de bytes em outro (espero) menor fluxo de saída.O uso dessa abordagem oferece vários benefícios para o usuário e também para o desenvolvedor:
extensibilidade Permitindo acoplar
tar
com qualquer algoritmo de compressão já existente ou qualquer algoritmo de compressão ainda a ser desenvolvido sem ter que mudar nada no funcionamento interno detar
tudo.Assim que o novo "hyper-zip-utra" ou ferramenta de compressão Whater for lançado, você já estará pronto para usá-lo, abraçando seu novo servo com todo o poder de
tar
.estabilidade
tar
tem sido amplamente utilizada desde o início dos anos 80, testada e executada em vários sistemas operacionais e máquinas.Evitar a necessidade de reinventar a roda na implementação de armazenamento de propriedade, permissões, carimbos de data / hora e semelhantes repetidamente para cada nova ferramenta de arquivamento não só economiza muito (de outra forma desnecessariamente gasto) no desenvolvimento, mas também garante a mesma confiabilidade para todos nova aplicação.
consistência A interface do usuário permanece a mesma o tempo todo.
Não há necessidade de lembrar que para restaurar permissões usando a ferramenta A você deve passar a opção
--i-hope-you-rember-this-one
e usando a ferramenta B você deve usar--this-time-its-another-one
enquanto usa a ferramenta C é `--hope-you-didnt-try-with-tool-as-switch.Ao passo que, ao utilizar a ferramenta D, você realmente teria estragado tudo se não a tivesse usado
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.fonte
O alcatrão é popular principalmente por razões históricas. Existem várias alternativas disponíveis. Alguns deles existem há quase tanto tempo quanto o alcatrão, mas não podiam ultrapassar o alcatrão em popularidade por vários motivos.
A principal vantagem (e desvantagem) do tar é que ele não possui cabeçalho de arquivo, nem diretório central de conteúdo. Por muitos anos, portanto, nunca sofreu de limitações no tamanho do arquivo (até esta década em que um limite de 8 Gb para arquivos dentro do arquivo se tornou um problema, resolvido anos atrás).
Aparentemente, a única desvantagem do tar.gz (ou ar.Z para esse assunto), que é que você tem que descompactar todo o arquivo para extrair arquivos individuais e listar o conteúdo do arquivo, nunca feriu as pessoas o suficiente para fazê-los abandonar o tar em números significativos .
fonte
gzip e bzip2 são simplesmente um compressor, não um software de arquivamento. Daí a combinação. Você precisa do software tar para agrupar todos os arquivos.
O próprio ZIP e o RAR também são uma combinação dos dois processos.
fonte
Normalmente no mundo * nux, pacotes de arquivos são distribuídos como tarballs e, em seguida, opcionalmente compactados com gzip. Gzip é um programa de compressão de arquivo simples que não faz o pacote de arquivos que o tar ou zip faz.
Ao mesmo tempo, o zip não lidava corretamente com algumas das coisas que os sistemas de arquivos Unix tar e unix consideravam normais, como links simbólicos, arquivos de casos mistos, etc. Não sei se isso mudou, mas é por isso que usamos tar.
fonte
Tar = Arquivos de grupos em 1 arquivos
GZip = compactar o arquivo
Eles dividem o processo em 2. É isso.
No ambiente Windows você deve estar mais acostumado a usar o WinZip ou WinRar que faz um Zip. O processo de compactação desses softwares agrupa o arquivo e a compactação, mas você simplesmente não vê esse processo.
fonte
Pela mesma razão pela qual os usuários do mac adoram imagens de disco: eles são uma maneira realmente conveniente de arquivar coisas e depois distribuí-las, fazer download / baixar ou enviar por e-mail, etc.
E mais fácil de usar e mais portátil do que os zips IMHO.
fonte
Nos meus dias de Altos-XENIX (1982), começamos a usar tar (arquivador de fita) para extrair arquivos de 5 disquetes de 1/4 ou fita de streaming, bem como copiar para essas mídias. Sua funcionalidade é muito semelhante aos comandos BACKUP.EXE e RESTORE.EXE no DOS 5.0 e 6.22 como suplementos, permitindo que você estenda várias mídias se não couberem em apenas uma. A desvantagem era que, se uma das várias mídias tivesse problemas, a coisa toda seria inútil. tar e dd originam-se do UNIX SYstem III e permaneceu como um utilitário de lançamento padrão com sistemas operacionais semelhantes ao UNIX, provavelmente por motivos de compatibilidade com versões anteriores.
fonte
Tar não é apenas um formato de arquivo, mas é um formato de fita. As fitas armazenam dados bit a bit. Cada implementação de armazenamento foi personalizada. Tar era o método pelo qual você podia retirar dados de um disco e armazená-los em uma fita de forma que outras pessoas pudessem recuperá-los sem seu programa personalizado.
Mais tarde, os programas de compactação vieram, e * nix ainda tinha apenas um método para criar um único arquivo que continha vários arquivos.
Eu acredito que é apenas a inércia que continuou com a tendência tar.gz. O Pkzip começou com compactação e arquivamento de uma só vez, mas os sistemas DOS normalmente não tinham unidades de fita conectadas!
Da wikipedia para Tar_ (file_format)
fonte
Como um desenvolvedor do Windows, é compreensível como os tarballs parecem estranhos. A palavra
tar
significa Tape Archive. Pense em gravadores de fita bobina a bobina.No mundo do Windows, os programas geralmente são instalados com um
setup.exe
ouinstall.exe
que funcionam com todos os tipos de magia no registro, criando diretórios e instalando.dll
arquivos (Dynamic Link Library).No Linux, em particular no Ubuntu, por experiência própria, os gerenciadores de pacotes cuidam de pegar um aplicativo e instalá-lo na maior parte do tempo . No Ubuntu, o desenvolvedor cria um pacote terminando em
.deb
(Debian, no qual o Ubuntu é baseado). A sintaxe básica para instalar um.deb
é:Embora seja relativamente simples para um usuário, é muito trabalhoso para os desenvolvedores criar um
.deb
pacote e associar o PPA.Um método mais fácil para desenvolvedores é criar um tarball. Então, o fardo da instalação é compartilhado pelo usuário final. Eles devem:
.tar.gz
).apt
banco de dados (pense na lista de programas instalados do Windows) que possa ser copiado.Como outra resposta já diz para outra pergunta que você fez, você PODE criar um tarball e compactar dados ao mesmo tempo. Um processo de duas passagens NÃO é necessário.
fonte