Распакуйте zip-файл: ошибка «Подпись конца центрального каталога не найдена»

Я получаю эту ошибку каждый раз, когда пытаюсь разархивировать свой файл:

Archive:  Server.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of Server.zip or
        Server.zip.zip, and cannot find Server.zip.ZIP, period.

Я заархивировал его с помощью 7zip, но он все еще не работает. Я читал кое-что о MD5, нужно ли это, чтобы разархивировать?

1
задан 19 November 2017 в 16:38

1 ответ

Я тестировал с 7z, zip и unzip, сознательно смешивая программы, но я не смог воспроизвести проблему. Однако это вполне может быть характерно для сжатых данных.
Поскольку 7z использует формат 7z по умолчанию, и расширения имени файла не имеют значения, я сначала подумал, что это создаст файл формата 7z просто с именем zip, но оказывается, что это не то, что недружелюбно для пользователя:
7z a 1.zip 2 действительно создает правильный файл 1.zip даже без опции -t zip, которая задает формат.
7z a 1 2 однако создает 1.7z и 7z a -t zip 1 2 создает 1.zip, как и ожидалось.

В целом, неплохо было бы

  1. использовать одну и ту же программу для упаковки и распаковки архива:

    7z a Server.zip file1 file2 dir1/ # add files
    7z x Server.zip # extract with full paths
    7z e Server.zip # extract IGNORING paths

    zip Server.zip file1 file2 dir1/ # add files
    unzip Server.zip # extract with full paths
    
  2. используйте криптографический хеш для проверки правильности передачи архива:

    1. На вашем сервере сохраните хэш-сумму с md5sum, sha1sum, sha224sum, sha256sum, sha384sum или sha512sum 1 (все с одинаковым синтаксисом), например

      sha1sum Server.zip otherfile.zip > sha1hashsums
      
    2. Передайте оба файла zip и файл sha1hashsums.
    3. Проверить файл (ы) zip, например,

      $ sha1sum -c sha1hashsums
      Server.zip: FAILED
      otherfile.zip: OK
      

1 Наиболее важным отличием между ними является размер хэша, более длинный хэш является более безопасным. MD5 создает 128-битный хеш, SHA1 160-битный, остальные имеют размер хэш-суммы в своем имени, например, sha512sum для 512-битного хэша. Остальное я оставлю в Википедии, см. Ссылки.

1
ответ дан 19 November 2017 в 16:38

Другие вопросы по тегам:

Похожие вопросы: