Qual é a diferença entre .tar.gz e .gz, ou .tar.7z e .7z?

139

Recentemente, fiz backup de muitos dos meus dados e notei que posso salvar arquivos como .gz ou .tar.gz , ou .7z e .tar.7z , etcetera. Quais são as diferenças entre o normal e o .tar.* variante? Qual deles é recomendado ao fazer backups?

    
por Exeleration-G 15.04.2012 / 03:09

6 respostas

167

Se você vem de um plano de fundo do Windows, talvez esteja familiarizado com os formatos zip e rar. Estes são arquivos de múltiplos arquivos compactados juntos.

Em sistemas Unix e Unix (como o Ubuntu), o arquivamento e a compactação são separados.

tar coloca vários arquivos em um único arquivo (tar).

gzip compacta um arquivo (somente).

Para obter um arquivo compactado, combine os dois, use primeiro tar ou pax para obter todos os arquivos em um único arquivo (archive.tar) e, em seguida, gzip it (archive.tar.gz) . Se você tem apenas um arquivo que precisa compactar (notes.txt), não há necessidade de tar, então você só faz gzip notes.txt , o que resultará em notes.txt.gz . Existem outros tipos de compactação, como compress , bzip2 e xz , que funcionam da mesma maneira que o gzip (além de usar tipos diferentes de compressão, é claro)

    
por geirha 15.04.2012 / 03:41
43

Depende do que você está procurando ... Compressão ou arquivamento?

Quando falo de arquivamento, quero dizer, preservar permissões, estrutura de diretório, etc ...

A compressão pode ignorar a maior parte e apenas colocar seus arquivos em pacotes menores.

Para preservar as permissões de arquivo, use tar:

tar cpvf backup.tar folder

O sinalizador p salvará as permissões do arquivo. Use o sinalizador z para compactação gzip ou a sinalização j para compactação bzip.

tar czpvf backup.tar.gz folder #backup.tgz is acceptable as well
tar cjpvf backup.tar.bz2 folder #backup.tbz2 works too

Se você quiser ter um arquivo tar, você pode "atualizar" o pacote usando o sinalizador P:

tar cpPvf backup.tar folder

Em seguida, para atualizar, substitua 'c' por 'u' e, ao descompactar, use 'k' para preservar arquivos já existentes.

tar upPvf backup.tar folder #updating a tar file
tar xpPkvf backup.tar #extracting a tar with permissions(p) and not extracting(k) files that exist on disk already

O sinalizador P salva arquivos com caminhos completos, portanto - / home / username vs home / username (observe a barra inicial).

A compactação 7z oferece maior compactação, mas não preserva a propriedade do arquivo, as permissões, etc. O Rzip é outro utilitário de compactação que oferece compactação comparável com o 7z também.

Eu acho que um arquivo backup.tar.7z é apenas um arquivo tar (com permissões) compactado por um arquivo 7z, embora eu não ficaria surpreso se pouca compactação ocorreu porque 7z pode não ser capaz de despejar os metadados do arquivo. É a capacidade do 7z de excluir os metadados do arquivo que ele pode oferecer grande compactação (entre outras coisas, é claro).

A compactação depende inteiramente do tipo de dados. Alguns arquivos não compactam bem, porque eles já podem ser compactados com outros meios (ou seja, .mp3, .jpg, .tiff / com lzma, .rpm, etc).

    
por SaultDon 15.04.2012 / 03:45
10

O gzip ou o bzip2 não sabe sobre file system - nome do arquivo, diretório ou estrutura em árvore. Apenas comprime o fluxo de entrada e, em seguida, o resultado da saída. Mesmo gzip ou bzip2 não podem arquivar diretórios por conta própria, é por isso que geralmente é combinado com o tar.

tar (archiver) - apenas arquive a estrutura dos arquivos. gzip, bzip2 (compressor) - basta comprimir a entrada.

Acho que essa estratégia veio de 'fazer uma coisa bem' da filosofia Unix. O alcatrão funciona bem? Deixe como está. Precisa de mais taxa de compressão que o gzip? Aqui está o bzip2 ou o 7zip.

    
por Mait 15.04.2012 / 06:55
8

seus diferentes estilos de compactação, o tar por si só é simplesmente arquivado (pouca ou nenhuma compactação). tar.gz é um arquivo tar, mas o conteúdo é compactado por gzip (compressão moderada), portanto o .gz e o tar.7z são compactados usando 7zip (geralmente super alta compressão)

ao fazer o backup, eu recomendaria o tar.7z, pois ele tem a maior taxa de compactação, economizando espaço, mas usa um programa extra (7zip). .tar.gz serão arquivos maiores e farão o mesmo trabalho, você também pode usar o bzip (.tar.bz / bz2), embora eu não tenha certeza se isso seria melhor para você, já que eu uso gzip ou 7zip

    
por MuffinStateWide 15.04.2012 / 03:36
3

tipicamente, arquivos * .tar são apenas arquivos tar criados pelo programa tar, programas * .gz são criados por gzip, * .tar.gz (em algum momento também * .tgz) são arquivos tar gziped, e * .7z são criados por 7zip.

No entanto, no Linux / Unix, pode-se nomear um arquivo praticamente do jeito que ele quiser, então é completamente a critério do criador dos arquivos.

    
por G. He 15.04.2012 / 03:21
3

O Tar (Tape Archiver) tem sido tradicionalmente usado como um contêiner no Unix / Linux para empacotar arquivos para movimentação. Ele empacota a estrutura do arquivo e mantém os atributos do arquivo, mas não compacta os arquivos.

Os programas de compactação compactam o arquivo para torná-lo menor, mas podem não manipular vários arquivos e / ou podem não manipular os atributos de arquivo necessários para o Linux. Como o tar já existe e é bem suportado, não há razão para que os programas de arquivamento dupliquem essa funcionalidade, que é específica da plataforma (diferente de Windows e Linux). Além disso, diferentes programas de compactação podem ter um desempenho diferente em diferentes tipos de arquivos, portanto, é recomendável ter mais de uma opção.

    
por Marty Fried 15.04.2012 / 03:34