Формат zip что это такое
ZIP файлы в Windows – как открывать, редактировать и конвертировать
Файл с расширением ZIP является сжатым файлом и является наиболее широко используемым форматом архивации, с которым вам придётся встретиться.
Наиболее распространено использование ZIP-файлов для загрузки программного обеспечения. Архивирование программного обеспечения экономит место на сервере, сокращает время, необходимое для его загрузки на ваш компьютер, и обеспечивает прекрасную организацию сотен или тысяч файлов в одном ZIP-файле.
Ещё один пример можно встретить при загрузке или обмене десятками фотографий. Вместо того чтобы отправлять каждое изображение по отдельности по электронной почте или сохранять каждое изображение одно за другим с веб-сайта, отправитель может поместить файлы в ZIP-архив, поэтому необходимо передать только один файл.
Как открыть файл ZIP
Самый простой способ открыть ZIP-файл – дважды щелкнуть по нему, и ваш компьютер покажет вам папки и файлы, содержащиеся внутри. В большинстве операционных систем, включая Windows и macOS, файлы ZIP обрабатываются внутри, без необходимости какого-либо дополнительного программного обеспечения.
Однако, существует много инструментов сжатия/распаковки, которые можно использовать для открытия (и создания!) ZIP-файлов. Есть причина, по которой их обычно называют zip / unzip tools!
Включая Windows, почти все программы, которые разархивируют ZIP-файлы, также имеют возможность архивировать их; другими словами, они могут сжать один или несколько файлов в формат ZIP. Некоторые могут также зашифровать и защитить их паролем. Если бы мне нужно было порекомендовать один или два, это был бы PeaZip или 7-Zip, – это отличные и совершенно бесплатные программы, поддерживающие формат ZIP.
Если вы не хотите использовать программу для открытия ZIP-файла, многие онлайн-сервисы также поддерживают этот формат. Онлайн-сервисы, такие как Files2Zip.com и B1 Online Archiver, позволяют просто загрузить свой ZIP-файл, чтобы просмотреть все файлы внутри, а затем загрузить один или несколько из них по отдельности. Другой пример – это ZIP Extractor, который может извлечь некоторые или все файлы из ZIP-архива непосредственно на Google Drive.
Я рекомендую использовать открывающие ZIP-архив сервисы только в том случае, если ZIP-файл имеет маленький размер. Загрузка большого файла ZIP и управление им в интернете займёт больше времени и энергии, чем просто загрузка и установка автономного инструмента, такого как 7-Zip.
Вы также можете открыть ZIP-файл на большинстве мобильных устройств. Пользователи iOS могут установить iZip бесплатно, а пользователи Android имеют возможность работать с файлами ZIP через такие инструменты, как B1 Archiver или 7Zipper.
Открытие других видов файлов ZIP
Файлы ZIPX – это расширенные файлы Zip, которые создаются и открываются с помощью WinZip версии 12.1 и новее, а также PeaZip и некоторых других аналогичных программ архивирования.
Как конвертировать ZIP файл
Файлы могут быть преобразованы только во что-то похожего формата. Например, вы не можете конвертировать файл изображения, такой как JPG, в видеофайл MP4 (по крайней мере, это не имеет смысла), равно как и конвертировать ZIP-файл в PDF или MP3.
Если это сбивает с толку, помните, что ZIP-файлы – это просто контейнеры, которые содержат сжатые версии фактических файлов. Поэтому, если внутри ZIP-файла есть файлы, которые вы хотите преобразовать – например, PDF в DOCX или MP3 в AC3 – вы должны сначала извлечь файлы одним из способов, описанных в разделе выше, а затем преобразовать эти извлеченные файлы с помощью конвертера файлов.
Поскольку ZIP является форматом архива, вы можете легко конвертировать ZIP в RAR, 7Z, ISO, TGZ, TAR или любой другой сжатый файл двумя способами, в зависимости от размера:
Дополнительная информация о файлах ZIP
Если вы защитили паролем ZIP-файл, но затем забыли пароль, вы можете использовать «взломщик» паролей, чтобы удалить его и восстановить доступ к вашим файлам. ZIP Password Cracker Pro – это одна из бесплатных программ, которая использует грубую силу для удаления пароля ZIP.
Некоторые ZIP-файлы могут иметь имя файла с другим расширением файла перед окончательным расширением «zip». Просто имейте в виду, что, как и для любого типа файла, всегда самое последнее расширение определяет, что это за файл.
Например, Photos.jpg.zip по-прежнему является файлом ZIP, потому что JPG предшествует ZIP. В этом примере архив, вероятно, назван так, чтобы быстро и легко определить, что внутри архива есть изображения JPG.
Некоторые программные средства резервного копирования создают резервные копии файлов в формате ZIP, чтобы они сжимались для экономии места, собирались вместе для более удобного поиска и содержались в общем формате, чтобы можно было открывать резервную копию даже без исходного программного обеспечения для резервного копирования. Одной из таких программ, которая делает это, является COMODO Backup.
ZIP-файл может иметь размер от 22 байт и до 4 ГБ. Этот предел в 4 ГБ применяется как к сжатому, так и к несжатому размеру любого файла в архиве, а также к общему размеру ZIP-файла.
Не так давно создатель ZIP Фил Кац представил новый формат ZIP под названием ZIP64, который увеличивает ограничение размера до 16 EiB (около 18 миллионов ТБ).
Файл формата ZIP — что это?
Описание формата ZIP
Файл ZIP является распространенным форматом сжатия, применяющимся в различных архиваторах. Расширение ZIP разработано основателем корпорации PKWARE Филом Кацем в 1989 году специально для применения в рамках программного обеспечения PKZIP. В основном, архив прописывается заглавными буквами, это связано с изначальным ограничением в системе DOS.
Примечательно, что в случае необходимости, ZIP архивы можно соединять с модулями, отвечающими за распаковку контента, в таком случае, пользователь получает единый исполняемый файл, несущий расширение EXE. Такие операционные системы, как Windows, Mac OS и Linux, а также свободные платформы, поддерживают формат в штатном режиме.
Технология является общепризнанной и входит в ТОП самых популярных методов архивирования, она доступна для внушительного ряда приложений, выполняющих функции резервного копирования, сжатия, обмена данными. Даже учитывая более инновационные технологии, в нынешнее время описываемый формат архивов, всё еще актуален.
Обилие архиваторов от конкурентов, способны открыть файлы ZIP, среди которых и такие программные комплексы, как B1 Free Archiver, Apple Archive Utility, RARLAB WinRAR и прочие. При активном штатном средстве, запустить ZIP архив можно посредством двойного щелчка левой клавиши мыши или же выбрать правой кнопкой соответствующую утилиту.
Zip – как не нужно создавать формат файлов
Zip появился 32 года назад. Можно подумать, что настолько зрелый формат должен быть отлично задокументирован. К сожалению, нет. Что же конкретно в нем не так, и каким образом его можно было бы оптимизировать? Подробно рассмотрим эти вопросы, опираясь на исходную документацию.
Вообще, есть у меня ощущение, что это касается многих форматов файлов. Они не прорабатываются, а скорее создаются разработчиками на ходу. Если в итоге такой формат становится популярен, то у пользователей возникает желание считывать и/или записывать соответствующие файлы. При этом им приходится либо делать реверс-инжиниринг, либо запрашивать спецификации. Даже если разработчик и пишет спецификацию, он зачастую не может вспомнить все допущения, которые делает его программа. В итоге они не записываются, и спецификация получается неполной. К таким форматам и относится Zip.
Если коротко, то zip-файл состоит из записей, каждая запись начинается с некоторого 4-байтового маркера, который обычно имеет следующую структуру:
* некоторые форматы требуют округления длины до ближайшего числа, кратного 4 или 16. Zip же этого не делает. Если вы видите id и не знаете, как этот тип содержимого записи структурирован, то понять, сколько байтов нужно пропустить, вам не удастся.
4.1.9 ZIP-архивы МОГУТ быть потоковыми, разделенными на сегменты (на стационарных или съемных носителях) либо «самораспаковывающимися» (SFX). SFX-архивы ДОЛЖНЫ нести в себе код извлечения для целевой платформы.
4.3.3 Файлы внутри ZIP-архива можно сохранять в произвольном порядке. ZIP-архив МОЖЕТ включать несколько томов или быть разделен на сегменты определенного пользователем размера. Все значения ДОЛЖНЫ храниться в порядке байтов от младшего к старшему, если для конкретного элемента данных этой документацией не установлено иное.
4.3.7 Local file header:
4.3.12 Структура центрального каталога:
4.3.16 End of central directory record:
Есть и другие детали, относящиеся к шифрованию, более крупным файлам, дополнительным данным, но для целей текущей статьи этого нам будет достаточно. Потребуется лишь уточнить процесс создания SFX-архивов.
Как создать DOS (или другой не-нативный) SFX-архив под Unix?
Суть этой процедуры объяснена на странице мануала UnZipSFX. Сперва понадобится подходящий бинарный дистрибутив UnZip для целевой платформы (DOS, Windows, OS/2 и т.д.). В следующем примере мы предположим, что работаем с DOS. Затем нужно извлечь из дистрибутива модуль UnZipSFX и добавить его, как если бы он был нативным модулем Unix:
Вот и все. При этом вы по-прежнему можете тестировать, обновлять и удалять записи архива. Получился полностью функциональный файл zip.
Ну а теперь с учетом всего этого мы пройдемся по ряду проблем.
Как считывать zip-файл?
В спецификации по этому поводу ничего не сказано.
Есть два очевидных пути:
Файлы внутри ZIP-архива МОЖНО заменять, добавлять и удалять.
Как вам? Это предполагает, что центральный каталог может ссылаться не на все файлы архива, иначе это утверждение о возможности добавления, замены и удаления файлов не имело бы смысла.
Другими словами, если перед нами такая структура:
Тогда очевидно, что B удален, поскольку центральный каталог на него не ссылается. С другой стороны, если [local file B] отсутствует, тогда мы имеем просто независимый zip-архив, т.е. независимый от другого zip-архива, в котором B содержится. Нет необходимости даже упоминать об этой ситуации в спецификации.
Аналогичным образом, если перед нами:
Это может показаться бессмыслицей, но нужно помнить, что PKZIP происходит из эпохи дискет. Операции считывания содержимого всего zip-архива и записи нового zip-архива могут оказаться чрезвычайно медленными. В обоих случаях возможность удаления файла простым обновлением центрального каталога или добавления файла считыванием существующего центрального каталога с присоединением новых данных и последующей записью обновленного центрального каталога окажется весьма желаемой.
Это было особенно актуально в случаях, когда zip-архив занимал несколько дискет. В 1989 году подобная ситуация была не редкостью. Оказывалось гораздо удобнее обновлять README.TXT в zip-архиве без необходимости перезаписывать несколько дискет.
Представители PKWARE в обсуждении сказали следующее:
Файлы внутри ZIP-архива МОЖНО заменять, добавлять и удалять.
Если для центрального каталога допустимо не ссылаться на все локальные файлы, тогда считывание архива путем его прямого сканирования может провалиться. Если дополнительно не постараться, то вы либо получите файлы, которые не должны существовать, либо ошибки из-за попытки перезаписать существующие файлы.
Может ли SFX-компонент содержать какие-либо ID?
Следуя вышеприведенной инструкции по созданию SFX-компонента, мы просто подставляем исполняемый код в начало этого файла, а затем корректируем смещения в центральном каталоге.
Предположим, что у SFX-компонента следующий код:
Вот как можно представить SFX-компонент с находящимся в нем zip-файлом:
Теперь внутри SFX-компонента находится zip-файл. Любой ридер, который считывает с начала, увидит этот внутренний zip-файл и даст сбой. Валиден ли данный zip-файл? Спецификация об этом молчит.
Я проверил. Оригинальный PKUNZIP.exe в DOS, Windows Explorer, MacOS Finder, Info-ZIP (UNZIP, включенный в MacOS и Linux), все четко считывают с конца и видят эти файлы уже после SFX-компонента. А вот Keka и 7z видят zip, вложенный в него.
Считать ли это сбоем или плохим zip-файлом?
APPNOTE.TXT ответа не дает. Я считаю, что здесь должна быть ясность, и что это является одним из незаявленных допущений. PKUNZIP сканирует с конца, поэтому такая схема работает, но как именно она работает, в документации не сказано. Проблема того, что данные в SFX-компоненте могут оказаться похожи на zip-файл, не освещается. Аналогичным образом, потоковое считывание скорее всего провалится, если еще не провалилась из-за недочетов, описанных ранее.
Вы можете решить, что это не такая уж проблема, но в сетевом архиве находятся сотни тысяч SFX zip-ов из 1990-х. Попытка считать такие файлы прямым сканером вполне может провалиться.
Может ли zip-комментарий содержать идентификаторы zip?
APPNOTE.TXT наверняка должен явно сообщать, если это невалидно. Пункт 4.3.1 косвенно указывает:
Но что именно это значит? Значит ли это, что байты 0x50 0x4B 0x05 0x06 не могут появиться в комментарии или коде SFX? Значит ли это, что когда вы в первый раз видите их при обратном сканировании, то второе совпадение уже не ищете?
Если вы сканируете с начала и не сталкиваетесь ни с одной из перечисленных ранее проблем, то прямой сканер успешно это считает. С другой стороны, сам PKUNZIP бы не справился.
Что, если смещение до центрального каталога равно 1,347,093,766?
А что значит продуманная структура?
Этот вопрос определенно требует обсуждения, но, если рассмотреть возможность повторить разработку, то кое-что можно определить без сомнений.
Это исключит двусмысленность при обратном считывании.
2.a. Считать последние 12 байтов.
Тогда, по крайней мере, исчезнет проблема сканирования комментария.
3. Внести ясность в том, какие данные могут появиться в компоненте SFX.
Если вам нужна поддержка прямого считывания, то будет логичным утвердить, что SFX-компонент не может содержать какие-либо записи.
Но обеспечить это сложно, разве что специально написать валидатор. Если вы будете просто проверять, исходя из того, может ли ваше приложение считывать zip-файл, то на сегодня для PKZIP, PKUNZIP, info-ZIP, Windows Explorer и MacOS содержимое SFX-компонента безразлично, поэтому для валидации они не годятся. Нужно явно указать в спецификации на необходимость применения именно обратного сканирования, либо же написать валидатор, который отвергает zip-файлы, не допускающие прямого сканирования, и также в спецификации указать причину.
4. Внести ясность в том, может ли central directory расходиться с записями локальных файлов.
5. Внести ясность в том, могут ли между записями появиться случайные данные.
Обратный сканер не волнует, что находится между записями. Его волнует лишь возможность найти центральный каталог, и считывает он только то, на что центральный каталог указывает. Это означает, что между записями могут быть любые случайные данные (по крайней мере между некоторыми).
Необходима ясность в том, нормально это или нет. Не нужно полагаться на скрытые схемы.
Что же делать? Как все исправить?
End of central directory record должна находиться в конце файла, и последовательность байтов 0x50 0x4B 0x05 0x06 не должна встречаться в комментарии.
Сentral directory руководит содержимым zip-файла, и считать из него можно только те данные, на которые он указывает. Во-первых, причина в том, что содержимое SFX-компонента файла не определено и может содержать zip-записи, которые фактически к zip-файлу не относятся. Во-вторых, возможность добавлять, обновлять или удалять содержимое zip-файла опирается на доступную лишь central directory информацию о том, какие локальные файлы валидны.
Это один способ. Я верю, что в таком случае удалось бы считать сотни миллионов существующих zip-файлов.
С другой стороны, если в PKWARE заявляют, что файлов, имеющих подобные проблемы, не существует, тогда также сработает следующий вариант:
End of central directory record должна находиться в конце файла, и последовательность байтов 0x50 0x4B 0x05 0x06 не должна встречаться в комментарии.
SFX-архив не должен содержать любую из последовательностей id записей, перечисленных в этом документе, так как они могут быть неверно поняты zip-сканерами прямого чтения. Любой файл, не следующий этому правилу, является недействительным zip-архивом.
Надеюсь, что файл APPNOTE.TXT все же обновят, чтобы различные zip-ридеры и zip-генераторы трактовали валидность файлов одинаково.
К сожалению, все говорит в пользу того, что PKWARE не хотят вносить в этом вопросе ясность. Их позиция состоит в том, что zip является неоднозначным форматом. Если вы хотите пользоваться прямым сканированием, то просто не делайте этого для файлов, которые его не поддерживают. Они по-прежнему остаются валидными zip-файлами, и то, что их нельзя таким образом считать, значения не имеет. Вы сами выбираете отказ от их поддержки.
Думаю, эту точку зрения можно понять. Ведь лишь несколько библиотек поддерживают все возможности zip, а может и ни одна. Тем не менее, было бы здорово знать, намеренно ли вы не обрабатываете какой-то файл, или же просто неверно его считываете, и по воле случая иногда получается.
Желание все это осветить возникло у меня в процессе написания JS-библиотеки для распаковки. Их уже существует очень много, но меня интересовали особые возможности, которых в найденных мной вариантах не было. В частности, мне нужно было, чтобы библиотека позволяла считывать из большого архива один файл максимально быстро. Это означало использование обратного сканирования, поиск смещения до нужного файла и его разархивирование. Надеюсь, что и другим моя библиотека пригодится.
Вам может быть весьма интересна эта история ZIP (англ.):
ZIP — где скачать, как установить, распаковать и запаковать архив
Что такое ZIP
ZIP — это формат сжатия данных. Является одним из самых популярных в мире, повсеместно используется в Windows, так как встроенный в него архиватор создаёт архивы именно в формате .zip.
Как установить архиватор ZIP в Windows
Скачайте и устанавливайте: бесплатный архиватор 7-ZIP. Он подойдёт, если вас не устраивает встроенный в Windows архиватор.
Скачать 7-zip архиватор
Как создать архив ZIP в Windows
Чтобы создать архив, кликните правой кнопкой мыши на папке и в контекстном меню выберите Сжать или Создать архив.
Как распаковать архив ZIP в Windows
Чтобы распаковать архив, кликните правой кнопкой мыши по архиву, затем Разархивировать или Распаковать архив. Там же можно указать путь, в какую папку распаковать архив.
Как установить архиватор ZIP в Ubuntu, Debian, CentOS, FreeBSD
В Ubuntu, Debian установка ZIP происходит командой:
Установка ZIP в CentOS:
Установка ZIP во FreeBSD
Как запаковать архив ZIP в Ubuntu, Debian, CentOS
Путь может быть как относительным, так и абсолютным. Пример абсолютного пути:
Помните, что стандарт шифрования .zip очень слабый и относительно легко взламывается, поэтому старайтесь не шифровать зипом важную информацию.
Как распаковать архив zip в Ubuntu, Debian, CentOS
Чтобы распаковать архив .zip в текущий каталог, воспользуйтесь командой:
Если архив запаролен, то так:
где password — пароль к архиву.
Также, можно чётко указать путь для распаковки:
Чтобы распаковать только часть архива, можно воспользоваться командой:
Эта команда распакует файл index.php в текущий каталог.
Как увидеть содержимое архива ZIP в Linux
Загадочный ZIP-файл. Что это и как его получить?
Создание zip-архивов позволяет экономить память, перемещать и передавать файлы между пользователями, а также удобно организовывать хранение документов. Сегодня мы расскажем что из себя представляет zip-формат и как с ним работать.
Что это такое?
Zip – универсальный формат сжатия и архивации файлов. Файл любого типа после архивации с помощью специализированных программ или встроенных функций Windows приобретает именно это разрешение.
Как открыть файл?
Рассмотрим как открыть zip-файл с помощью встроенных возможностей Windows:
Теперь все файлы архива извлечены в указанную папку.
Как его получить?
Существует два способа добавить несколько файлов в архив. Для первого способа:
Для второго способа:
Архиваторы
На сегодняшний момент кроме стандартного архиватора Windows существует множество специализированных программ, с расширенным арсеналом функций. Мы расскажем о самых популярных программах:
Использование архивов типа zip экономит время и дарит множество новых возможностей пользователю. Не стоит пугаться неизвестных форматов и программ, работа с ними практически интуитивная и значительно облегчит вашу жизнь.