ISO 9660 — это стандарт файловой системы, опубликованный в 1988 году для оптических дисков. Он был разработан Международной организацией по стандартизации (ISO) и Международной электротехнической комиссией (IEC) для определения стандартной файловой системы для CD-ROM. Целью было обеспечение совместимости дисков с данными между различными платформами и операционными системами.
Диск ISO 9660 содержит данные в иерархической древовидной структуре каталогов и файлов, аналогично другим файловым системам. Самый верхний каталог называется корневым каталогом. Ссылки на каталоги и файлы осуществляются с помощью пути, который начинается с корня. Каждый каталог, включая корневой, содержит набор записей каталога, которые предоставляют метаданные о файлах и подкаталогах в нем.
ISO 9660 определяет несколько ключевых аспектов и ограничений структуры файловой системы:
- Имена файлов могут иметь длину до 8 символов с расширением из 3 символов, разделенных точкой. Имена файлов должны состоять из заглавных букв A-Z, цифр 0-9 и символа подчеркивания. Ограничения по длине и символам в именах файлов помогают обеспечить широкую совместимость.
- Имена каталогов аналогичным образом ограничены 8 заглавными символами плюс символ подчеркивания. Имена каталогов также ограничены 8 уровнями в глубину.
- Полная длина пути к любому файлу или каталогу ограничена 255 символами. Разделителями пути служит косая черта (/).
Диск ISO 9660 начинается с 16 секторов системной области, за которыми следуют до 2048 секторов дескрипторов тома. Дескрипторы тома предоставляют информацию о структуре и содержимом диска, включая первичный дескриптор тома, который содержит ключевые метаданные.
Первичный дескриптор тома находится в секторе 16 и содержит такую информацию, как имя тома диска, идентификатор издателя, составитель данных, авторские права, аннотация и даты создания/изменения/истечения срока действия тома. Он также указывает размер и расположение таблицы путей, расположение корневого каталога и ссылку на дополнительные дескрипторы тома.
Диски ISO 9660 используют таблицы путей для оптимизации навигации и поиска каталогов. Таблицы путей предоставляют индекс иерархии каталогов с отдельными таблицами для каталогов с именами в нижнем регистре (таблица путей типа L) и каталогов с именами в верхнем регистре и специальными символами (таблица путей типа M). Таблица путей типа L является необязательной, но используется на большинстве дисков.
Каждая запись таблицы путей содержит расположение записи каталога, количество уровней каталога от корня и имя каталога. Это позволяет эффективно перемещаться по дереву каталогов без необходимости анализировать каталоги сектор за сектором.
Ссылки на файлы и каталоги на диске ISO 9660 осуществляются через записи каталога в каждом каталоге. Запись каталога включает поля метаданных для:
- Длины записи каталога - Длины записи расширенного атрибута - Расположения экстента файла/каталога (смещение сектора) - Длины данных файла/каталога - Даты и времени записи - Флагов файла (например, скрытый, каталог, связанный файл) - Единицы размера файла для перемежающихся файлов - Размера промежутка чередования для перемежающихся файлов - Номера последовательности тома - Длины иде нтификатора файла (имени файла) - Имени файла
ISO 9660 определяет виртуальную файловую систему, в которой все данные записываются на носитель только для чтения. Таким образом, стандарт не предусматривает возможности изменения существующего диска ISO 9660 — диск всегда рассматривается как доступный только для чтения. Если необходимы изменения, необходимо создать новый образ диска с обновленными файлами и каталогами.
Хотя ISO 9660 был разработан для оптических носителей, к образам дисков, использующим этот стандарт, также можно получить доступ с других носителей, таких как жесткие диски. Многие операционные системы позволяют монтировать файл образа диска ISO 9660 как виртуальный диск только для чтения или получать доступ к содержимому образа диска с помощью специальных драйверов файловой системы.
Более поздние расширения ISO 9660 расширили его возможности, сохранив при этом обратную совместимость:
- Расширения Rock Ridge: позволяют хранить семантику и информацию файловой системы Unix на дисках ISO 9660. Позволяют использовать более длинные имена файлов, более глубокие структуры каталогов и дополнительные атрибуты файлов.
- Расширения Joliet: определены Microsoft для поддержки имен файлов Unicode длиной до 64 символов. Имена файлов Joliet могут использовать более широкий диапазон символов и хранятся в формате UTF-16.
- El Torito: позволяет диску быть загрузочным, предоставляя спецификацию для загрузочных CD-ROM, которые могут включать загрузочный код и загрузочные образы дисков.
Хотя популярность оптических дисков снизилась по сравнению с их пиком, ISO 9660 остается важным стандартом для обмена данными на носителях только для чтения. Его конструкция обеспечивала совместимость между вычислительными платформами при работе с ограничениями оптических накопителей. Понимание формата ISO 9660 ценно для тех, кто работает с архивами CD/DVD, образами дисков и внутренними компонентами операционной системы.
Сжатие файлов уменьшает избыточность, чтобы те же данные занимали меньше бит. Верхняя граница задаётся теорией информации: для без потерь пределом является энтропия источника (см. теорему кодирования источника Шеннона source coding theorem и его оригинальную статью 1948 года «A Mathematical Theory of Communication»). Для сжатия с потерями компромисс между битрейтом и качеством описывает теория rate–distortion.
Большинство компрессоров работают в два этапа. Сначала модель предсказывает или выявляет структуру данных. Затем кодер превращает эти предсказания в почти оптимальные шаблоны битов. Классическая семья моделей — Lempel–Ziv LZ77 (1977) и LZ78 (1978) находят повторяющиеся подстроки и излучают ссылки вместо сырых байтов. На стороне кодирования кодирование Хаффмана (см. статью 1952 года) назначает более короткие коды вероятным символам. Арифметическое кодирование и range coding ещё точнее приближаются к пределу энтропии, а современные Asymmetric Numeral Systems (ANS) дают схожие коэффициенты при табличных реализациях.
DEFLATE (используют gzip, zlib, ZIP) сочетает LZ77 и Хаффмана. Спецификации открыты: DEFLATE RFC 1951, оболочка zlib RFC 1950и формат gzip RFC 1952. Gzip ориентирован на потоковую передачу и явно не обеспечивает произвольный доступ. PNG закрепляет DEFLATE как единственный метод (окно до 32 КиБ) согласно спецификации «Compression method 0…» и W3C/ISO PNG 2nd Edition.
Zstandard (zstd): современный универсальный компрессор с высокими коэффициентами и очень быстрой декомпрес сией. Формат описан в RFC 8878 (и HTML-зеркале) и в референс-спеке на GitHub. Как и gzip, базовый фрейм не предполагает произвольного доступа. Главное преимущество zstd — словари: маленькие образцы корпуса, резко улучшающие сжатие множества крошечных или похожих файлов (см.документацию словарей python-zstandard и пример Nigela Tao). Реализации принимают «unstructured» и «structured» словари (обсуждение).
Brotli: оптимизирован для веб-контента (WOFF2, HTTP). Совмещает статический словарь и DEFLATE-подобное ядро LZ+энтропия. Спецификация — RFC 7932, где указано окно 2WBITS−16 с WBITS в [10, 24] и то, что формат не предоставляет произвольный доступ. Brotli часто превосходит gzip на веб-тексте и быстро декодируется.
Контейнер ZIP: ZIP — файловый архив, поддерживающий разные методы (deflate, store, zstd и др.). Де-факто стандарт — APPNOTE PKWARE (см.портал APPNOTE, размещённую копиюи обзоры LC ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 ориентирован на максимальную скорость при умеренных коэффициентах. См. страницу проекта и формат фреймов. Подходит для кэшей в памяти, телеметрии и горячих путей, где декомпрессия должна быть почти со скоростью RAM.
XZ / LZMA гнётся за плотностью (высоким коэффициентом), но компрессует медленнее. XZ — контейнер; основную работу делают LZMA/LZMA2 (моделирование наподобие LZ77 + range coding). См.формат .xz, спецификацию LZMA (Павлов)и заметки ядра Linux про XZ Embedded. XZ обычно сжимает лучше gzip и соперничает с современными кодеками высокой плотности, но кодирует дольше.
bzip2 использует преобразование Бэрроуза–Уилера (BWT), move-to-front, RLE и Хаффмана. Обычно даёт файлы меньше, чем gzip, но медленнее; см.официальный мануал и man-страницу (Linux).
Важен размер окна. Ссылки DEFLATE смотрят максимум на 32 КиБ назад (RFC 1951) и ограничение PNG 32 КиБ здесь. Brotli поддерживает окна от ~1 КиБ до 16 МиБ (RFC 7932). Zstd настраивает окно и глубину поиска уровнями (RFC 8878). Базовые потоки gzip/zstd/brotli спроектированы для последовательного чтения; сами форматы не гарантируют произвольный доступ, хотя контейнеры (индексы tar, блочное фреймирование, форматные индексы) могут его добавить.
Форматы выше — lossless: можно восстановить те же байты. Медиа-кодеки часто lossy: они отбрасывают незаметные детали ради меньших битрейтов. Для изображений классический JPEG (DCT, квантование, энтропийное кодирование) стандартизован в ITU-T T.81 / ISO/IEC 10918-1. В аудио MP3 (MPEG-1 Layer III) и AAC (MPEG-2/4) используют перцепционные модели и MDCT (см.ISO/IEC 11172-3, ISO/IEC 13818-7и обзор MDCT здесь). Lossy и lossless могут сосуществовать (PNG для UI, веб-кодеки для изображений/видео/аудио).
Теория Shannon 1948 · Rate–distortion · Кодирование Huffman 1952 · Арифметическое кодирование · Range coding · ANS. Форматы DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · XZ format. Стек BWT Burrows–Wheeler (1994) · руководство bzip2. Медиа JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Итог: подбирайте компрессор под свои данные и ограничения, измеряйте на реальных входах и не забывайте о выгоде словарей и умного фрейминга. С удачной парой получите меньшие файлы, быстрые передачи и отзывчивые приложения без ущерба корректности и переносимости.
Сжатие файлов - это процесс, который уменьшает размер файла или файлов, обычно для экономии места на диске или ускорения передачи по сети.
Сжатие файлов работает путем идентификации и удаления избыточности в данных. Оно использует алгоритмы для кодирования исходных данных в более маленьком пространстве.
Два основных типа сжатия файлов: без потерь и с потерями. Сжатие без потерь позволяет восстановить исходный файл целиком, в то время как сжатие с потерями обеспечивает более значительное уменьшение размера за счет небольшой потери в качестве данных.
Популярным примером инструмента для сжатия файлов является WinZip, который поддерживает несколько форматов сжатия, включая ZIP и RAR.
При сжатии без потерь качество остается неизменным. Однако при сжатии с потерями может быть заметное снижение качества, поскольку оно удаляет менее важные данные для более значительного уменьшения размера файла.
Да, сжатие файлов безопасно с точки зрения целостности данных, особенно при сжатии без потерь. Однако, как и любые файлы, сжатые файлы могут стать целью для вредоносного ПО или вирусов, поэтому всегда важно иметь надежное программное обеспечение безопасности.
Почти все типы файлов можно сжимать, включая текстовые файлы, изображения, аудио, видео и программные файлы. Однако уровень достижимого сжатия может значительно варьироваться в зависимости от типа файла.
ZIP-файл - это тип формата файла, который использует сжатие без потерь для уменьшения размера одного или нескольких файлов. Несколько файлов в ZIP-файле фактически объединяются в один файл, что также упрощает обмен данными.
Технически, да, хотя дополнительное уменьшение размера может быть минимальным или даже противопродуктивным. Сжатие уже сжатого файла иногда может увеличить его размер из-за метаданных, добавленных алгоритмом сжатия.
Чтобы распаковать файл, обычно вам нужен инструмент для распаковки или разархивации, такой как WinZip или 7-Zip. Эти инструменты могут извлечь исходные файлы из сжатого формата.