O tar realmente compacta os arquivos ou apenas os agrupa?

Normalmente presumo que tar seja um utilitário de compactação, mas não tenho certeza se ele realmente compacta arquivos, ou é como um arquivo ISO, um arquivo para armazenar arquivos?

Comentários

Resposta

Tar é uma ferramenta de arquivamento (Tape ARchive), apenas coleta arquivos e seus metadados juntos e produz um arquivo. Se você quiser compactar esse arquivo mais tarde, pode usar gzip / bzip2 / xz. Por conveniência, o tar fornece argumentos para compactar o arquivo automaticamente para você. Verifique a página do manual do tar para obter mais detalhes.

Comentários

  • Um leve esclarecimento sobre a resposta. É GNU tar que fornece esses argumentos de compressão extras. Por exemplo, Solaris tar não fornece argumentos para compressão.
  • oooh, é por isso que ' é por isso que continuo vendo thing.tar.7z
  • BSD tar fornece um argumento para compactação também, embora aceite apenas z e determine o método de compactação baseado na extensão, enquanto GNU tar possui zZjJ argumentos para os diferentes métodos de compressão.
  • Basta ler a página de manual do BSD tar e descobri que me enganei, o BSD tar usa para compressão como GNU tar. No entanto, ele detecta automaticamente a compactação ao descompactar, enquanto o GNU tar espera zZjJ e também.
  • @wingedsubmariner: no; versões modernas do GNU tar descompactam automaticamente sem exigir as opções -zZjJ.

Resposta

tar produz arquivos; compressão é uma funcionalidade separada. No entanto tar sozinho pode reduzir o uso de espaço quando usado em um grande número de arquivos pequenos que são menores do que o tamanho do cluster do sistema de arquivos. Se um sistema de arquivos usar 1kb clusters, mesmo um arquivo que contém um único byte consumirá 1kb (mais um inode). Um arquivo tar não tem essa sobrecarga.

A propósito, um ISO arquivo não é realmente “um arquivo para armazenar arquivos” – é na verdade uma imagem de um sistema de arquivos inteiro (um originalmente projetado para ser usado em CDs) e, portanto, sua estrutura é consideravelmente mais complexa.

Comentários

  • Na verdade, um arquivo vazio não consumirá 1kb. Um arquivo de 1-1023 bytes irá.
  • @psusi então para um arquivo de bytes 1-1023 consumirá 1.024 sempre, o que resulta em um desperdício de 1023-1 bytes.

Resposta

O comando UNIX tar original não compactava arquivos. Como foi mencionado em um comentário, Solaris tar não compacta. Nem HP-UX, nem AIX, FWIW. Por convenção, arquivos descompactados terminam em .tar.

Com GNU / Linux você obtém GNU tar. (Você pode instalar GNU tar em outros sistemas UNIX.) Por padrão, ele não compacta; no entanto, faz compactar o arquivo resultante com gzip (também por GNU) se você fornecer -z. O sufixo convencional para arquivos gzipados é .gz, então você “verá frequentemente tarballs (gíria para um tar arquivo, geralmente implicando que “foi compactado) que termina em .tar.gz. Esse final implica que tar foi executado, seguido por gzip, por exemplo, tar cf - .|gzip -9v > archive.tar.gz . Você também encontrará arquivos que terminam em .tgz, por exemplo tar czf archive.tgz ..

Editar: www.linfo.org/tar.html me lembrou que o GNU tar suporta muito mais funcionalidade do que simplesmente compactar com gzip, e me lembrou que os sufixos são mais do que simples convenções. Eles têm semântica embutida. Ele também oferece suporte a bzip2 (-j para .bz2) e compactação antiga (-Z para .Z). Então eu olhei para a página do manual e fui lembrado de que -a mapeia automaticamente o método de compactação desejado com base no sufixo.

Outro nit. Como diz a página de manual do Linux tar, GNU produz páginas de informações, não páginas de manual, portanto, para aprender tudo sobre GNU tar, execute info tar.

Comentários

  • O GNU tar ainda não ' lida com compressões por si só, ele apenas canaliza de / para gzip, bzip2, compress e outros.
  • Eu dei uma olhada a fonte . GNU tar lida com compressão! A implementação aproveita a reutilização de código e os princípios arquitetônicos do espaço do usuário UNIX. " Apenas tubos " está subestimando a forma como a compressão é totalmente integrada à ferramenta.O fato de que isso acontece com programas auxiliares de fork é um detalhe técnico. Se você deseja defender " apenas tubos, " cite os nomes dos arquivos e os números das linhas e deixe ' s ver de que lado a comunidade fica.
  • Demora alguns dias até que eu possa verificar essa fonte.

Resposta

O utilitário tar não compacta até que você forneça um argumento para fazê-lo [nome do arquivo tar -z].

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *