Como compactar ou descompactar arquivos do terminal Linux

Conteúdo

Indicador de shell de Linux

Os arquivos ZIP são um arquivo universal comumente usado em sistemas Windows, macOS e incluso Linux. Você pode criar um arquivo zip ou descompactar arquivos de um com alguns comandos de terminal Linux comuns.

O formato de arquivo compactado em ZIP

Graças ao domínio do formato ZIP no ambiente Windows, Arquivos ZIP são provavelmente a forma mais comum de arquivo compactado no mundo.

Embora os arquivos .tar.gz e tar.bz2 sejam comuns no Linux, Os usuários do Windows provavelmente enviarão a você um arquivo ZIP. E, se você deseja arquivar alguns arquivos e enviá-los para um usuário do Windows, O formato ZIP será a solução mais fácil e compatível para todos.

RELACIONADO: Como extrair arquivos de um arquivo .tar.gz ou .tar.bz2 no Linux

fecho eclair, descompactar e outros utilitários

Você já deve saber que os sistemas operacionais Linux e semelhantes ao Unix, como macOS, eles têm ferramentas que permitem criar arquivos ZIP e extrair arquivos deles, chamado zip e unzip. Mas existe toda uma família de utilitários relacionados, O que zipcloak, zipdetails, zipsplit , e zipinfo.

Verificamos algumas distribuições de Linux para ver se incluíam esses utilitários na instalação padrão. Todos os utilitários estavam presentes no Ubuntu 19.04, 18.10 e 18.04. Eles também estiveram presentes em Manjaro 18.04. Fedora 29 incluído zip e unzip, mas nenhum dos outros utilitários e esse também foi o caso do CentOS.

Para instalar os itens que faltam no Fedora 29, use o seguinte comando:

sudo dnf install perl-IO-Compress

comando de instalação zip para o fedora

Para instalar os itens que faltam no CentOS 7, use o seguinte comando:

sudo yum install perl-IO-Compress

Comando de instalação Zip em Centos

Se algum dos utilitários zip estiver faltando em uma distribuição Linux não mencionada acima, use a ferramenta de gerenciamento de pacotes dessa distribuição Linux para instalar o pacote necessário.

Como criar um arquivo ZIP com o comando zip

Para criar um arquivo ZIP, deve indicar zip o nome do arquivo e quais arquivos incluir nele. Você não precisa adicionar a extensão “.fecho eclair” para o nome do arquivo, mas não dói se você fizer.

Para criar um arquivo chamado source_code.zip que contém todos os arquivos de origem C e arquivos de cabeçalho no diretório atual, Eu usaria este comando:

zip source_code * .c * .h

Cada arquivo é listado à medida que é adicionado. O nome do arquivo e a quantidade de compressão que foi alcançada nesse arquivo são exibidos.

Se você olhar para o novo arquivo ZIP, você pode ver que a extensão do arquivo “.fecho eclair” foi adicionado automaticamente por zip.

ls -l source_code.zip

Se você não quiser ver a saída de zip à medida que o arquivo ZIP é criado, Use o -q Opção (silencioso).

zip -q source_code * .c * .h

Incluir diretórios em arquivos ZIP

Para incluir subdiretórios no arquivo ZIP, Use o -r (recursivo) e inclua o nome do subdiretório na linha de comando. Para criar um arquivo ZIP como antes e também incluir o subdiretório do arquivo, use este comando.

zip -r -q arquivo de código_de_origem / * .c * .h

Ter consideração pela pessoa que irá extrair os arquivos do arquivo ZIP que você está criando, muitas vezes é uma boa educação criar arquivos ZIP com os arquivos dentro de um diretório. Quando a pessoa que recebe o arquivo ZIP o extrai, todos os arquivos são colocados ordenadamente em um diretório em seu computador.

No seguinte comando, vamos arquivar o work diretório e todos os subdiretórios. Observe que este comando é emitido a partir do Diretório Parental do work Arquivo.

zip -r -q source_code work /

Configuração do nível de compressão

Você pode definir a quantidade de compressão aplicada aos arquivos à medida que são adicionados ao arquivo ZIP. O alcance é 0 uma 9, ser 0 sem qualquer compressão. Quanto maior a compressão, mais tempo levará para criar o arquivo ZIP. Para arquivos ZIP de tamanho modesto, a diferença de tempo não é uma penalidade significativa. Mas então, para arquivos ZIP de tamanho modesto, a compressão padrão (nível 6) provavelmente é bom o suficiente de qualquer maneira.

