2

На моей машине установлен Debian 6.0.7 а у меня Zip 3.0 (July 5th 2008), by Info-ZIP . Когда я пытаюсь разархивировать файл .zip, 2 ~ 3 раза из 10, он не извлечет все. Там будет 2-3 файла не хватает.

Сначала я думал, что это из-за размера файла и некоторых ограничений, которых я не знал, но потом я заметил, что это происходит и с небольшими файлами по 150 МБ. Тогда я подумал, что, может быть, это потому, что я распаковывал его через файл сценария bash, поэтому я протестировал ручное разархивирование файлов, и опять же, это не было проблемой.

Наконец сегодня я проверил это с помощью файла .zip размером 140 МБ. Я извлек файл как вручную, так и используя свой сценарий .sh 10 раз, и после каждого раза я запускал ls -h -R > ../test_n.txt чтобы вести запись папки после каждой распаковки. После сравнения всех 20 файлов я увидел, что 7 из 20 раз он пропустит от 2 до 8 файлов из файла .zip.

У кого-нибудь есть идеи, почему это может происходить?

1 ответ1

0

Я понятия не имею, что может происходить ... однако вот некоторые вещи, которые вы можете попробовать, чтобы решить проблему:

  • Если эта zip версия имеет флаг -l или что-то еще, чтобы проверить, какие файлы находятся внутри zip-файла, не распаковывая его, это может помочь.

    zip -l file.zip
    

    Это покажет вам содержимое zip-файла, так что вы должны ожидать того же количества файлов после его распаковки - вы можете использовать это как тест в вашем скрипте, просто чтобы убедиться, что вы всегда распаковываете все из них.

  • Действительно ли zip-файлы верны? Если вы получаете файл из другого источника, возьмите контрольную сумму файла, а затем сравните его с zip-файлом, который вы пытаетесь распаковать. Если это не так, причиной этой проблемы может быть повреждение файла.

  • Какой код возврата для команды zip ? После распаковки файла с помощью zip введите echo $? команда для проверки кода возврата для него - если он отличается от нуля, то программа сообщает вам, что каким-то образом выполнение программы не было успешным в целом. Обратите внимание, что это значение может варьироваться, но, насколько мне известно, использование нуля для успеха и других чисел для ошибок / предупреждений является довольно стандартным для утилит unix / linux.

Надеюсь, это поможет :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .