Формат архива LZ

LZ — это формат архива, предназначенный для эффективного сжатия данных, который в основном используется в средах, где критически важны сокращение места для хранения и оптимизация передачи данных. Этот формат, использующий алгоритм сжатия Лемпеля-Зива (LZ), известен своей способностью сжимать большие объемы данных с упором на скорость и эффективность использования ресурсов. Архивы LZ особенно популярны в сценариях, требующих быстрых циклов сжатия и распаковки, что делает их пригодными как для распространения программного обеспечения, так и для обработки данных в реальном времени.

Общая информация пр LZ архивы

Архивы LZ — это сжатые форматы файлов, в которых в качестве основного метода сжатия используется алгоритм Лемпеля-Зива. Архивы LZ, известные своей скоростью и простотой, отдают приоритет эффективному сжатию над максимальной степенью сжатия. Это делает их подходящими для приложений, требующих быстрого сжатия и распаковки, таких как обработка данных в реальном времени или встроенные системы. Расширение .lz является наиболее распространенным расширением для файлов, сжатых LZ. Хотя архивы LZ обеспечивают быстрое сжатие, их ограничения с точки зрения степени сжатия и метаданных делают их менее подходящими для архивирования больших наборов данных или сохранения атрибутов файлов. Современные форматы сжатия, такие как ZIP, gzip и XZ, заменили LZ во многих приложениях благодаря своим расширенным функциям и производительности.

История архивов LZ

  • 1977: Основы LZ-сжатия были заложены израильскими учеными-компьютерщиками Авраамом Лемпелем и Якобом Зивом, которые представили алгоритм LZ77. Это был первый широко распространенный алгоритм сжатия данных без потерь, в котором для сжатия повторяющихся шаблонов данных использовалось скользящее окно.
  • 1978: Лемпель и Зив представили алгоритм LZ78, усовершенствованный по сравнению с LZ77, в котором использовался подход на основе словаря. Этот алгоритм еще больше повысил эффективность сжатия и послужил основой для многих последующих методов сжатия.
  • 1984: Терри Уэлч использовал алгоритм LZ78 для разработки LZW (Lempel-Ziv-Welch), который стал популяризирован благодаря его использованию в команде сжатия Unix и формате изображений GIF. LZW был одним из первых алгоритмов сжатия, широко используемых в коммерческих приложениях.
  • 1990-е годы: варианты алгоритма LZ продолжали развиваться, что привело к разработке более совершенных методов сжатия таких как LZMA (алгоритм цепочки Лемпеля-Зива-Маркова), используемых в таких форматах, как 7z и XZ , которые обеспечивают более высокую степень сжатия.
  • 2000-е годы: методы сжатия на основе LZ, в частности LZW, стали встроенными во многие форматы файлов и протоколы, хотя некоторые из них, например GIF, столкнулись с проблемами, связанными с патентами, которые повлияли на их использование.
  • 2010-е годы: алгоритмы на основе LZ, особенно LZMA и его варианты, остаются основой современного программного обеспечения для сжатия, сочетая высокую эффективность сжатия с разумной производительностью. Они продолжают широко использоваться для распространения программного обеспечения, архивирования и хранения данных.
  • 2020-е годы: формат LZ продолжает оставаться надежным и эффективным выбором для сжатия, особенно в средах, где скорость и простота имеют приоритет.

Характеристики архива LZ

Формат архива LZ придерживается простой структуры, отдавая приоритет скорости над расширенными функциями. Здесь базовая структура LZ-архива важна для работы со старыми сжатыми файлами и оценки развития технологий сжатия.

  • Сжатие одного файла: обычно сжимает один файл в архив .lz.
  • Алгоритм LZW: использует метод сжатия Лемпеля-Зива-Уэлча.
  • Отсутствие метаданных: в архиве хранятся ограниченные метаданные об исходном файле или их отсутствие.
  • Простота: простая структура формата способствует высокой скорости сжатия и распаковки.

Методы сжатия архивов LZ

