Como faço zip / unzip na linha de comando unix?

464

Como posso criar e extrair arquivos zip da linha de comando?

    
por joachim 28.01.2011 / 16:52

9 respostas

571

Normalmente, um usa tar para criar um arquivo descompactado e gzip ou bzip2 para compactar esse arquivo. Os comandos gunzip e bunzip2 correspondentes podem ser usados para descompactar o dito arquivo, ou você pode simplesmente usar sinalizadores no comando tar para executar a descompactação.

Se você está se referindo especificamente ao formato de arquivo Zip , você pode simplesmente usar o zip e unzip de comandos.

Para compactar:

zip squash.zip file1 file2 file3

ou para zipar um diretório

zip -r squash.zip dir1

Para descompactar:

unzip squash.zip

isso descompacta no seu diretório de trabalho atual.

    
por 28.01.2011 / 17:51
56

Há um número realmente vasto de diferentes maneiras de compactar e descompactar sob os derivados do UNIX, por isso vou supor que você quis dizer "zip" no sentido genérico em vez de um específico formato de arquivo.

Você pode compactar arquivos zip (em formato compactado) com o programa GNU tar :

tar -zcvf myfile.tgz .

que fará o diretório atual. Substitua . por outros nomes de arquivos se você quiser algo diferente.

Para descompactar esse arquivo, use:

tar -zxvf myfile.tgz

Supondo, claro, que você tem um tar capaz de fazer a compactação, bem como combinar arquivos em um.

Se não, você pode usar apenas tar cvf seguido por gzip (novamente, se disponível) para compactação e gunzip seguido por tar xvf .

Para o manuseio específico de arquivos em formato ZIP, eu recomendo baixar 7zip e usar isso - ele reconhece uma variedade enorme de formatos de arquivo, incluindo o ZIP.

    
por 28.01.2011 / 16:57
29

Bem, quando se trata de distribuir arquivos para uma variedade de sistemas operacionais, eu recomendo 7-zip .

Normalmente, no pacote p7zip , você obterá o comando 7z e 7za , com o qual você pode criar seus próprios arquivos 7z.

7za também pode descompactar arquivos zip padrão ( pkzip ) (e criá-los também com o -tzip interruptor).

Compactação:

7za a archive.7z file1 file2 directory/

Descompactando:

7za x archive.7z

Ele também pode criar arquivos auto-extraíveis com a opção -sfx :

7za a -sfx archive.exe files1 file2 dir

Eu recomendo este método caso usuários do Windows não consigam abrir arquivos 7z (caso você queira aconselhar uma ferramenta para isso: PeaZip ).

Se você quiser usar o mesmo algoritmo de compactação com seus tarballs, use a opção -J com tar :

tar cJf archive.tar.xz file1 file2 dir

xz é uma ferramenta do UNIX que usa LZMA2 para compactação, mas funciona como gz , bz2 , etc funciona. Até funciona como filtro.

O 7z não cria arquivos com informações completas do sistema de arquivos no UNIX, então você precisa usar tar antes de usar o 7z (mas como o 7z armazena outras informações sobre o arquivo tar , eu recomendo usar xz , como foi projetado para isso):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z
    
por 30.01.2011 / 08:57
28

Se você não tem pacotes zip e unzip instalados e você tem java, você pode usar jar para descompactar:

jar -xf file.zip
    
por 10.10.2014 / 12:32
20
unzip <filename>

e

zip -r archive.zip <filename> [filename]

Você precisará garantir que esses comandos sejam instalados por meio do gerenciador de pacotes. Não é mais difícil do que usar qualquer outra coisa na linha de comando. É certamente mais simples do que criar arquivos com o tar.

    
por 29.01.2011 / 23:40
4

BSD Tar também pode fazer isso

bsdtar acf bravo.zip alfa.jpg

Ou:

bsdtar xf bravo.zip
    
por 28.11.2016 / 06:13
3

A resposta mais padrão é pax , recomendada em cpio e tar .

Diferentemente de cpio e Posix tar , mas como o GNU tar , pax é capaz de arquivar arquivos e compactar o arquivo. Esse comportamento é diferente de zip , que compacta cada arquivo antes de colocá-lo no arquivo.

    
por 29.01.2011 / 10:20
2

Isso cobre apenas a extração

Para isso, comecei a usar dtrx .

link

o objetivo é remover a complexidade. Então você passa em qualquer arquivo para ele e descobre o que precisa ser feito com ele. Zip, tar, gz ... O uso é sempre o mesmo - dtrx archive.zip . Ele faz algumas perguntas e você está pronto.

dtrx está disponível na maioria dos repositórios, assim você pode apt | yum instalá-lo.

    
por 31.08.2017 / 12:00
1

Muitas vezes me pego tentando zipar os arquivos modificados no meu diretório de trabalho - para copiar todos os arquivos modificados para outro diretório de trabalho do sandbox ou preservá-los por um curto período, porque quero desfazer algumas das alterações. / p>

Nesse caso, copio a lista de arquivos modificados para um arquivo temporário e uso zip com a opção -@ .

Digamos que eu modifiquei os arquivos Foo.h, Bar.cc e TestBar.cc.

Digamos que eu crie um arquivo chamado modified-files.txt cujo conteúdo é:

Foo.h
Bar.cc
TestBar.cc

Eu executo o seguinte comando para zipar esses arquivos:

cat modified-files.txt | zip modified-files.zip -@
    
por 16.08.2017 / 21:59