Что такое формат файла AR?
Формат архива .ar восходит к Unix Version 1 (1971), созданному в Bell Labs как оригинальный архиватор Unix. Файл .ar объединяет несколько файлов-членов, каждому из которых предшествует фиксированный 60-байтовый ASCII-заголовок, содержащий имя члена, время изменения, права доступа и размер в байтах. Каждый архив начинается с 8-байтовой магической строки !<arch>, за которой следует символ перевода строки (0x0A).
По умолчанию формат хранит содержимое без сжатия. Существует два основных варианта:
- Вариант BSD (используется в macOS) расширяет длинные имена файлов непосредственно после заголовка каждого члена.
- Вариант System V/GNU (используется в Linux) хранит длинные имена в специальном члене
//и добавляет индексную запись символа/для эффективного поиска во время компоновки.
Сегодня .ar чаще всего встречается в виде статических библиотек .a в Linux и macOS, где стандартной реализацией является инструмент ar из GNU binutils. Пакеты Debian .deb также являются архивами ar - переименование .deb и его извлечение открывает внутренние компоненты control.tar и data.tar. Распространенные команды ar: ar rcs libfoo.a *.o создает архив, ar t archive.ar выводит список содержимого, а ar x archive.ar извлекает файлы.
Безопасность и защита
РИСК: LOWАрхивы AR сами по себе являются контейнерами без исполняемой семантики - они не могут автоматически запускать код. Однако файлы внутри могут быть скомпилированными объектными файлами или исполняемыми файлами, которые могут быть вредоносными. При извлечении архива ar из ненадежного источника проверяйте извлеченные файлы перед их запуском. Статические библиотеки, скомпонованные с вашими бинарными файлами, становятся их частью; подделанная статическая библиотека является вектором атаки на цепочку поставок. Всегда проверяйте контрольные суммы при загрузке архивов инструментария, содержащих библиотеки .a/.ar.
Детали формата
в двух словах- Пакет Debian (.deb) - Файл .deb - это архив ar, содержащий члены control.tar.* и data.tar.*; контейнер ar прозрачен для конечных пользователей (его обрабатывает dpkg).
- Статическая библиотека .a (тот же формат, другое расширение) - В Linux/macOS .a - это стандартное расширение для статических библиотек в формате ar; .ar встречается реже, но идентичен.
Программы, открывающие файлы AR
Технические подробности
глубокая спецификация| Магические байты | 21 3C 61 72 63 68 3E 0A - ASCII-строка !<arch> плюс перевод строки (0x0A) со смещением 0 |
| MIME-тип | application/x-archive |
| Размер заголовка члена | 60 байт (фиксированная ширина, поля в кодировке ASCII) |
| Структура полей заголовка | Имя файла 16 Б, время изменения 12 Б, UID 6 Б, GID 6 Б, режим 8 Б, размер 10 Б, магическое число 2 Б |
| Выравнивание членов | Граница 2 байта; члены нечетной длины дополняются одним символом перевода строки (0x0A) |
| Сжатие | Отсутствует по умолчанию - файлы хранятся дословно и без сжатия |
| Проверка целостности | В формате ar отсутствуют контрольные суммы на уровне членов или архива |
| Лимит имени файла | 16 символов в фиксированном заголовке; неограниченно через расширение BSD или таблицу членов System V // |
| Варианты формата | BSD (macOS): встроенные расширенные имена; System V/GNU (Linux): таблица членов // для длинных имен |
| Индекс символов GNU | GNU ar добавляет член таблицы символов / в начало архивов .a для эффективного поиска при компоновке |
| Поддержка тонких архивов | Тонкие архивы GNU используют магическое число 21 3C 74 68 69 6E 3E 0A (!<thin>) и хранят пути к файлам, а не данные |
| Основное применение | Статические библиотеки .a (Linux, macOS), пакеты .deb Debian, пакеты .ipk OpenWrt |
| Платформы | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Выпущен | 1971 (Unix v1, as the original Unix archiver) |
| Последняя версия | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Открыть стандартное | Да · без роялти |
| Спецификация | pubs.opengroup.org |
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах AR.