Como descompactar um ZIP multiparte (dividido) no Linux?

59

Eu preciso enviar um arquivo de 400 MB para o meu servidor da web, mas estou limitado a upload de 200 MB. Meu anfitrião sugeriu que eu usasse um arquivo expandido, que eu nunca fiz no Linux.

Eu criei um teste em sua própria pasta, compactando um PDF em test.zip.001 , .002 e .003 . Como faço para descompactar? Preciso me juntar a eles primeiro?

Por favor, note que eu ficaria tão feliz usando o 7z quanto usando os formatos ZIP. Se isso fizer alguma diferença no resultado.

    
por Tim 11.06.2012 / 04:41

5 respostas

58

Você precisará se juntar a eles primeiro. Você pode usar o aplicativo comum de linux, cat , como no exemplo abaixo:

cat test.zip* > ~/test.zip

Isso concatenará todos os seus arquivos test.zip.001 , test.zip.002 , etc em um arquivo test.zip maior. Depois de ter esse arquivo único, você pode executar unzip test.zip

Como criar, dividir, juntar e extrair zip arquivos no Linux " podem ajudar.

    
por 11.06.2012 / 04:46
32

O utilitário Linux unzip realmente não suporta zip multipartes. Do manual :

Multi-part archives are not yet supported, except in conjunction with zip. (All parts must be concatenated together in order, and then zip -F (for zip 2.x) or zip -FF (for zip 3.x) must be performed on the concatenated archive in order to “fix” it. Also, zip 3.0 and later can combine multi-part (split) archives into a combined single- file archive using zip -s- inarchive -O outarchive. See the zip 3 manual page for more information.)

Então você precisa primeiro concatenar as peças e reparar o resultado. cat test.zip.* concatena todos os arquivos chamados test.zip.* , em que o caractere curinga * representa qualquer sequência de caracteres; os arquivos são enumerados em ordem lexicográfica, o que é o mesmo que ordem numérica graças aos zeros de leadings. >test.zip direciona a saída para o arquivo test.zip .

cat test.zip.* >test.zip
zip -FF test.zip --out test-full.zip
unzip test-full.zip

Se você criou as partes dividindo diretamente o arquivo zip, em vez de criar um zip de várias partes com o utilitário oficial do Pkzip, tudo o que você precisa fazer é juntar as partes.

cat test.zip.* >test.zip
unzip test.zip
    
por 12.06.2012 / 03:55
20
7z x archive.zip.001

Ele encontrará automaticamente o restante

    
por 15.09.2015 / 17:39
14

Encontrei a resposta aqui: link

Esta resposta é semelhante em conceito ao de Gilles , ou seja, primeiro você combina o arquivo dividido em um arquivo normal arquivar usando split, e então você descompactá-lo usando unzip.

A diferença é que, em vez de usar o -FF flag, que não funcionou para mim, basta informar o zip para reempacotar o arquivo dividido sem dividir. Isso é o que significa o sinal -s 0 .

Então, primeiro, combine o arquivo dividido em um único arquivo:

zip -s 0 split-foo.zip --out unsplit-foo.zip

Em seguida, extraia o único arquivo usando o unzip:

unzip unsplit-foo.zip
    
por 10.03.2014 / 21:36
0

Apenas outro exemplo. Isso funcionou para mim no bash para dividir 3GB oracle instalador:

echo "<installOracleDB.sh>: Splitting OracleDB installer"
zip /tmp/linuxx64_12201_database.zip --out /tmp/linuxx64_12201_oradb.zip -s 1000m
echo "<installOracleDB.sh>: Merging OracleDB installer"
zip -FF /tmp/linuxx64_12201_oradb.zip --out /tmp/linuxx64_12201_database.zip
echo "<installOracleDB.sh>: Removing temporary files OracleDB installer"
find /tmp -type f -name 'linuxx64_12201_oradb*' -exec rm {} +
echo "<installOracleDB.sh>: Unizipping OracleDB installer"
unzip /tmp/linuxx64_12201_database.zip
    
por 03.11.2017 / 18:58

Tags