Como compactar e descompactar arquivos usando tar no Linux

Conteúdo

Tar é mais do que apenas um utilitário de arquivo: tar vem com algumas ótimas funções integradas, que permitem compactar e descompactar arquivos, ao mesmo tempo que você os arquiva. Saiba tudo sobre isso neste post e muito mais!!

O que é alcatrão e como instalo?

Segundo ele alcatrão manual (que você pode acessar digitando man tar uma vez instalado), tar é um utilitário de arquivo. Ele suporta muitas funções, incluindo compactação e descompactação de arquivos em tempo real ao arquivar. Vamos começar instalando alcatrão:

Instalar alcatrão em sua distribuição Linux baseada em Debian / Apt (como Ubuntu e Mint), execute o seguinte comando em seu terminal:

sudo apt install tar

Instalar alcatrão em sua distribuição Linux baseada em RedHat / Yum (como RHEL, Centos e Fedora), execute o seguinte comando em seu terminal:

sudo yum install tar

A seguir, vamos criar alguns dados de amostra:

teste mkdir; cd test
touch a b c d e f 
echo 1 > uma; eco 5 > e; echo '22222222222222222222' > b

Configure os dados de amostra para compactar

Aqui, criamos um teste de diretório e criamos seis arquivos vazios nele usando o touch comando. Também adicionamos alguns números aos arquivos. uma, mim, e B, embora notavelmente arquivo B tem dados repetidos, isso vai comprimir bem.

Para obter mais informações sobre como funciona a compressão, você pode verificar nosso Como funciona a compactação de arquivos? publicar.

Crie um arquivo descompactado

Criação simples de arquivo tar descompactado

tar -hcf all_files.tar *
ls -l | grep -v total | awk '{imprimir $5"tbytes para: "$9}' | sort -n

Aqui, criamos um arquivo descompactado usando o tar -hcf all_files.tar * comando. Vamos dar uma olhada nas alternativas usadas neste comando.

Em primeiro lugar, tenho -h que embora não seja necessário nesta circunstância particular, Eu recomendo sempre incluir em seu tar comandos. Esta opção significa desreferencia, que irá remover a referência (ou vai continuar) links simbólicos, arquivando e despejando os arquivos para os quais eles apontam.

Em seguida temos o -c e -f opções. Observe que eles são escritos apenas em conjunto com o - sobre -h, Em outras palavras, em vez de especificar outro -, nós apenas os marcamos nas outras opções de abreviação. Rápido e fácil.

a -c suporte de opção para criar um novo arquivo. tenha em conta que, por padrão, diretórios são arquivados recursivamente, a menos que a opção –no-recursion também seja usada. a -f A opção nos permite especificar o nome do arquivo. Por isso, tem que ser o último em nossa cadeia de alternativas (já que você precisa de uma opção) para que possamos adicionar o nome do arquivo diretamente atrás dele. Usando tar -fch test.tar * não funciona:

As opções abreviadas que requerem uma opção não podem ser colocadas na frente

Depois que o tar é gerado, Usamos um ls saída que nos mostra claramente o número de bytes por arquivo. Como você pode ver, o arquivo tar é muito maior do que todos os nossos arquivos combinados. Os arquivos estão apenas sendo arquivados e alguma sobrecarga para alcatrão está sendo adicionado.

Como uma nota lateral interessante, também podemos ver com quais tipos de arquivos estamos trabalhando simplesmente usando o file comando no prompt de comando:

file c
file b
file all_files.tar

Usando o arquivo para visualizar o tipo de arquivo

Crie um arquivo descompactado

Um algoritmo de compressão muito comum é o GZIP. Vamos adicionar a opção para o mesmo (-z) à nossa cadeia de alternativas de linha de comando abreviada e veja como isso afeta o tamanho do arquivo:

tar -zhcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{imprimir $5"tbytes para: "$9}' | sort -n

Olhando para o tamanho de um arquivo compactado versus descompactado

Desta vez, especificamos uma expressão regular para usar apenas os arquivos nomeados uma para F, impedindo o tar comando para incluir o all_files.tar arquivo dentro do novo all_files.tar.gz procedimentos!

Veja como Regex é realmente usado? e modifique o texto usando regex usando sed se quiser saber mais sobre regex.

