Pesquisa de site

Como faço para compactar/descompactar na linha de comando do Unix


Introdução

Compactar e descompactar um arquivo é uma prática muito comum no Linux. Precisamos compactar muitos arquivos em um único arquivo pelos seguintes motivos.

  • Economiza espaço em disco no sistema.

  • Podemos manter vários arquivos dentro de um arquivo. Isso também ajuda a copiar esse arquivo compactado para outro sistema.

Quando temos um arquivo compactado, também devemos saber como descompactá-lo para obter todos os arquivos necessários. Portanto, os comandos de compactação e descompactação são muito importantes no Linux. Neste artigo, aprenderemos vários comandos para compactar e descompactar.

Usando o comando básico zip e descompacte

Em primeiro lugar, os comandos “zip” e “unzip” devem estar presentes no Linux. Se esses comandos não estiverem presentes, instale usando o comando abaixo.

$ sudo apt install zip
$ sudo apt install unzip

Agora, vamos criar 4 arquivos de texto.

$ touch 1.txt 2.txt 3.txt 4.txt
$ ls
1.txt  2.txt  3.txt  4.txt

Compacte todos os 4 arquivos em um arquivo “todos”

$ zip all *.txt
   adding: 1.txt (stored 0%)
   adding: 2.txt (stored 0%)
   adding: 3.txt (stored 0%)
   adding: 4.txt (stored 0%)

Como podemos ver, é criado o arquivo all.zip que contém 1.txt , 2.txt , 3.txt , 4.txt .

$ ls
1.txt  2.txt  3.txt  4.txt  all.zip

Vamos agora excluir todos os 4 arquivos e descompactar all.zip. Podemos ver todos os 4 arquivos de texto.

$ rm *.txt

$ unzip all.zip
Archive:  all.zip
   extracting: 1.txt
   extracting: 2.txt
   extracting: 3.txt
   extracting: 4.txt

$ ls
1.txt  2.txt  3.txt  4.txt  all.zip

Descompacte arquivos em um diretório de destino

No exemplo anterior, vimos que todos os arquivos de texto estão sendo extraídos no caminho atual. É sempre recomendável descompactar os arquivos em um diretório diferente para que os arquivos extraídos não se misturem com outros arquivos no caminho atual.

Podemos usar o comando abaixo para extrair “all.zip” para o diretório “new-all”

$ unzip -q all.zip -d new-all
$ ls new-all/
1.txt  2.txt  3.txt  4.txt

Excluir arquivos específicos durante a compactação

Em alguns cenários, se precisarmos excluir alguns arquivos para serem compactados, podemos usar o comando abaixo.

$ zip all 1.txt 2.txt 3.txt -x 4.txt
updating: 1.txt (stored 0%)
updating: 2.txt (stored 0%)
updating: 3.txt (stored 0%)

Na saída, podemos ver que 4.txt não está incluído.zip.

Vamos descompactar “all.zip”.

$ unzip -q all.zip -d 4.txt-not-there

$ ls 4.txt-not-there/
1.txt  2.txt  3.txt

Na saída acima, podemos ver que “4.txt” não está lá.

Encontre todos os arquivos dentro do arquivo compactado sem descompactá-lo

Em alguns cenários, se precisarmos ver quais arquivos estão dentro do arquivo compactado, podemos usar o comando abaixo.

$ unzip -l all.zip

Archive:  all.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2016-02-11 22:25   1.txt
        0  2016-02-11 22:25   2.txt
        0  2016-02-11 22:25   3.txt
---------                     -------
        0                     3 files

Seu arquivo compactado protegido por senha

Em alguns cenários, se precisarmos proteger o arquivo compactado usando uma senha, podemos usar o comando abaixo.

$ zip -e -r password-protected new-all/

Enter password:
Verify password:
   adding: new-all/ (stored 0%)
   adding: new-all/4.txt (stored 0%)
   adding: new-all/2.txt (stored 0%)
   adding: new-all/3.txt (stored 0%)
   adding: new-all/1.txt (stored 0%)

Como podemos ver, a senha é solicitada ao usuário e “password-protected.zip” é criado.

$ ls
1.txt  2.txt  3.txt  4.txt  4.txt-not-there  all.zip  new-all  password-protected.zip

Agora vamos descompactar “password-protected.zip” com a senha correta.

$ unzip password-protected.zip

Archive:  password-protected.zip
[password-protected.zip] new-all/4.txt password:
replace new-all/4.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/4.txt
replace new-all/2.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/2.txt
replace new-all/3.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/3.txt
replace new-all/1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
   extracting: new-all/1.txt

Agora tente o mesmo comando “descompactar” com a senha errada.

$ unzip password-protected.zip
Archive:  password-protected.zip
[password-protected.zip] new-all/4.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/4.txt           incorrect password
[password-protected.zip] new-all/2.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/2.txt           incorrect password
[password-protected.zip] new-all/3.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/3.txt           incorrect password
[password-protected.zip] new-all/1.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: new-all/1.txt           incorrect password

Podemos ver que não teve sucesso.

Conclusão

Neste artigo, aprendemos como usar os comandos “zip” e “unzip”. Também usando vários argumentos para executar um arquivo compactado protegido por senha, descompacte o arquivo compactado em um diretório de destino e exclua alguns arquivos durante a compactação.

Artigos relacionados: