Como posso criar e extrair arquivos zip da linha de comando?
Como posso criar e extrair arquivos zip da linha de comando?
Respostas:
Tipicamente utiliza um tar
para criar um arquivo não comprimido e quer gzip
ou bzip2
para comprimir que arquivo. Os comandos gunzip
e correspondentes bunzip2
podem ser usados para descompactar o arquivo morto, ou você pode simplesmente usar sinalizadores no tar
comando para executar a descompactação.
Se você está se referindo especificamente ao formato de arquivo Zip , pode simplesmente usar os comandos zip
e unzip
.
Para comprimir:
zip squash.zip file1 file2 file3
ou para compactar um diretório
zip -r squash.zip dir1
Para descompactar:
unzip squash.zip
isso descompacta no diretório de trabalho atual.
zip -r9 archive.zip files...
sintaxe (-r = recursiva -9 = compressão máxima).
zip
pode criar muitos tipos diferentes de arquivos .ZIP, bem como usar muitos compressores diferentes. Por outro lado, existem várias outras ferramentas de compactação nomeadas de maneira semelhante: 7-Zip, gzip, bzip2, rzip etc. etc. que não são intercambiáveis.
cd dir1; zip -r ../squash.zip *
unzip -d myfolder squash.zip
para extrair em um novo diretório separado ( myfolder
) em vez de colocar todos os arquivos diretamente no diretório atual, o que pode ser irritante se o arquivo zip contiver muitos arquivos e diretórios em seu nível superior. Isso imita o funcionamento da maioria das ferramentas de descompactação da interface do usuário.
Há um número verdadeiramente vasto de maneiras diferentes de compactar e descompactar sob derivativos UNIX, então eu vou assumir que você quis dizer "zip" no sentido genérico, em vez de um formato de arquivo específico .
Você pode compactar arquivos (em formato compactado) com o tar
programa GNU :
tar -zcvf myfile.tgz .
que fará o diretório atual. Substitua .
por outros nomes de arquivo, se desejar outra coisa.
Para descompactar esse arquivo, use:
tar -zxvf myfile.tgz
Isso pressupõe, é claro, que você é 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 fazer o download 7zip
e usá-lo - ele reconhece uma enorme variedade de formatos de arquivo, incluindo o ZIP.
tar jcvf file.tar.bz2...
para compactar no formato bzip2 ou tar Jcvf file.tar.xz ...
para a compactação xz.
Se você não possui os pacotes zip e descompactar instalados e possui o java, pode jar
descompactar:
jar -xf file.zip
Bem, quando se trata de distribuir arquivos para uma variedade de sistemas operacionais, eu recomendo o 7-zip .
Normalmente, no pacote p7zip
, você obtém o comando 7z
e 7za
, com o qual 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
switch).
Compressing:
7za a archive.7z file1 file2 directory/
Descomprimir:
7za x archive.7z
Também pode criar arquivos de extração automática com o -sfx
switch:
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
switch com tar
:
tar cJf archive.tar.xz file1 file2 dir
xz
é uma ferramenta UNIX, que utiliza LZMA2 para a compressão, mas funciona da maneira 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, portanto, você precisará usá-lo tar
antes de usar o 7z (mas como o 7z armazena outras informações sobre o tar
arquivo, eu recomendaria o uso xz
, conforme projetado para ele):
tar cf - file1 file2 dir | 7za z -si archive.tar.7z
atool
, é uma pequena ferramenta que torna o uso de muitos compressores diferentes mais confortável. Vincule que a
e criar um arquivo se torne a arc.7z folder/
ou extraia um simplesa arc.7z
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.
O BSD Tar também pode fazer isso
bsdtar acf bravo.zip alfa.jpg
Ou:
bsdtar xf bravo.zip
tar
tem o benefício de suportar alguns formatos de compactação adicionais em comparação com o GNU tar
e outros tar
s. O maior benefício é, talvez, que ele o faça enquanto usa uma tar
sintaxe semelhante . Você certamente pode usar 7z
, unrar
, unzip
, etc a partir da linha de comando, mas eles usam uma diferente sintaxe.
A resposta mais padrão pax
é a recomendada cpio
e repetida tar
.
Ao contrário do cpio
POSIX tar
, mas como o GNU tar
, pax
é possível arquivar e compactar o arquivo. Esse comportamento é diferente de zip
, que compacta cada arquivo antes de colocá-lo no arquivo morto.
pax
arquivos suporte zip?
pax
arquivos!
Isso cobre apenas extração.
Para isso, eu comecei a usar dtrx
.
O objetivo é remover a complexidade. Então você apenas passa qualquer arquivo para ele e ele descobre o que precisa ser feito com ele. Zip, alcatrão, gz ... O uso é sempre o mesmo - dtrx archive.zip
. Ele faz algumas perguntas e pronto.
dtrx
está disponível na maioria dos repositórios, para que você possa apt
| yum
instale-o.
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, eu copiar a lista de arquivos modificados para um arquivo temporário e usar 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 seja:
Foo.h
Bar.cc
TestBar.cc
Eu executo o seguinte comando para compactar esses arquivos:
cat modified-files.txt | zip modified-files.zip -@