Рейтинг:10

Не удается разархивировать файл размером 6 ГБ: неправильное смещение zip-файла

флаг es

Мне нужно разархивировать файл около 6 Гб. Однако я не могу сделать это ни правой кнопкой мыши (выдает ошибку «пустой архив»), ни в терминале, показывая для последнего следующее:

$ лс
 fhs-3.0.pdf IDrive Tese.zip «Исследования переноса двухзатворного трехслойного графена ABC и ABA: открытие запрещенной зоны и настройка структуры зоны в очень больших перпендикулярных электрических полях - Zou.pdf»

$ распаковать Tese.zip
Архив: Tese.zip
предупреждение [Tese.zip]: 4294967296 дополнительных байтов в начале или внутри zip-файла
  (все равно пытаюсь обработать)
файл № 1: неправильное смещение zip-файла (знак локального заголовка): 4294967296
  (попытка компенсации)
 извлечение: Tese/.DS_Store          
ошибка: недостаточно памяти для обнаружения бомбы

$ jar xvf Tese.zip
java.util.zip.ZipException: только записи DEFLATED могут иметь дескриптор EXT
    в java.base/java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:313)
    в java.base/java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:125)
    в jdk.jartool/sun.tools.jar.Main.extract(Main.java:1361)
    в jdk.jartool/sun.tools.jar.Main.run(Main.java:409)
    на jdk.jartool/sun.tools.jar.Main.main(Main.java:1681)

Я не думаю, что файл поврежден, потому что я недавно разархивировал тот же файл на Mac.

Мой компьютер имеет 15 ГБ ОЗУ и 2 ГБ памяти подкачки.

флаг us
Обратите внимание, что 4294967296 — это ровно 4 ГиБ, так что это еще один намек на ответ Ferrybig.
флаг co
Это не требует нового ответа, потому что он в основном уже описан в существующих, но, погуглив полученное сообщение об ошибке, кажется, что этот ZIP-файл был создан в так называемом потоковом режиме, который известен не всем реализациям ZIP. поддерживать. Особенно упоминается версия Java, не имеющая поддержки. Таким образом, хотя сам файл может быть в порядке, вы просто не сможете обработать его с помощью этих инструментов. Используйте другие инструменты или распакуйте его на другой платформе, на которой есть эти инструменты.
nobody avatar
флаг gh
`unzip -l /path/to/your/Tese.zip` zip-файл может быть поврежден.
Rich Hard Fine Man avatar
флаг es
@nobody Я не думаю, что это так, потому что я недавно распаковал тот же файл на Mac. Тем не менее, я сделал то, что вы написали, и он перечислил файлы внутри zip
nobody avatar
флаг gh
`распаковать -v | head -n1` пожалуйста [редактируйте] свой вопрос, пожалуйста.
Rich Hard Fine Man avatar
флаг es
@никто не редактировал вопрос. Я могу читать файлы, но мне нужно их скачать.
Рейтинг:23
флаг in

Java поддерживает только файлы в формате ZIP, а не ZIP64. То же самое касается простого молния команда

Zip-файлы имеют ограничение на размер 4 ГБ минус 1 байт, Zip64 имеет ограничение 16 EB минус 1 байт. MacOS создает файлы zip64, когда их размер превышает поддерживаемый. Инструмент, предоставляемый вашей средой рабочего стола, может иметь такое же ограничение.

Вам нужны соответствующие инструменты для чтения файлов zip64. В командной строке то же самое может читать эти файлы, а на Java вы можете использовать Компрессор Apache Commons

