Команда 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

1 ответ

Решение

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

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

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

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

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

редактировать

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

Предполагая, что вы уверены, что на диске достаточно места для сохранения расширенного файла orig, трудно сказать. Насколько велик расширенный файл? Более 2 ГБ? Я полагаю, что SunOS5 имел ограничение на размер файла в 2 ГБ, что требовало добавления поддержки "большого файла" в ядро ​​и утилиты. У меня больше нет доступа к Солнцу, поэтому я не могу подтвердить. Я думаю, вы найдете места, чтобы посмотреть 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 и другие детали, чтобы помочь восстановить ожидаемый рабочий процесс.

IHTH.

Другие вопросы по тегам