В формате архива LZ используется алгоритм Лемпеля-Зива (LZ), который известен своей простотой и скоростью, что делает его предпочтительным выбором в сценариях, где быстрое сжатие и распаковка имеют решающее значение. Ниже приведен обзор методов сжатия, связанных с LZ:

  1. Алгоритм Лемпеля-Зива. Ядро формата архива LZ основано на алгоритме LZ, методе сжатия без потерь, который идентифицирует и устраняет избыточность данных путем замены повторяющихся последовательностей более короткими кодами. Алгоритм LZ работает путем создания словаря последовательностей во время обработки данных, что позволяет эффективно сжимать большие и повторяющиеся наборы данных. Этот метод особенно эффективен в сценариях, где шаблоны данных последовательны и предсказуемы.
  2. Метод скользящего окна. Алгоритм LZ обычно использует механизм скользящего окна, при котором окно фиксированного размера перемещается по потоку входных данных для поиска повторяющихся последовательностей. Этот подход позволяет алгоритму поддерживать управляемый размер словаря, сохраняя при этом значительное сжатие. Скользящее окно помогает сбалансировать эффективность сжатия с использованием памяти, что делает метод LZ подходящим для систем с ограниченными ресурсами.
  3. Контрольная сумма и обнаружение ошибок. Хотя формат LZ ориентирован на сжатие, он также может включать базовые механизмы контрольной суммы, такие как CRC32, для обеспечения целостности сжатых данных. Эти контрольные суммы помогают обнаружить ошибки, которые могут возникнуть во время хранения или передачи, гарантируя, что распакованные данные останутся точными и неповрежденными.
  4. Дополнительные улучшения. В некоторых реализациях метод сжатия LZ может быть улучшен с помощью дополнительных методов, таких как кодирование длин серий (RLE) или дельта-кодирование, которые могут дополнительно уменьшить размер сжатых данных. Эти дополнительные улучшения применяются к определенным типам данных в архиве, позволяя более эффективно сжимать определенные типы контента, например изображения или исполняемый код.

Поддерживаемые операции .lz

Aspose.Zip предлагает комплексную поддержку работы с архивами .lz, упрощая управление сжатыми файлами. Вот что вы можете сделать:

  • Полное извлечение: легко извлекайте все файлы из архива .lz, сохраняя целостность и структуру исходного содержимого.
  • Выборочное извлечение. Нацеливайтесь на определенные файлы в архиве .lz, что позволяет точно восстановить данные или выборочно распаковать их на основе имен файлов или других критериев.
  • Сжатие данных. Создавайте архивы .lz из файлов и каталогов, используя эффективный метод сжатия LZMA2 для значительного уменьшения размера файлов.
  • Пользовательские настройки сжатия. Настройте уровни сжатия и другие параметры, чтобы сбалансировать скорость сжатия и размер файла, адаптируя процесс к вашим конкретным потребностям.

Структура файла .LZ

Формат архива Lzip разработан с упором на эффективность и скорость и использует многоуровневую структуру, которая облегчает быстрое сжатие и распаковку. Lzip-архив состоит из одного или нескольких элементов, хранящихся в архиве один за другим. Структура члена Lzip включает следующие компоненты:1. Заголовок блока: - Магическое число: уникальный идентификатор, который сигнализирует о начале архива Lzip, гарантируя, что файл распознается как действительный формат Lzip. - Информация о версии: указывает версию используемого Lzip, что помогает обеспечить дальнейшую совместимость с различными инструментами распаковки. Теперь оно имеет значение «1». - Размер словаря: это поле предоставляет информацию о деталях сжатия LZMA, используемого для будущего блока данных.

  1. Сжатый блок данных:

    • Сжатая полезная нагрузка: ядро ​​архива LZ, этот раздел содержит поток сжатых данных. Алгоритм цепочки Лемпеля-Зива-Маркова преобразует исходные данные в серию кодов, представляющих повторяющиеся последовательности, что значительно уменьшает размер файла. Тот же алгоритм сжатия поддерживается в форматах xz и 7z.
  2. Блок нижнего колонтитула:

    • Контрольная сумма/хеш: контрольная сумма (например, CRC32) или криптографический хеш (например, SHA-256) включается для проверки целостности сжатых данных. Это гарантирует, что архив не был подделан или поврежден во время передачи или хранения.
    • Размер данных: размер части исходного файла, сжатого в этом блоке.
    • Размер памяти: часть распределенного индекса со сжатым размером и смещением, позволяющая извлекать блоки независимо.

Поскольку формат Lzip не сжимает несколько файлов и не сохраняет их метаданные, он часто используется с комбинацией утилиты tar.

Структура файла .LZ

Популярность формата LZ