Também incluímos o -z opção que usará a compressão GZIP para comprimir o resultado .tar arquivo depois que o despejo de dados for concluído. É ótimo ver que acabamos com um arquivo de 186 bytes, o que nos diz isso, nesta circunstância, a tar O cabeçalho / sobrecarga de aproximadamente 10 Kb pode ser comprimido muito bem.

O tamanho total do arquivo é 7,44 vezes maior que o tamanho total do arquivo, mas pouco importa, uma vez que este exemplo fictício não é representativo da compactação de arquivos grandes onde você quase sempre vê ganhos em vez de perdas, a menos que os dados sejam pré-compactados ou em um formato que não possa ser facilmente condensado usando uma variedade de algoritmos. Ainda assim, um algoritmo (como GZIP) pode ser melhor que outro (como um exemplo BZIP2), e vice-versa, para diferentes conjuntos de dados.

Obtenha mais bytes por meio da compressão de alto nível

Podemos tornar o arquivo ainda menor? E. Podemos determinar a opção de compressão máxima de GZIP usando o -I opção a tar o que nos permite especificar um programa de compressão para usar (com agradecimentos a estouro de pilha idéias do usuário man42):

tar -I 'gzip -9' -hcf all_files.tar.gz [a-f]
ls -l | grep -v total | awk '{imprimir $5"tbytes para: "$9}' | sort -n

Usando a opção -I para tar para especificar um cronograma de compressão

Aqui nós especificamos -I 'gzip -9' como o programa de compressão a ser usado, e deixamos cair o -z opção (uma vez que agora estamos especificando um programa personalizado específico para usar em vez de usar a configuração GZIP embutida do tar). O resultado é que temos 12 bytes a menos como resultado de uma melhor tentativa de compressão (mas geralmente mais lento) (no nível -9) por GZIP.

Em termos gerais, quanto mais rápida a compressão (menor nível de tentativas de compressão, Em outras palavras, -1), tamanho de arquivo maior. E, mais lenta a compressão (nível mais alto de tentativas de compressão, Em outras palavras, -9), menor é o arquivo. Você pode determinar suas próprias preferências variando o nível de compressão do -1 (Rápido) uma -9 (devagar)

Outros programas de compressão

Existem dois outros algoritmos de compressão comuns que podem ser explorados e testados. (diferentes opções de algoritmo também fornecem resultados de tamanhos diferentes e podem ter opções de compressão adicionais), e isso é bzip2, que pode ser usado especificando o -j opção a tar, e XZ que pode ser usado especificando o -J opção.

alternativamente, você pode usar o -I comando para determinar as alternativas de compressão máxima para bzip2 (-9):

exemplo de programa de compressão bzip -9

E -9e por xz:

exemplo de programa de compressão xz -9e

Como você pode ver, os resultados são menos bons nesta circunstância do que se o algoritmo GZIP um tanto padrão for usado. Ainda assim, a bzip2 e xz algoritmos podem mostrar melhorias com outros conjuntos de dados.

Descompacte um arquivo

Descompactar um arquivo é muito fácil, qualquer que seja o método original para compactá-lo, e enquanto o referido algoritmo de compressão estiver presente em seu computador. Como um exemplo, se o algoritmo de compressão original era bzip2 (indicado por um .bz2 extensão para o nome do arquivo tar), então você vai querer ter feito sudo apt install bzip2 (o sudo yum install bzip2) no seu computador de destino que é descompactar o arquivo.

rm a b c d e f
tar -xf all_files.tar.gz
ls

Descompacte um arquivo tar compactado (ou descompactado)

Simplesmente especificamos -x para expandir ou descompacte nosso all_files.tar.gz e indique qual o nome do arquivo está usando novamente o -f opção abreviada como antes.

A compactação de arquivos pode ajudar você a economizar muito espaço em seus dispositivos de armazenamento e saber como usá-los. tar em combinação com alternativas de compressão disponíveis irá ajudá-lo a fazê-lo. Uma vez que o arquivo precisa ser extraído novamente, é fácil fazer isso, desde que o software de descompactação correto esteja disponível no computador usado para descompactar ou extrair os dados de seu arquivo. Desfrutar!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.