ZIP não extrairá todos os arquivos no Debian

ZIP não extrairá todos os arquivos no Debian

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

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

Finalmente hoje verifiquei com um arquivo .zip de 140 MB. Extraí o arquivo manualmente e usando meu script .sh 10 vezes e depois de cada vez eu corria ls -h -R > ../test_n.txtpara manter um registro da pasta após cada descompactação. Depois de comparar todos os 20 arquivos, vi que 7 em cada 20 vezes faltariam de 2 a 8 arquivos do arquivo .zip.

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

Responder1

Não tenho absolutamente nenhuma ideia do que pode estar acontecendo... no entanto, aqui estão algumas coisas que você pode tentar para depurar o problema:

  • Se essa zipversão tiver um -lsinalizador ou 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 após descompactá-lo - você pode usar isso como um teste em seu script, apenas para ter certeza de que está sempre descompactando todos eles.

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

  • Qual é o código de retorno do zipcomando? Após descompactar o arquivo usando zip, emita um echo $?comando para verificar o código de retorno dele - se for diferente de zero, então o programa está informando que, de alguma forma, a execução do programa não foi bem-sucedida no geral. Observe que esse valor pode variar, mas até onde eu sei, usar zero para sucesso e outros números para erro/aviso é bastante padrão nos utilitários Unix/Linux.

Eu espero que isso ajude :)

informação relacionada