Формат файла tar.Z, структура, заголовок

Я пытаюсь выяснить расположение файла tar.Z. (так называемый файл.taz. сжатый файл tar).

этот файл может быть создан с опцией tar -Z или с помощью утилиты сжатия unix (результат один и тот же)

Я попытался погуглить какой-нибудь документ об этой файловой структуре, но документации об этой файловой структуре нет.

Я знаю, что это сжатый файл LZW и начинается с его магического числа "1F 9D", но это все, что я могу понять. кто-то, пожалуйста, расскажите мне более подробно о заголовке файла или что-нибудь.

Меня не интересует, как распаковать этот файл или какая команда linux может обработать этот файл.

Я хочу знать, это внутренняя структура файла / заголовок / формат / макет. заранее спасибо

3 ответа

Решение

Файл tar.Z Я просто сжатый файл tar, так что вы найдете только магическое число 1F 9D, сообщающее вам распаковать его.

В несжатом виде вы можете прочитать заголовок файла tar:

http://www.fileformat.info/format/tar/corion.htm

Файл.Z сжимается с использованием компрессии и может быть распакован с помощью распаковки (или на некоторых машинах это называется uncompress.real). Этот файл.Z может содержать любые данные. .tar.Z или.taz - это просто файл.tar, который сжимается при сжатии.

Первые 2 байта (MAGIC_1 и MAGIC_2) используются для проверки того, является ли файл.Z действительно файлом.Z, а не чем-то другим со случайно таким же расширением. Эти байты жестко закодированы в источниках.

Третий байт является байтом настроек и содержит 2 значения:

  • Наиболее значимым битом является блочный режим.
  • Последние 5 бит указывают максимальный размер таблицы кодов (таблица кодов используется для сжатия lzw).

Исходный код: BLOCK_MODE=0x80; = байт 3 (BIT|BLOCK_MODE); и BIT находится в блоке if/else, где он равен 12..16.

Если включен блочный режим, в таблице кодов объект будет добавлен в месте 256 (помните, что 0..255 заполнены значениями 0..255), и это будет содержать знак CLEAR. Таким образом, всякий раз, когда знак CLEAR получен из потока данных из файла, кодовая таблица должна возвращаться в исходное состояние (поэтому в ней всего 0..256).

Максимальный размер кода указывает количество битов, которое может быть в таблице кодов. Когда достигнут максимум, в таблицу кодов больше не добавляются объекты. Таким образом, если максимальный размер кода равен 0b00001100, это означает, что таблица кодов может содержать только 12 битов, поэтому максимум 2^12=4096 объектов.

Максимально возможное количество, которое используется компрессом, составляет 16 бит. Это означает, что в этом поле настроек есть 2 бита, которые не используются.

После этих 3 байтов начинаются необработанные данные LZW. Поскольку таблица LZW начинается с 9 битов, 4-й байт будет таким же, как первый байт ввода (в случае файла.tar.Z или файла taz этот байт будет первым байтом несжатого.tar файл).

Q: этот файл может быть создан с опцией tar -Z или с помощью утилиты сжатия unix (результат тот же)

A: Да. "tar -cvf myfile.tar myfiles; сжатие myfile.tar" эквивалентно использованию "-Z". Еще лучшим выбором часто является "j" (используя BZip вместо Zip)

Q: Какова структура файла tar?

A: Есть много ссылок и много свободно доступных источников. Например:

В: Каков формат сжатого файла Unix?

A: Опять же: много ссылок; легко найти образец исходного кода:

Для.tgz (сжатого tar-файла) вам понадобятся оба формата: сначала вы должны распаковать его, а затем распаковать. Утилита "tar" сделает оба за вас, автоматически:)

Другие вопросы по тегам