Вопрос или проблема
Заранее спасибо за любую помощь. Я пытаюсь распаковать многослойный 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-файла следует придерживаться следующего алгоритма:
-
Объединение файлов в правильном порядке:
Используйте командуcat
, чтобы объединить файлы. Важно, чтобы вы соблюдали последовательность файлов. Для вашего случая правильная команда будет выглядеть следующим образом:cat foo.z01 foo.z02 foo.z03 foo.zip > foo_unsplit.zip
Здесь
foo.zip
должен находиться в конце, поскольку он содержит центральный каталог архива, который необходим для правильной распаковки. -
Распаковка объединённого файла:
После того как вы создали файлfoo_unsplit.zip
, попробуйте его распаковать с помощью следующей команды:unzip foo_unsplit.zip
-
Обработка возможных ошибок:
Если вы получите предупреждения о том, что файл может быть поврежден или содержит дополнительные байты, не переживайте. Это нормально в случае многокомпонентных архивов. Инструментunzip
часто справляется с этим и продолжает процесс распаковки.
Заключение
Теперь вы знаете, как правильно распаковать многокомпонентный ZIP-файл из командной строки в macOS. Следуя указаниям, вы сможете избежать распространённых ошибок и успешно извлечь ваши файлы. Не забывайте, что корректный порядок объединения файлов имеет решающее значение для успешной работы с многокомпонентными архивами. С этими советами, ваша работа с архивами станет проще и эффективнее.