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

Формат архива tar предлагает надежный способ хранения файлов. Он сохраняет исходные данные побайтно, добавляя в начале 512-байтовый заголовок. Размеры файлов также корректируются таким образом, чтобы они аккуратно помещались в блоки по 512 байт. Интересно, что в заголовок включена встроенная контрольная сумма для обнаружения ошибок. Хотя стандартная утилита tar может пропустить поврежденные заголовки (и, следовательно, связанные с ними файлы), она продолжит обработку остальной части архива, гарантируя, что вы по-прежнему сможете получить доступ к неповрежденным файлам.

Информация об архиве TAR

Формат файла tar, сокращение от «ленточный архив», создается утилитой tar в системах UNIX. Он служит архивом для объединения файлов для таких задач, как резервное копирование или распространение. В отличие от форматов сжатых архивов, файлы tar хранят несколько файлов, также известных как tarball, в несжатом формате вместе с метаданными об архиве. Хотя сами файлы tar не сжимаются, их можно сжать с помощью таких утилит, как gzip или bzip2, для эффективного хранения и передачи.
Поскольку формат файла tar сам по себе не имеет встроенного сжатия, архивы tar часто сжимаются с помощью внешних утилит, таких как gzip, bzip2, XZ (с использованием алгоритмов сжатия 7-Zip / p7zip LZMA / LZMA2), Brotli, Zstandard. и подобные инструменты. Такое сжатие помогает уменьшить размер архива для облегчения переносимости и эффективного резервного копирования данных. Сжатые файлы, полученные в результате этого процесса, могут иметь одинарные расширения, например tgz, tbz, txz, tzst, или двойные расширения, например tar.gz, tar.br, tar.bz2, tar.xz, tar.zst.

Эволюция формата архива TAR

Формат архива tar со временем изменился. Новые функции, добавленные в утилиту tar с 1980-х годов, привели к появлению расширений формата, которые включают дополнительную информацию для улучшения функциональности. Ранним форматам tar не хватало единообразия в хранении числовых полей, но в более поздних версиях это было исправлено для повышения переносимости. Это улучшение началось с первого стандарта POSIX для форматов tar в 1988 году.
В POSIX.1 2001 года был представлен «расширенный формат tar» (также известный как tar.h или pax). Этот формат является наиболее гибким и включает в себя функции других спецификаций tar. Это позволяет поставщикам добавлять пользовательские функции с помощью тегов. Хотя в документации подчеркивается, что не все реализации tar могут идеально обрабатывать этот формат, его конструкция гарантирует, что любой инструмент, способный читать архивы «ustar», также может читать большинство архивов «posix». Кроме того, в POSIX.1 2001 было устранено предыдущее ограничение размера файла 8 ГБ для tar-архивов.

Структура ТАР

Архив TAR по своей сути представляет собой последовательность блоков данных. Эти блоки фиксированного размера 512 байт каждый расположены линейно. Чтобы отметить конец архива, есть два последовательных блока, заполненных нулями.
Однако, если рассматривать логически, архив TAR представляет собой серию файловых записей. Каждая запись состоит из нескольких блоков, причем первый блок всегда является заголовком записи. Остальные блоки хранят фактическое содержимое файла.
Внутри заголовка записи
Заголовок записи действует как образец для каждого файла в архиве. Он содержит следующую информацию

  • Имя файла (100 байт): имя файла, хранящегося в этой записи.
  • Разрешения файла (8 байт): разрешения на доступ к файлу, представленные в виде восьмеричной строки.
  • Идентификатор владельца (8 байт): числовой идентификатор пользователя владельца файла (восьмеричный формат).
  • Идентификатор группы (8 байт): числовой идентификатор группы владельца файла (восьмеричный формат).
  • Размер файла (12 байт): размер файла в восьмеричном формате.
  • Время последнего изменения (12 байт): восьмеричная отметка времени последней модификации файла.
  • Контрольная сумма (8 байт): значение контрольной суммы, используемое для проверки целостности данных заголовка.
  • Тип файла (1 байт): указывает тип сохраняемого файла (обычный файл, жесткая ссылка или символическая ссылка).
  • Имя связанного файла (переменная длина): если запись представляет собой ссылку (жесткую или символическую), в этом поле сохраняется имя связанного файла.

Преимущества этого формата

  • Универсальность. TAR — это универсальный формат, позволяющий хранить несколько файлов и каталогов в одном архивном файле, что делает его подходящим для различных задач резервного копирования и распространения.
  • Сохранение атрибутов файлов TAR сохраняет важные атрибуты файлов, такие как разрешения, право собственности и временные метки, гарантируя, что архивированные данные сохранят целостность и удобство использования.
  • Простота. Структура файлов TAR проста и понятна, что упрощает работу и обработку. Это упрощает программирование и автоматизацию задач, связанных с архивами TAR.

Операции, поддерживаемые архивом TAR

Aspose.ZIP позволяет пользователю извлечь конкретную запись или весь архив. Для Aspose.ZIP для .NET. Вы можете использовать TarArchiveClass, чтобы открыть файл .tar.gz, а затем перебирать его записи, извлекая их в нужное место. Для Aspose.ZIP для Java Аналогичный подход использует TarArchive для открытия файла .tar.gz и извлечения записей.