Rich Hard Fine Man avatar
флаг es
Спасибо за ваше объяснение! Однако, запуская то же самое, он говорит, что команда не найдена. Глядя на предоставленную вами ссылку Apache Commons Compress, https://commons.apache.org/proper/commons-compress/zip.html, я не понимаю, как ее использовать.
флаг in
Java добавила поддержку zip64 в версии 1.7, поэтому любая последняя версия JRE _должна_ иметь возможность читать файлы zip64. Я использовал это в прошлом для банок, в которых было более 65 тыс. классов. Однако в некоторых JRE наблюдается регрессия: https://bugs.openjdk.java.net/browse/JDK-8226530. Так что проверьте свою версию JRE.
флаг in
Я на 99% уверен, что для Linux нет «того же» порта, и, следовательно, нет возможности использовать его в Ubuntu (за исключением Darling, но это слишком сложно, чтобы говорить об этом здесь). По моему опыту, лучшим вариантом для такого рода вещей в Linux является `unar` (версия CLI [The Unarchiver](https://theunarchiver.com/)), которая _доступна для Linux (`sudo apt-get install unar` в системах Ubuntu и Debian).
Ismael Miguel avatar
флаг om
А если ничего не помогает, просто используйте 7Zip с WineHQ. Я успешно использовал его для извлечения странных файлов RAR на Raspberry Pi с WineHQ с Box86.
Рейтинг:14
флаг es

Оба инструмента, распаковать и банка, явно сказал вам, что файл поврежден:

miguel@...$ распаковать Tese.zip
...
предупреждение [Tese.zip]: 4294967296 дополнительных байтов в начале или внутри zip-файла
  (все равно пытаюсь обработать)
файл № 1: неправильное смещение zip-файла (знак локального заголовка): 4294967296
  (попытка компенсации)
miguel@...$ jar xvf Tese.zip
java.util.zip.ZipException: только записи DEFLATED могут иметь EXT 
...

Если бы вы могли разархивировать его на Mac, возможно, какое-то программное обеспечение Mac создало этот ZIP-файл, но, возможно, в нестандартном формате (насколько идет стандартизация ZIP-файлов), который может понять только некоторое программное обеспечение Mac.

Вы можете попробовать снова перейти на этот Mac, разархивировать его там, а затем создать из него сжатый файл tar, затем перенести этот файл tar на свой компьютер и распаковать его.

Joshua avatar
флаг cz
Я сообщал об ошибках для вещей, которые взрывались при столкновении с большими zip-файлами. ZIP64 существует более десяти лет и является расширением формата, созданным создателями формата как прямой законный потомок оригинального PKZIP. Реализуйте его уже или хотя бы поднимите ошибку «Zip64» не поддерживается.
Rich Hard Fine Man avatar
флаг es
@HuHa, где написано, что файл поврежден? Тем не менее, сделал то, что вы предложили, хорошая идея! Спасибо!
HuHa avatar
флаг es
Я отредактировал свой ответ, чтобы выделить части, которые указывают на это.
barbecue avatar
флаг us
Возможно, вы захотите попробовать использовать на нем 7-zip, который навсегда поддерживает ZIP64.
Matthias Winkelmann avatar
флаг mx
То, как в этом ответе упоминаются компьютеры Mac, напоминает мне 12-летних мальчиков, говорящих о девочках.
ilkkachu avatar
флаг co
@MatthiasWinkelmann, какая часть? Дело в том, что «понимание только программного обеспечения Mac» или в том, чтобы «перейти на Mac, разархивировать и создать сжатый файл tar»? Если второе, то я не уверен, что хочу знать больше о том, что современные 12-летние думают о девочках...
Рейтинг:8
флаг ua

Вы можете проверить, если ваша копия распаковать поддерживает расширение zip64 (и архивы >4Gig), запустив разархивировать -v и проверка наличия ZIP64_SUPPORT. Ниже показано, что я получаю при установке Ubuntu. Обратите внимание, что у него есть ZIP64_SUPPORT

Если твой распаковать не отображается ZIP64_SUPPORT, вам нужна более новая версия распаковать.

В качестве альтернативы, если ваш распаковать имеет ZIP64_SUPPORT проблема в другом. Можете ли вы поделиться какими-либо подробностями о том, как был создан zip-файл? Является ли zip-файл общедоступным где-либо?

$ разархивировать -v
$ разархивировать -v
Разархивируйте 6.00 от 20 апреля 2009 г., Debian. Оригинал Info-ZIP.

Последние исходники и исполняемые файлы находятся по адресу ftp://ftp.info-zip.org/pub/infozip/;
см. ftp://ftp.info-zip.org/pub/infozip/UnZip.html для других сайтов.

Скомпилировано с помощью gcc 9.2.0 для Unix (Linux ELF).

Специальные параметры компиляции UnZip:
        ACORN_FTYPE_NFS
        COPYRIGHT_CLEAN (метод восстановления PKZIP 0.9x не поддерживается)
        SET_DIR_ATTRIB
        СИМВОЛИЧЕСКИЕ ССЫЛКИ (символические ссылки поддерживаются, если позволяют RTL и файловая система)
        TIMESTAMP
        UNIXBACKUP
        USE_EF_UT_TIME
        USE_UNSHRINK (поддерживается метод распаковки PKZIP/Zip 1.x)
        USE_DEFLATE64 (поддерживается PKZIP 4.x Deflate64(tm))
        UNICODE_SUPPORT [широкие символы, кодировка символов: UTF-8] (обработка путей UTF-8)
        LARGE_FILE_SUPPORT (поддерживаются большие файлы размером более 2 ГБ)
        ZIP64_SUPPORT (поддерживаются архивы с использованием Zip64 для больших файлов)
        USE_BZIP2 (PKZIP 4.6+, с использованием bzip2 lib версии 1.0.8, 13 июля 2019 г.)
        VMS_TEXT_CONV
        WILD_STOP_AT_DIR
        [расшифровка, версия 2.11 от 05.01.2007]

Параметры среды UnZip и ZipInfo:
           РАСПАКОВАТЬ: [нет]
        РАЗЗИПОПТ: [нет]
         ZIPINFO: [нет]
      ЗИПИНФОПТ: [нет]
Rich Hard Fine Man avatar
флаг es
у моего распаковщика, кажется, есть ZIP64_SUPPORT. ZIP-файл был создан автоматически путем загрузки папки, которую я ранее загрузил в онлайн-резервную копию, поэтому он недоступен для общего доступа.
pmqs avatar
флаг ua
Из других ответов есть предположение, что zip-файл был создан в потоковом режиме. Стандартная утилита `unzip` может без проблем извлекать большинство потоковых zip-файлов. Чтобы знать наверняка, вы можете запустить [zipdetails] (https://github.com/pmqs/zipdetails/blob/main/bin/zipdetails) для файла и опубликовать результаты. Это приведет к сбросу всех метаданных из zip-файла. Вывод немного подробен. Если вы не хотите раскрывать имена файлов в zip-файле, используйте параметр `--redact`. [Полное раскрытие: я автор zipdetails]
Rich Hard Fine Man avatar
флаг es
Спасибо за вашу помощь! Выполнение того, что вы мне сказали, дает следующее 000000000 ЛОКАЛЬНЫЙ ЗАГОЛОВОК #1 04034B50 Нельзя использовать неопределенное значение в качестве ссылки на МАССИВ в /usr/bin/zipdetails, строка 757. Я включаю изображение терминала, https://imgur.com/a/kPjQLra. Я думаю, я не делаю то, что ты мне сказал, в правильном направлении. Извините, это очень ново для меня.
pmqs avatar
флаг ua
Несмотря на то, что вы сломали мой код, это действительно интересный результат. Это означает, что используемая вами служба резервного копирования создает нестандартные zip-файлы. Можете ли вы рассказать нам о службе резервного копирования, которую вы используете? Это позволит мне посмотреть, смогу ли я воспроизвести вашу проблему. Последнее, что нужно попробовать. Запустите `zipdetails--scan Teste.zip` Это может занять целую вечность, поэтому вам нужно набраться терпения.
pmqs avatar
флаг ua
@RichHardFineMan номер строки, указанный в предоставленном вами сообщении об ошибке, 757, исходит из старой версии сценария zipdetails, который поставляется с Ubuntu. Версия на github имеет множество исправлений, позволяющих работать с более необычными zip-файлами. В том же каталоге, где хранится ваш zip-файл, запустите `wget https://raw.githubusercontent.com/pmqs/zipdetails/main/bin/zipdetails`, чтобы получить самую последнюю копию `zipdetails`. Затем запустите `perl ./zipdetails Teste.zip`. Если это все равно выдает сообщение об ошибке, разместите сообщение здесь и попробуйте запустить `perl ./zipdetails --scan Teste.zip`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.