Para obter zip para usar um nível específico de compressão, passe o número como uma opção na linha de comando, com um “-“, Então:

fecho eclair -0 -r -q source_code work /

O nível de compressão padrão é 6. Você não precisa fornecer o -6 opção, mas não fará nenhum mal se você fizer.

zip -r -q source_code work /

O nível máximo de compressão é o nível 9.

fecho eclair -9 -r -q source_code work /

Com a seleção de arquivos e diretórios que são arquivados aqui, a diferença entre nenhuma compressão (nível 0) e a compressão padrão (nível 6) é 400K. A diferença entre a compressão padrão e o nível de compressão mais alto (nível 9) é apenas 4K.

Pode não parecer muito, mas para arquivos contendo centenas ou mesmo milhares de arquivos, a pequena quantidade de compressão adicional por arquivo resultaria em uma economia de espaço útil.

Adicionar senhas a arquivos ZIP

Adicionar senhas a arquivos ZIP é fácil. Use o -e (criptografar) e ser-lhe-á pedido que introduza a sua palavra-passe e volte a introduzi-la para verificação.

zip -e -r -q source_code work /

Como descompactar um arquivo ZIP com o comando unzip

Para extrair os arquivos de um arquivo ZIP, use o comando unzip e forneça o nome do arquivo ZIP. Por favor, note que você Faz você deve fornecer a extensão “.fecho eclair”.

descompacte source_code.zip

À medida que os arquivos são extraídos, estão listados na janela do terminal.

Os arquivos ZIP não contêm detalhes sobre a propriedade do arquivo. Todos os arquivos em check-out têm o proprietário definido para o usuário que os retirou.

O mesmo que zip, unzip tem um -q (silencioso), então você não precisa ver a lista de arquivos à medida que são extraídos.

descompacte -q source_code.zip

Extraia arquivos para um diretório de destino

Para extrair os arquivos para um diretório específico, usar el -d (diretório) e forneça o caminho para o diretório onde deseja que o arquivo seja extraído.

descompacte -q source_code.zip -d ./development

Extraia arquivos ZIP protegidos por senha

Se um arquivo ZIP foi criado com uma senha, unzip vai pedir a senha. Se você não fornecer a senha correta, unzip não irá extrair os arquivos.

descompacte -q source_code.zip

Se você não se importa que outras pessoas vejam sua senha, nem é armazenado no seu histórico de comando, você pode fornecer a senha na linha de comando com o -P (senha) opção. (Você deve usar um “P” letra maiúscula)

descompacte -P Fifty.treacle.cutlass -q source_code.zip

Excluir arquivos

Se você não deseja extrair um determinado arquivo ou grupo de arquivos, Use o -x (excluir) opção. Neste exemplo, queremos extrair todos os arquivos, exceto aqueles que terminam em uma extensão “.h”.

descompacte -q source_code.zip -x * .h

Substituição de arquivo

Suponha que você tenha retirado um arquivo, mas você excluiu alguns dos arquivos extraídos por engano.

Uma solução rápida para isso seria extrair os arquivos mais uma vez. Mas se você tentar extrair o arquivo ZIP no mesmo diretório de antes, unzip irá pedir a você uma decisão sobre sobrescrever os arquivos. Você vai esperar uma das seguintes respostas.

Além de r (renomear) responder, essas respostas diferenciam maiúsculas de minúsculas.

  • e: sim, sobrescrever este arquivo
  • Norte: Não, não sobrescreva este arquivo
  • UMA: Tudo, sobrescrever todos os arquivos
  • NORTE: Nenhum, não sobrescreve nenhum dos arquivos
  • r: Mude o nome, extraia este arquivo, mas dê a ele um novo nome. Será solicitado um novo nome.

Forçar unzip para substituir qualquer arquivo existente, use o -o (sobrescrever) opção.

descompacte -o -q source_code.zip

A maneira mais eficiente de substituir os arquivos ausentes seria ter unzip Extraia apenas os arquivos do arquivo que são não no diretório de destino. Para fazer isso, usar el -n (nunca sobrescrever) opção.

descompacte -n source_code.zip

Olhe dentro de um arquivo ZIP

Geralmente, é útil e instrutivo visualizar uma lista dos arquivos em um arquivo ZIP antes de extraí-lo.. Você pode fazer isso com o -l (lista de arquivos) opção. É canalizado através de less de modo que a saída seja gerenciável.

descompacte -l source_code.zip | menos