Формат архива LZ, основанный на алгоритме сжатия Лемпеля-Зива, стал основополагающей технологией в мире сжатия данных. Его широкое распространение объясняется его простотой, эффективностью и способностью достигать значительных коэффициентов сжатия, особенно для данных с повторяющимися шаблонами. Методы сжатия на основе LZ были включены в различные форматы файлов и инструменты сжатия, что делает формат LZ универсальным и важным компонентом в процессах хранения, передачи и архивирования данных. Хотя появились новые алгоритмы сжатия, такие как LZMA и Brotli, формат LZ остается актуальным благодаря балансу скорости и эффективности сжатия.
В средах UNIX и Linux сжатие LZ часто используется в сочетании с другими инструментами, такими как tar, для создания сжатых архивов для распространения программного обеспечения и резервного копирования данных. Его интеграция в многочисленные утилиты сжатия обеспечила его постоянное использование на различных платформах, включая Windows и macOS. Хотя формат LZ, возможно, не так широко известен, как другие форматы сжатия, такие как ZIP или GZIP, его влияние на технологию сжатия данных неоспоримо, и он продолжает использоваться в различных сценариях, где необходимо быстрое и надежное сжатие.

Примеры использования LZ-архивов

В этом разделе представлены примеры кода, демонстрирующие, как сжимать и открывать архивы LZ с помощью C#, Java и Python.NET. В этих примерах для управления файлами LZ используются библиотеки и классы, такие как LzipArchive, что иллюстрирует практическое использование сжатия LZ в современных средах программирования.

Compresses a file into .LZ archive using the LzipArchive class in C#.

    using (LzipArchive archive = new LzipArchive())
    {
        archive.SetSource("data.bin");
        archive.Save("data.bin.lz");
    }

Extract LZip Archive using C#

    using (FileStream sourceLzipFile = File.Open("data.bin.lz", FileMode.Open))
    {
        using (FileStream extractedFile = File.Open("data.bin", FileMode.Create))
        {
            using (LzipArchive archive = new LzipArchive(sourceLzipFile))
            {
                archive.Extract(extractedFile);
            }
        }
    }

Compresses a file into .LZ archive using the LzipArchive class in Java.

    try (LzipArchive archive = new LzipArchive()) {
        archive.setSource("data.bin");
        archive.save("data.bin.lz");
    }

Extract LZip Archive using Java

    try (FileInputStream sourceLzipFile = new FileInputStream("data.bin.lz")) {
        try (FileOutputStream extractedFile = new FileOutputStream("data.bin")) {
            try (LzipArchive archive = new LzipArchive(sourceLzipFile)) {
                archive.extract(extractedFile);
            }
        }
    } catch (IOException ex) {
    }

Compresses a file into .LZ archive using the LzipArchive class using Python.Net

    with aspose.zip.lzip.LzipArchive() as archive:
        archive.set_source("data.bin")
        archive.save("data.bin.lz")

Extract Lzip Archive using Python.Net

    with io.FileIO("data.bin.lz", "rb") as source_lzip_file:
        with io.FileIO("data.bin", "x") as extracted_file:
            with aspose.zip.lzip.LzipArchive(source_lzip_file) as archive:
                archive.extract(extracted_file)

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Дополнительная информация

Часто Задаваемые Вопросы

1. Поддерживается ли формат архива LZ во всех операционных системах?

Формат архива LZ поддерживается на нескольких платформах, включая UNIX, Linux, Windows и macOS. Хотя чаще всего это связано с UNIX-подобными средами, инструменты и библиотеки, обрабатывающие LZ-архивы, доступны для всех основных операционных систем.

2. Каковы преимущества использования архивов LZ?

Архивы LZ известны своей эффективностью при сжатии данных с повторяющимися шаблонами, предлагая хороший баланс между скоростью сжатия и уменьшением размера файла. Их легко реализовать, что делает их надежным выбором для быстрого сжатия данных, особенно при распространении программного обеспечения, резервном копировании данных и передаче по сети.

3. Могу ли я сжать несколько файлов в один архив LZ?

Формат LZ обычно используется для сжатия отдельных файлов. Чтобы сжать несколько файлов, вам сначала необходимо объединить их в архив (например, tar-архив с использованием tar), а затем сжать полученный архивный файл с помощью LZ-сжатия. Этот процесс распространен в средах UNIX и Linux.