команда unzip завершается успешно без распаковки файла

Имеются дважды сжатые файлы с расширением xxx.zip.gz

На gunzip - создается файл xxx.zip размером 0,25 Гб
На распаковке после gunzip - расширение файла xxx.zip не меняется

Результат распаковки:

Archive:  xxx.zip
  inflating: xxx.txt

также

echo $? shows 0 

Итак, несмотря на то, что команда zip выполнена успешно, и файл все еще остается с расширением zip, какая-либо помощь?

ОС - SunOS 5.10


person fortm    schedule 03.02.2015    source источник


Ответы (1)


Вы обнаруживаете, что xxx.txt создается, верно?

unzip и gunzip имеют разные «философии» в отношении работы со своим архивом. gunzip избавляется от файла .gz, а unzip оставляет свой файл zip на месте. Так что в вашем случае zip работает как задумано.

Я думаю, лучшее, что вы можете сделать, это

 unzip -q xxx.zip && /bin/rm xxx.zip

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

изменить

как вы и просили when zip file itself is +10 GB in size, then unzip does not succeed

Предполагая, что вы уверены, что на диске достаточно места для сохранения расширенного исходного файла, трудно сказать. Насколько большой расширенный файл? Более 2 ГБ? Я полагаю, что в SunOS5 раньше было ограничение на размер файла в 2 ГБ, что требовало добавления поддержки «больших файлов» в ядро ​​​​и утилиты. У меня больше нет доступа к Sun, поэтому я не могу подтвердить. Я думаю, вы найдете места для поиска с apropos largefile (при условии, что ваш $MANPATH настроен правильно).

Но основной тест на правильность работы unzip будет выглядеть примерно так:

  if unzip "${file}" ; then
     echo "clean unzip for ${file}, deleting the archive file" >&2
     /bin/rm "${file}"
  else
     echo "error running unzip for ${file}, archive file remains in place" >&2
  fi

(Или я не понимаю ваш вариант использования). Не стесняйтесь опубликовать еще один вопрос, показывающий ls -l xxx.zip.gz xxx.zip и другие детали, чтобы помочь восстановить ожидаемый рабочий процесс.

ИХТХ.

person shellter    schedule 03.02.2015
comment
да, я обнаружил, что разархивированный файл действительно был создан без расширения .zip отдельно, что я упустил из виду. Однако кажется, что иногда, когда сам zip-файл имеет размер +10 ГБ, распаковать его не удается. Можем ли мы что-то сделать для этого случая? - person fortm; 03.02.2015
comment
во-первых, я заметил, что вы показываете OS=Sun5.1. В ОС производителя все по-другому. Вы прочесали man zip? Возможно, есть вариант, который автоматически удалит чистый архив. (Перед написанием этого ответа я просмотрел свой Linux и не смог найти автоудаление, возможно, оно там есть, но я так не думаю). 2. Эксперименты показали, что файл .zip.gz меньше, чем gzip -9 file (максимальное сжатие). Иными словами, непонятно, почему вы используете 2 формы сжатия. Получаете ли вы его от третьего лица? - person shellter; 03.02.2015
comment
Я думаю, что у Sun5 есть b(un)zip2, который, хотя и медленнее, при использовании режима максимального сжатия с -9 обычно делает файл размером 1/2 файла gzip -9. Может ли это помочь? - person shellter; 03.02.2015
comment
.zip и .zip.gz одинаковы по размеру 0,25 ГБ, сам несжатый файл имеет размер 0,47 ГБ. gzip -9 сам по себе 0,24 ГБ - он от стороннего производителя, и я мало что могу здесь сделать .. Однако я нашел bunzip2, но не вижу опции автоматического удаления - person fortm; 03.02.2015
comment
Я думаю bunzip2 удалится автоматически, после чистого расширения архива. Удачи. - person shellter; 03.02.2015