A saída mostra os diretórios e arquivos dentro do arquivo ZIP, a duração e a data e hora em que foram adicionados ao arquivo. pressione “q” para sair de less.

Existem outras maneiras de olhar dentro de um arquivo ZIP que fornecem diferentes tipos de informação, como vamos ver.

Adicione uma senha com o comando zipcloak

Se você criou um arquivo ZIP, mas se esqueceu de adicionar uma senha, que pode fazer? Você pode adicionar rapidamente uma senha ao arquivo ZIP usando o zipcloak comando. Passe o nome do arquivo ZIP na linha de comando. Será solicitada uma senha. Você deve verificar a senha digitando-a uma segunda vez.

zipcloak source_code.zip

Veja os detalhes do arquivo com o comando zipdetails

a zipdetails O comando irá mostrar-lhe um lote informações sobre o arquivo ZIP. A única maneira sensata de lidar com a quantidade de saída que esse comando pode dar é canalizá-lo less .

zipdetails source_code.zip | menos

Observe que as informações incluirão nomes de arquivos, mesmo se o arquivo ZIP for protegido por senha. Esse tipo de informação é armazenado no arquivo ZIP como metadados e não faz parte dos dados criptografados..

Pesquise no arquivo com o comando zipgrep

a zipgrep O comando permite que você pesquise arquivos internos em um arquivo ZIP. No exemplo a seguir, queremos saber quais arquivos dentro do arquivo ZIP têm o texto “keyval.h” neles.

zipgrep keyval.h source_code.zip

Podemos ver que os arquivos slang.c e getval.c contém a string "keyval.h". Também podemos ver que existem duas cópias de cada um desses arquivos em diferentes diretórios do arquivo ZIP.

Veja as informações com o comando zipinfo

a zipinfo O comando oferece outra maneira de olhar dentro de um arquivo ZIP. Como antes, nós canalizamos a saída por meio de less.

zipinfo source_code.zip | menos

De esquerda a direita, a saída mostra:

  • Permissões de arquivo
  • A versão da ferramenta usada para criar o arquivo ZIP
  • O tamanho do arquivo original
  • Um descritor de arquivo (Descrito abaixo)
  • O método de compressão (deflação, neste caso)
  • O carimbo de data / hora e dados
  • O nome do arquivo e qualquer diretório

O descritor do arquivo consiste em dois caracteres. O primeiro personagem será um “t” ou um “b” para indicar um arquivo de texto ou binário. Se for uma letra maiúscula, o arquivo está criptografado. O segundo personagem pode ser um de quatro caracteres. Este caractere representa o tipo de metadados incluído para este arquivo: Nenhum, um cabeçalho local estendido, uma “campo adicional” o ambos.

  • -: Se não houver nenhum, o personagem será um traço.
  • eu: se houver um cabeçalho local estendido, mas nenhum campo extra
  • X: se não houver cabeçalho local estendido, mas houver um campo extra
  • X: se houver um cabeçalho local estendido e um campo extra

Divida o arquivo com o comando zipsplit

Se você precisar enviar o arquivo ZIP para outra pessoa, mas houver restrições de tamanho ou problemas com a transmissão do arquivo, você pode usar o zipsplit comando para dividir o arquivo ZIP original em um conjunto de arquivos ZIP menores.

a -n Opção (Tamanho) permite que você defina um tamanho máximo para cada um dos novos arquivos ZIP. Neste exemplo, estamos dividindo o source_code.zip procedimentos. Não queremos que nenhum dos novos arquivos ZIP ultrapasse o 100 KB (102400 bytes).

zipsplit -n 102400 source_code.zip

O tamanho que você escolher não pode ser menor do que o tamanho de qualquer um dos arquivos no arquivo ZIP.

Com esses comandos, você pode criar seus próprios arquivos ZIP, descompacte os arquivos ZIP que você recebe e execute outras operações neles sem sair do terminal Linux.

setTimeout(função(){
!função(f,b,e,v,n,t,s)
{E se(f.fbq)Retorna;n = f.fbq = função(){n.callMethod?
n.callMethod.apply(n,argumentos):n.queue.push(argumentos)};
E se(!f._fbq)f._fbq = n;n.push = n;n.loaded =!0;n.version = ’2.0′;
n.queue =[];t = b.createElement(e);t.async =!0;
t.src = v;s = b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, documento,'roteiro',
‘Https://connect.facebook.net/en_US/fbevents.js ’);
fbq('iniciar', ‘335401813750447’);
fbq('acompanhar', ‘PageView’);
},3000);

Assine a nossa newsletter

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