desenv-web-rp.com

Como faço para zipar / descompactar na linha de comando do unix?

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

570
joachim

Normalmente, usa-se 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 arquivo morto, ou você pode simplesmente usar sinalizadores no comando tar para executar a descompactação.

Se você estiver se referindo especificamente ao formato de arquivo Zip , você pode simplesmente usar os comandos Zip e unzip.

Para comprimir:

Zip squash.Zip file1 file2 file3

ou compactar um diretório

Zip -r squash.Zip dir1

Para descompactar:

unzip squash.Zip

isso descompacta no diretório de trabalho atual.

698
Justin Ethier

Há um número verdadeiramente vasto de diferentes maneiras de compactar e descompactar sob derivados do UNIX, portanto, assumirei que você quis dizer "Zip" no sentido genérico, em vez de um específico formato de arquivo.

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

tar -zcvf myfile.tgz .

que fará o diretório atual. Substituir . com outros nomes de arquivo, se você quiser algo mais.

Para descompactar esse arquivo, use:

tar -zxvf myfile.tgz

Isso pressupõe, é claro, que você tenha um tar capaz de fazer a compactação e a combinação de arquivos em um.

Caso contrário, você pode simplesmente usar tar cvf seguido por gzip (novamente, se disponível) para compactação e gunzip seguido por tar xvf.


Para manipulação específica de arquivos no formato Zip, eu recomendaria baixar 7Zip e usando isso - ele reconhece uma variedade de formatos de arquivo enorme, incluindo o Zip.

68
user14408

Se você não possui pacotes Zip e descompactados, e você possui Java, pode usar jar para descompactar:

jar -xf file.Zip
33
mlocke

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

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

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

Compressing:

7za a archive.7z file1 file2 directory/

Descomprimir:

7za x archive.7z

Ele também pode criar arquivos de extração automática com o -sfx interruptor:

7za a -sfx archive.exe files1 file2 dir

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

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

tar cJf archive.tar.xz file1 file2 dir

xz é uma ferramenta UNIX, que usa LZMA2 para compactação, mas funciona da maneira que gz, bz2, etc funciona. Até funciona como um 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 usando xz, como foi projetado para ele):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z
30
polemon
unzip <filename>

e

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

Você precisará garantir que esses comandos sejam instalados através do seu 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 tar.

23
Starfish

O BSD Tar também pode fazer isso

bsdtar -a -c -f sunday.Zip sunday.jpg

Ou:

bsdtar -x -f sunday.Zip
4
Steven Penny

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

Ao contrário de cpio e POSIX tar, mas como GNU tar, pax é capaz de arquivar arquivos e compactar o Esse comportamento é diferente de Zip , que comprime cada arquivo antes de colocá-lo no arquivo morto.

3
mouviciel

Isso cobre apenas extração.

Para isso, comecei a usar dtrx .

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

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

2
JackLeo

Muitas vezes me pego tentando compactar os arquivos modificados no meu diretório de trabalho - para copiar todos os arquivos modificados para outro diretório de trabalho da sandbox ou para preservá-los por um tempo porque quero desfazer algumas das alterações.

Nesse caso, copio a lista de arquivos modificados para um arquivo temporário e uso Zip com a opção [email protected].

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 seja:

Foo.h
Bar.cc
TestBar.cc

Eu executo o seguinte comando para compactar esses arquivos:

cat modified-files.txt | Zip modified-files.Zip [email protected]
1
R Sahu