Почтовые файлы повреждены на 4 гигабайта - Нет предупреждений или ошибок - Я потерял свои данные?
Я создал кучу zip файлов на своем компьютере (Mac OS X) с помощью следующей команды:
zip -r bigdirectory.zip bigdirectory
Затем я сохранил эти zip файлы и удалил исходные каталоги.
Теперь, когда я пытаюсь извлечь zip файлы, я получаю такую ошибку:
$ unzip -l bigdirectory.zip
Archive: bigdirectory.zip
warning [bigdirectory.zip]: 5162376229 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [bigdirectory.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
С тех пор я обнаружил, что это может быть связано с тем, что zip не может обрабатывать файлы определенного размера, возможно, 4 концерта. По крайней мере, я это где-то читал.
Но почему команда zip позволяет мне создавать эти файлы? Записанный zip файл составляет 9457464293 байт, и это позволяет мне сделать еще больше, без ошибок.
Таким образом, он может создавать эти файлы.
Я действительно надеюсь, что мои файлы не будут потеряны. Я выучил свой урок, и в будущем я проверю свои архивы перед удалением исходных файлов, и я, вероятно, также буду использовать другой формат файла, такой как tar/gzip.
Пока что, что я могу сделать? Мне действительно нужны мои файлы.
Update
Некоторые люди предположили, что мой инструмент unzip
не поддерживает достаточно большие файлы (что странно, потому что я использовал встроенную ОС X zip
и unzip
). Во всяком случае, я установил новый unzip
из homebrew
, и вот и вот, теперь я получаю другую ошибку:
$ unzip -t bigdirectory.zip
testing: bigdirectory/1.JPG OK
testing: bigdirectory/2.JPG OK
testing: bigdiretoryy/3.JPG OK
testing: bigdirectory/4.JPG OK
:
:
file #289: bad zipfile offset (local header sig): 4294967295
(attempting to re-compensate)
file #289: bad zipfile offset (local header sig): 4294967295
file #290: bad zipfile offset (local header sig): 9457343448
file #291: bad zipfile offset (local header sig): 9457343448
file #292: bad zipfile offset (local header sig): 9457343448
file #293: bad zipfile offset (local header sig): 9457343448
:
:
Это действительно беспокоит, потому что мне нужны эти файлы. И при создании этого zip файла с помощью системного инструмента zip
не было ошибок. Фактически, я сделал несколько из них одновременно, и теперь они все проявляют ту же проблему.
Если файл действительно поврежден, как его исправить?
Или, если он не поврежден, как его извлечь?
Ответы
Ответ 1
Разархивировать ниже 6, казалось бы, не удается, используйте
jar -xf <zipfile>
если у вас установлена Java, или еще одна распаковка перед записью файла.
Смотрите: https://serverfault.com/questions/235139/how-to-unzip-files-bigger-than-4gb
Ответ 2
У меня была аналогичная проблема с резервным копированием каталога на 12 ГБ перед выполнением формата жесткого диска. Как ни странно, я использовал ту же команду, что и вы.
Я прочитал и нашел предложения для запуска:
zip -F
и
zip -FF
чтобы попытаться исправить файл.
К сожалению, это не сработало, и я все еще получал ошибки.
Осмотрев еще немного, я нашел команду ditto, и она отлично работала против моего оригинального (нетронутого) zip файла:
ditto -x -k original-file.zip dst-directory
-x to extract an archive
-k Specifies it to be a PKZip archive instead of the default CPIO
После использования этой команды я успешно извлек все файлы.
Ответ 3
Я столкнулся с такой же проблемой, когда пытался использовать unzip
zip файлы огромных размеров (~ 7 ГБ). Я был уверен, что при копировании zip файлов на сервер не было ошибок. (Я дважды проверил его с помощью rsync
).
В зависимости от вашей ситуации решение:
1) Если вы делаете это на локальном компьютере, щелкните правой кнопкой мыши на zip файле и дайте Extract Here
, это будет работать для файлов (.zip) любого размера.
2) Если ваши zip файлы находятся на удаленном сервере, сначала загрузите файловую систему сервера с помощью sftp
(sftp://[email protected]
). После этого просто перейдите в каталог и снова выполните то же самое, что и вы (1). т.е. щелкните правой кнопкой мыши на zip файле и извлеките его.
Не может быть лучшим решением, но одним из способов сделать это.
Ответ 4
У меня была такая же проблема с unzip %x
в Linux для файла .zip
размером более 4 ГБ, что усугубилось ошибкой only DEFLATED entries can have EXT descriptor
.
Команда 7z x
решила все мои проблемы.
Будьте осторожны, команда 7z x
будет извлекать все файлы с корнем, установленным в текущем каталоге. Опция -o
позволяет указать выходной каталог.