Подтвердить что ты не робот

Почтовые файлы повреждены на 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 не было ошибок. Фактически, я сделал несколько из них одновременно, и теперь они все проявляют ту же проблему.

Если файл действительно поврежден, как его исправить?

Или, если он не поврежден, как его извлечь?

4b9b3361

Ответ 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 позволяет указать выходной каталог.