Разархивировать многокомпонентный ZIP из командной строки

Вопрос или проблема

Заранее спасибо за любую помощь. Я пытаюсь распаковать многослойный zip-файл из командной строки в OSX 10.8.5.

Я создал zip с помощью zip -s 800m foo.zip foo.mov

Файл foo.mov имеет размер 2.7 ГБ. Таким образом, у меня есть файлы: foo.zip, foo.z01, foo.z02, foo.z03.

Я попробовал использовать zip -s 0 foo.zip -O foo_unsplit.zip, но тогда foo_unsplit.zip всего лишь 1.6 ГБ и выдает следующую ошибку при использовании с unzip.

ошибка:  неверные сжатые данные для распаковки

Я также попробовал использовать cat Heritage.zip Heritage.z01 Heritage.z02 Heritage.z03 > Heritage_unsplit.zip, но распаковка итогового файла дает следующий результат:

unzip Heritage_unsplit.zip 
Архив:  Heritage_unsplit.zip
  Подпись конца центрального каталога не найдена. Этот файл не является 
  zip-файлом или он является одним диском многослойного архива. 
  В последнем случае центральный каталог и комментарий zip-файла будут найдены на 
  последнем диске(ах) этого архива.
unzip:  не удается найти каталог zip-файла в одном из Heritage_unsplit.zip или 
        Heritage_unsplit.zip.zip, и не удается найти Heritage_unsplit.zip.ZIP, период.

Кто-нибудь знает способ распаковать многослойный файл в командной строке? Я допустил ошибку в одной из своих попыток?

Я предполагаю, что это отличается между версиями MacOS – в данный момент я использую High Sierra, и unzip по-прежнему не поддерживает многослойные файлы должным образом – но я сделал тот же трюк с cat, но в обратном порядке, и это сработало.

Т.е. cat Heritage.z03 Heritage.z02 Heritage.z01 Heritage.zip > Heritage_unsplit.zip
Затем unzip сработал.

Я получил некоторые ошибки, подобные приведенным ниже, но файлы бинарно равны:

> unzip big.zip
Архив:  big.zip
предупреждение [big.zip]:  zip-файл утверждает, что это последний диск многослойного архива;
  пытается обработать в любом случае, предполагая, что все части были объединены 
  вместе в правильном порядке. Ожидайте "ошибок" и предупреждений... истинная поддержка многослойности
  еще не существует (скоро появится).
предупреждение [big.zip]:  1073741824 лишних байт в начале или внутри zip-файла
  (пытается обработать в любом случае)
файл #1:  неверное смещение zip-файла (сигнал локального заголовка):  1073741828
  (пытается снова компенсировать)
  распаковка: ...

Вы пропустили порядок, используя cat для файлов, порядок должен быть:

cat foo.z01, foo.z02, foo.z03 foo.zip > unsplited_foo.zip

А затем использовать unzip:

unzip unsplited_foo.zip

Ответ или решение

Распаковка многокомпонентного ZIP-файла из командной строки в macOS

Если вы столкнулись с необходимостью распаковать многокомпонентный ZIP-файл в macOS 10.8.5, и ваша попытка с использованием стандартных инструментов таких как unzip и zip не увенчалась успехом, не отчаивайтесь. В данной статье мы подробно рассмотрим процесс и возможные ошибки, а также правильный порядок действий для успешной распаковки.

Причины ошибок

Как вы уже заметили, при использовании zip -s 800m foo.zip foo.mov, создается несколько файлов: foo.zip, foo.z01, foo.z02, foo.z03. Когда вы пытаетесь объединить их и распаковать, могут возникать ошибки:

  • Ошибка: invalid compressed data to inflate – это может происходить из-за несовпадения или неправильного порядка файлов.
  • Ошибка, указывающая на отсутствие сигнатуры "end-of-central-directory" – эта ошибка возникает, если последняя часть многокомпонентного архива не была обработана должным образом.

Объединение файлов

Для обеспечения правильной распаковки многокомпонентного ZIP-файла следует придерживаться следующего алгоритма:

  1. Объединение файлов в правильном порядке:
    Используйте команду cat, чтобы объединить файлы. Важно, чтобы вы соблюдали последовательность файлов. Для вашего случая правильная команда будет выглядеть следующим образом:

    cat foo.z01 foo.z02 foo.z03 foo.zip > foo_unsplit.zip

    Здесь foo.zip должен находиться в конце, поскольку он содержит центральный каталог архива, который необходим для правильной распаковки.

  2. Распаковка объединённого файла:
    После того как вы создали файл foo_unsplit.zip, попробуйте его распаковать с помощью следующей команды:

    unzip foo_unsplit.zip
  3. Обработка возможных ошибок:
    Если вы получите предупреждения о том, что файл может быть поврежден или содержит дополнительные байты, не переживайте. Это нормально в случае многокомпонентных архивов. Инструмент unzip часто справляется с этим и продолжает процесс распаковки.

Заключение

Теперь вы знаете, как правильно распаковать многокомпонентный ZIP-файл из командной строки в macOS. Следуя указаниям, вы сможете избежать распространённых ошибок и успешно извлечь ваши файлы. Не забывайте, что корректный порядок объединения файлов имеет решающее значение для успешной работы с многокомпонентными архивами. С этими советами, ваша работа с архивами станет проще и эффективнее.

Оцените материал
Добавить комментарий

Капча загружается...