ZIP não extrairá todos os arquivos no Debian

2

Minha máquina executa Debian 6.0.7 e eu tenho Zip 3.0 (July 5th 2008), by Info-ZIP . Quando eu tento descompactar um arquivo .zip, 2 ~ 3 vezes em 10, ele não extrai tudo. Haveria 2-3 arquivos faltando.

No começo eu pensei que era por causa do tamanho do arquivo e algumas limitações que eu não conhecia, mas então eu notei que ele estava fazendo isso com pequenos arquivos de 150MB também. Então eu pensei que talvez fosse porque eu estava descompactando através de um arquivo de script bash, então eu testei com manualmente descompactando os arquivos e, novamente, esse não era o problema.

Finalmente, hoje eu verifiquei com um arquivo .zip de 140MB. Eu extraí o arquivo manualmente e usando meu script .sh 10 vezes e depois de cada vez eu executava ls -h -R > ../test_n.txt para manter um registro da pasta após cada descompressão. Depois de comparar todos os 20 arquivos, vi que 7 de 20 vezes perderia de 2 a 8 arquivos do arquivo .zip.

Alguém tem alguma ideia de por que isso pode estar acontecendo?

    
por Basilis P. 03.07.2014 / 00:38

1 resposta

0

Eu não tenho a menor ideia do que pode estar acontecendo ... no entanto, aqui estão algumas coisas que você pode tentar para depurar o problema:

  • Se a versão zip tiver um sinal -l , ou alguma outra coisa para verificar quais arquivos estão no arquivo zip sem descompactá-lo, isso pode ajudar.

    zip -l file.zip
    

    Isso mostrará o conteúdo do arquivo zip, então você deve esperar a mesma quantidade de arquivos depois de descompactá-lo - você pode usar isso como um teste no seu script, apenas para ter certeza de que você está sempre descompactando todos eles. .

  • Os arquivos zip estão corretos, de fato? Se você estiver obtendo o arquivo de outra fonte, obtenha uma soma de verificação do arquivo e compare-a com o arquivo zip que está tentando descompactar. Se diferente, a corrupção do arquivo pode ser a causa desse problema.

  • Qual é o código de retorno do comando zip ? Após descompactar o arquivo usando zip , emita um comando echo $? para verificar o código de retorno - se for diferente de zero, o programa está informando que, de alguma forma, a execução do programa não foi bem-sucedida. Por favor, note que este valor pode variar, mas tanto quanto eu sei, usando zero para o sucesso e outros números para erro / aviso é bastante normal sobre os utilitários unix / linux.

Espero que isso ajude:)

    
por 03.07.2014 / 04:35