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.