TAR-файл — внутренняя структура

Файлы сегментов хранят необработанные данные о сегменте. Хотя существуют разные типы сегментов, файлы TAR различают только сегменты данных и массовые сегменты. Массовые сегменты сохраняются «как есть» в файле TAR.
Однако сегменты данных проверяются на предмет ссылок на другие сегменты или необработанный двоичный контент. Эти ссылки просто сохраняются в виде списка уникальных идентификаторов (UUID) в сегменте данных. Сегменты, на которые имеются ссылки, могут располагаться либо внутри текущего файла TAR, либо снаружи.
Внутренние ссылки находятся путем проверки индекса файла TAR. Внешние ссылки требуют внешнего инструмента для поиска сегмента в другом файле TAR. Список сегментов, на которые имеются ссылки в сегменте данных, сохраняется в файле графика для более быстрого поиска. Этот список упорядочен для оптимизации процесса поиска.

TAR-файл — внутренняя структура

Внутренняя структура архива

  • Метаданные файла. Подобно tar-архиву, каждый файл хранит основную информацию, такую ​​как время изменения и разрешения. Однако этот раздел является гибким и позволяет опускать или включать дополнительные детали, такие как списки управления доступом (ACL) или расширенные атрибуты (EA), в зависимости от ваших потребностей. Рекомендуется включать надежную хеш-функцию (например, SHA1) для обычных файлов, чтобы обеспечить целостность данных.
  • Несколько потоков контента. В отличие от традиционных архивов, файлы могут иметь более одного потока данных во внутреннем файле данных. Это полезно для хранения расширенных атрибутов или ветвей ресурсов, связанных с файлом.
  • Заголовки. Внутренний индексный файл содержит заголовки файлов, зеркально отображающие заголовки, разбросанные по всему внутреннему файлу данных. Но при раздельном хранении заголовки индексов должны ссылаться на начальную позицию соответствующих им данных в файле данных. Кроме того, записи каталога в индексе перечисляют содержащиеся в них файлы и соответствующие им смещения во внутреннем файловом индексе.
  • Обоснование дублирования метаданных. Такой выбор конструкции обеспечивает как эффективную потоковую передачу/декодирование данных, так и произвольный доступ к файлам. Кроме того, метаданные хорошо сжимаются, что приводит к минимальным затратам на хранение. Тесты показывают, что метаданные обычно занимают менее 0,3% дискового пространства, поэтому компромисс оправдан.
  • Заголовки блоков. Заголовки блоков, как и внешний файл, содержат информацию о размере блока и последовательность уникальных идентификаторов.

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

API Aspose.ZIP позволяет извлекать архивы в ваших приложениях без необходимости использования каких-либо других сторонних приложений. API Aspose.ZIP предоставляет класс TarArchive для работы с архивами TAR.

Add entries to existing TAR archive via C#

All you need to do is open archive for extraction and add entry to archive .

    using (TarArchive archive = new TarArchive(existing.tar))
    {
        archive.CreateEntry("one_more.bin", data.bin);
        archive.Save(added.tar);
    }

Delete entries from existing TAR archive via .net

Entries of tar archive can be deleted with similar DeleteEntry methods.

using (var archive = new TarArchive("two_files.tar"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.tar");
}

Add files to TAR archive without compression

Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.

    using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
    {
        FileInfo fi1 = new FileInfo("text.txt");
        FileInfo fi2 = new FileInfo("picture.png");
        using (TarArchive archive = new TarArchive())
        {
            archive.CreateEntry("text.txt", fi1);
            archive.CreateEntry("picture.png", fi2);
            archive.Save(tarFile);
        }
    }

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

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

Дополнительная информация о TAR-архивах

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

1. Что такое архив TAR?

Архив TAR, сокращение от Tape Archive, представляет собой формат файла, используемый для объединения нескольких файлов и каталогов в один архивный файл без сжатия. Он обычно используется для резервного копирования и распространения в системах на базе Unix.

2. Каковы преимущества архивов TAR?

TAR может похвастаться универсальностью, поскольку он совместим с большинством операционных систем и программ архивирования, обеспечивая беспрепятственный обмен данными между различными платформами. Его простота заключается в простой структуре архивов TAR, позволяющей легко создавать, извлекать файлы и манипулировать ими. Более того, TAR обеспечивает эффективность, позволяя выполнять сжатие с помощью внешних инструментов, таких как gzip или bzip2, что позволяет пользователям уменьшать размер файла и экономить место для хранения и пропускную способность во время передачи данных.

3. Каковы некоторые ограничения архивов TAR?

Хотя TAR — это универсальный формат файлов, обычно используемый для архивирования и распространения файлов в системах на базе Unix, он имеет некоторые ограничения, о которых следует знать. Во-первых, в TAR отсутствуют встроенные возможности сжатия, а это означает, что вам потребуются дополнительные инструменты, такие как gzip или bzip2, для уменьшения размера файлов. Во-вторых, архивы TAR не имеют встроенных функций шифрования, поэтому, если вам требуется безопасность данных, вам придется полагаться на внешние инструменты для защиты паролем. Наконец, TAR имеет ограниченную поддержку сохранения атрибутов файлов, таких как метки времени и разрешения исходных файлов, что может повлиять на целостность архивных данных.