Como compactar arquivos no Linux

Escrito por Marcelo Augusto em 27 de março de 2022

Compartilhar:

Como compactar arquivos no Linux

Neste tutorial, veremos o comando zip, um utilitário útil que nos permite especificar listas de arquivos, definir um nível de compactação de dados e criar arquivos compactados.

Enquanto você se acostuma com esses comandos, é bom trabalhar com arquivos e diretórios de teste de exemplo e você deve tomar cuidado extra para garantir que está seguindo cuidadosamente as instruções.

Todos os comandos neste tutorial funcionarão na maioria das máquinas Linux. Foi usada uma instalação do Ubuntu 20.04, mas você pode executar este tutorial em um Raspberry Pi. Todo o tutorial é realizado através do Terminal. Você pode abrir uma janela de terminal na maioria das máquinas Linux pressionando ctrl, alt e t.

Criando um arquivo Zip no Linux

Para começar, vamos criar alguns arquivos de teste vazios e adicioná-los a um arquivo. Usaremos o comando touch para criar arquivos, o comando ls para verificar se os arquivos foram criados e depois o comando zip para criar um arquivo básico.

  1. Crie um diretório de teste onde possa testar o comando com segurança. Altere o diretório para que você esteja dentro do novo diretório.
mkdir test_directory
cd test_directory
  1. Crie alguns arquivos de teste para adicionar ao nosso arquivo. Observe os 3 sufixos de arquivo diferentes.
$ touch test1.txt test2.h test3.c
  1. Liste os arquivos para verificar se foram criados corretamente.
ls
  1. Usando o comando zip, crie um arquivo ZIP dos arquivos recém-criados. Para criar um arquivo ZIP, basta usar o comando zip seguido do nome que estamos dando ao arquivo e, em seguida, uma lista dos arquivos que desejamos incluir no arquivo. O comando a seguir criará um arquivo ZIP chamado test_archive.zip e o arquivo incluirá os três arquivos de teste. Observe que não precisamos adicionar o sufixo de arquivo .zip ao nome do arquivo ao usar o comando zip.
zip test_archive test1.txt test2.h test3.c
  1. Verifique se o arquivo ZIP foi criado.
ls

Criando um arquivo ZIP selecionando apenas tipos de arquivo específicos

É possível fornecer ao comando zip argumentos que apenas adicionam tipos de arquivo específicos ao arquivo. Esse é um recurso poderoso que é obtido com eficiência na linha de comando.

  1. Exclua todos os arquivos de teste anteriores e verifique se ainda possui os três arquivos de teste originais. Observe que, diferentemente da criação do arquivo ZIP, você deve incluir a extensão do arquivo .zip ao fazer referência a um arquivo existente.
rm test_archive.zip
ls
  1. Crie um novo arquivo ZIP que contenha apenas os arquivos de teste que terminam em .he .c . Depois de criar o arquivo, se você verificar seu conteúdo, ele conterá apenas os arquivos test2.he test3.ce não conterá test1.txt.
zip test_archive *.h *.c
  1. Para verificar o conteúdo, use o comando less.
less test_archive.zip

Criar um arquivo ZIP que contém um diretório

Muitas vezes precisamos fazer um arquivo ZIP contendo diretórios que contêm arquivos, podemos fazer isso adicionando o argumento recursivo -r ao comando zip.

  1. Exclua os arquivos dentro do test_directory, mas mantenha os outros arquivos. Para evitar confusão, seria uma boa prática excluir os arquivos deixando apenas os arquivos originais que criamos.
rm test_archive.zip
  1. Suba um diretório e verifique se você não está dentro do diretório para arquivar. Não podemos estar dentro do diretório que desejamos adicionar ao arquivo.
cd
pwd
  1. Crie um arquivo ZIP contendo o diretório test_directory e seu conteúdo. Observe que quando você cria o arquivo usando o argumento -r, você vê uma saída detalhada detalhando cada estágio do comando à medida que ele desce para o diretório e arquiva os arquivos e a pasta.
