Формат файла tar.Z, структура, заголовок
Я пытаюсь выяснить расположение файла tar.Z. (так называемый файл.taz. сжатый файл tar).
этот файл может быть создан с опцией tar -Z или с помощью утилиты сжатия unix (результат один и тот же)
Я попытался погуглить какой-нибудь документ об этой файловой структуре, но документации об этой файловой структуре нет.
Я знаю, что это сжатый файл LZW и начинается с его магического числа "1F 9D", но это все, что я могу понять. кто-то, пожалуйста, расскажите мне более подробно о заголовке файла или что-нибудь.
Меня не интересует, как распаковать этот файл или какая команда linux может обработать этот файл.
Я хочу знать, это внутренняя структура файла / заголовок / формат / макет. заранее спасибо
3 ответа
Файл tar.Z Я просто сжатый файл tar, так что вы найдете только магическое число 1F 9D, сообщающее вам распаковать его.
В несжатом виде вы можете прочитать заголовок файла tar:
Файл.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" сделает оба за вас, автоматически:)