ISO 9660 - это стандарт файловой системы, опубликованный Международной организацией по стандартизации (ISO) в 1988 году для оптических дисков. Он был разработан как независимый от платформы формат для обеспечения обмена данными между различными операционными системами и вычислительными платформами. ISO 9660 определяет логическую структуру, структуру каталогов и формат метаданных для файлов, хранящихся на CD-ROM и других оптических дисках.
Одной из ключевых особенностей ISO 9660 является его простота и совместимость. Стандарт накладывает ограничения на имена файлов, глубину каталогов и общую структуру файловой системы для обеспечения максимальной совместимости. Имена файлов ограничены 8 символами с расширением из 3 символов (часто называемым форматом 8.3) и могут содержать только заглавные буквы, цифры и подчеркивания. Имена каталогов имеют те же ограничения, а максимальная глубина каталога составляет 8 уровней.
ISO 9660 определяет иерархическую структуру каталогов с корневым каталогом на верхнем уровне и подкаталогами, ответвляющимися от него. Каждый каталог хранится как отдельная запись в файловой системе, содержащая метаданные о файлах и подкаталогах, которые он содержит. Эти метаданные включают имя файла, размер, дату создания и расположение на диске.
Файлы в файловой системе ISO 9660 хранятся как непрерывные блоки данных, причем каждый файл занимает один или несколько логических блоков. Размер логического блока обычно составляет 2048 байт, хотя стандарт допускает и другие размеры. Каждому файлу присваивается уникальный идентификатор, называемый идентификатором файла, который используется для поиска файла в структуре каталогов.
ISO 9660 также определяет несколько расширений и уровней обмена, которые обеспечивают дополнительные функции и гибкость. Наиболее часто используемое расширение называется Joliet, которое позволяет использовать более длинные имена файлов (до 64 символов) и поддерживает символы Unicode для международного использования. Другое расширение, Rock Ridge, добавляет семантику файловой системы POSIX, такую как права доступа к файлам, владение и символические ссылки.
Стандарт ISO 9660 определяет три уровня обмена, известных как уровень 1, уровень 2 и уровень 3. Уровень 1 является наиболее ограничительным и совместимым, с самыми строгими ограничениями на имена файлов и глубину каталогов. Уровень 2 ослабляет некоторые из этих ограничений, позволяя использовать более длинные имена файлов (до 31 символа) и более глубокие структуры каталогов (до 32 уровней). Уровень 3 еще больше расширяет возможности ISO 9660, позволяя использовать многоэкстентные файлы, которые могут быть разделены на несвязные части на диске.
При создании файловой системы ISO 9660 данные организуются в несколько отдельных областей на диске. Первая область - это системная область, которая содержит информацию о самом диске, такую как дескриптор тома и загрузочные записи. Вторая область - это область данных, которая содержит фактические данные файлов и каталогов.
Внутри области данных файлы и каталоги организованы в логические блоки и экстенты. Экстент - это непрерывная последовательность логических блоков, составляющих файл или каталог. Файлы могут храниться в одном экстенте или разделяться на несколько экстентов в зависимости от их размера и структуры диска.
Чтобы найти определенный файл или каталог в файловой системе ISO 9660, операционная система считывает первичный дескриптор тома (PVD) из системной области. PVD содержит важную информацию о файловой системе, включая расположение корневого каталога и размер логических блоков. Оттуда операционная система может перемещаться по иерархии каталогов и следовать идентификаторам файлов, чтобы найти отдельные файлы.
Одним из ограничений ISO 9660 является его неизменяемый характер. После создания диска ISO 9660 его содержимое нельзя изменить без повторного создания всей файловой системы. Это делает его непригодным для случаев использования, когда данные необходимо часто обновлять, например, для операционных систем реального времени или баз данных.
Несмотря на свои ограничения, ISO 9660 по-прежнему широко используется сегодня для распространения программного обеспечения, мультимедийного контента и архивных данных. Его простота, совместимость и надежность делают его идеальным выбором для данных только для чтения, к которым необходимо получить доступ на различных платформах.
Подводя итог, ISO 9660 - это стандартизированный формат файловой системы для оптических дисков, который обеспечивает простой, совместимый и независимый от платформы способ хранения и обмена данными. Его иерархическая структура каталогов, формат метаданных и логическая структура блоков обеспечивают максимальную совместимость между различными операционными системами и вычислительными платформами. Несмотря на некоторые ограничения, такие как неизменяемый характер и ограничения на имена файлов и глубину каталогов, ISO 9660 остается широко используемым и ценным стандартом для распространения и архивирования данных.
Сжатие файлов уменьшает избыточность, чтобы те же данные занимали меньше бит. Верхняя граница задаётся теорией информации: для без потерь пределом является энтропия источника (см. теорему кодирования источника Шеннона 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. Эти инструменты могут извлечь исходные файлы из сжатого формата.