zip -r new_archive test_directory
  1. Faça outro arquivo ZIP similar usando o argumento -q (quiet) para desabilitar a saída detalhada. Você deve ver que desta vez nenhuma etapa é relatada ao terminal na criação deste arquivo. Em seguida, use ls para verificar se o novo arquivo foi criado.
zip -r -q new_archive2 test_directory
ls

Alterar o nível de compactação de dados para um arquivo ZIP

Por padrão, o comando zip usa um valor de compactação de 6 obtido de um intervalo de 0 a 9, sendo 0 descompactado e 9 o nível máximo de compactação permitido. Podemos simplesmente adicionar um argumento numérico para alterar o nível de compactação.

  1. Adicione dados aleatórios aos arquivos de teste. No momento, nossos arquivos de teste test1.txt, test2.he test3.c estão vazios. Eles têm zero bytes de dados, mas podemos adicionar “dados de lixo” aleatórios aos arquivos usando um comando de terminal rápido que despejará 64 MB em cada arquivo.

cd test_directory
head -c 64M test1.txt
head -c 64M test2.h
head -c 64M test3.c

  1. Retorne ao diretório pai e crie um novo arquivo ZIP com o nível de compactação padrão de 6.

cd
zip -r -q archive_default_compression test_directory

  1. Crie outro arquivo com o mesmo conteúdo, mas aumente o nível de compactação para 9. Verifique os detalhes do novo arquivo e do arquivo anterior usando ls -l, você verá que o tamanho do novo arquivo é menor que o arquivo anterior, pois a compressão de dados foi aumentada.

$ zip -r -q -9 archive_compressed test_directory
$ ls -l

Extraindo Arquivos Zip

Vamos criar um arquivo ZIP chamado test_archive.zip que contém um diretório test_directory que por sua vez contém 3 arquivos de teste vazios, test1.txt, test2.h, test3.c . Para extrair este arquivo, usaremos o comando unzip.

  1. Crie uma pasta de teste contendo os arquivos de teste. Depois de criar o diretório de teste e os arquivos, verifique se os arquivos foram criados usando ls antes de retornar ao diretório pai.
mkdir test_directory
cd test_directory
touch test1.txt test2.h test3.c
ls
cd
  1. Crie um arquivo ZIP chamado test_archive.zip que contém o test_directory. Verifique se o arquivo foi criado com sucesso usando ls. O comando zip tem dois argumentos, o nome do arquivo que desejamos criar e a fonte dos arquivos a serem colocados no arquivo.
zip -r test_archive test_directory
ls
  1. Exclua o diretório não arquivado. Se extrairmos o test_archive.zip no diretório pai que contém o test_directory, será perguntado se queremos substituir ou renomear o arquivo.
rm -r test_directory
  1. Descompacte o arquivo test_archive.zip . Usando unzip sem argumentos extras, vemos um relatório de saída detalhado de cada etapa da extração do arquivo.
unzip test_archive.zip

Extraindo um arquivo ZIP para um local especificado

Frequentemente, desejamos extrair um arquivo em um local especificado diferente. Podemos adicionar o argumento -d ao comando unzip para conseguir isso.

  1. Extraia o test_archive.zip para um diretório especificado. Podemos especificar uma localização relativa ou absoluta. Neste exemplo, extraímos o conteúdo para o diretório Music usando um caminho relativo. Também podemos passar um caminho absoluto que fornece o caminho completo para o local de destino. Após extrair o arquivo, vá para o diretório especificado e use ls para verificar se o arquivo foi extraído.
unzip test_archive.zip -d ./Music
  1. Altere o diretório e liste o conteúdo para verificar se os arquivos foram extraídos corretamente.
cd Music
ls

Com esses poucos usos básicos do comando zip, você agora tem muitas opções ao criar arquivos ZIP no terminal linux. Ser capaz de selecionar tipos de arquivos específicos e ser capaz de definir o nível de compactação no emulador de terminal dá acesso rápido a essas ferramentas poderosas que geralmente são difíceis de encontrar em um aplicativo GUI.

Categorias:

Marcelo Augusto