Vad är filformatet AR?
Arkivformatet .ar går tillbaka till Unix Version 1 (1971) och skapades vid Bell Labs som det ursprungliga arkiveringsverktyget för Unix. En .ar-fil sammanfogar flera medlemsfiler, där varje fil föregås av ett fast 60-byte ASCII-huvud som registrerar medlemmens namn, ändringstid, behörigheter och storlek i bytes. Varje arkiv börjar med den 8-byte långa magiska strängen !<arch> följt av ett radbrytningstecken (0x0A).
Formatet lagrar medlemmar okomprimerade som standard. Två huvudvarianter förekommer:
- BSD-varianten (används på macOS) utökar långa filnamn direkt efter varje medlemshuvud.
- System V/GNU-varianten (används på Linux) lagrar långa namn i en speciell
//-medlem och lägger till en/-symbolindexpost för effektiv uppslagning vid länkning.
Idag påträffas .ar oftast som statiska bibliotek med filändelsen .a på Linux och macOS, där verktyget ar från GNU binutils är standardimplementationen. Debian .deb-paket är också ar-arkiv - om man byter namn på en .deb och extraherar den avslöjas de inre medlemmarna control.tar och data.tar. Vanliga ar-kommandon: ar rcs libfoo.a *.o skapar ett arkiv, ar t archive.ar listar medlemmar och ar x archive.ar extraherar dem.
Säkerhet & trygghet
RISK: LOWAR-arkiv i sig är behållare utan exekverbar semantik - de kan inte köra kod automatiskt. Medlemmarna inuti kan dock vara kompilerade objektfiler eller körbara filer som kan vara skadliga. När du extraherar ett ar-arkiv från en obekräftad källa bör du inspektera de extraherade filerna innan du kör dem. Statiska bibliotek som länkas in i dina binärer blir en del av dessa binärer; ett manipulerat statiskt bibliotek är en vektor för attacker mot leveranskedjan (t.ex. kompromitterade arkiv i verktygskedjan). Verifiera alltid kontrollsummor när du laddar ner arkiv med verktygskedjor som innehåller .a/.ar-bibliotek.
Formatdetaljer
i ett nötskal- Debian-paket (.deb) - En .deb-fil är ett ar-arkiv som innehåller medlemmarna control.tar.* och data.tar.*; ar-behållaren är transparent för slutanvändare (dpkg hanterar den).
- .a statiskt bibliotek (samma format, annan filändelse) - På Linux/macOS är .a den konventionella filändelsen för statiska bibliotek i ar-format; .ar är mindre vanligt men identiskt.
Program som öppnar AR-filer
Tekniska detaljer
djup specifikation| Magiska bytes | 21 3C 61 72 63 68 3E 0A - ASCII-sträng !<arch> plus radbrytning (0x0A) vid offset 0 |
| MIME-typ | application/x-archive |
| Huvudstorlek per medlem | 60 bytes (fält med fast bredd, ASCII-kodade) |
| Layout för huvudfält | Filnamn 16 B, ändringstid 12 B, UID 6 B, GID 6 B, läge 8 B, storlek 10 B, magi 2 B |
| Medlemsjustering | 2-byte gräns; medlemmar med ojämn längd fylls ut med ett enda radbrytningstecken (0x0A) |
| Komprimering | Ingen som standard - medlemsfiler lagras ordagrant och okomprimerat |
| Integritetskontroll | Inga kontrollsummor på medlems- eller arkivnivå i ar-formatet |
| Gräns för filnamn | 16 tecken i fast huvud; obegränsat via BSD-tillägg eller System V // medlemstabell |
| Formatvarianter | BSD (macOS): inbäddade utökade namn; System V/GNU (Linux): // medlemstabell för långa namn |
| GNU-symbolindex | GNU ar lägger till en / symboltabellsmedlem i .a-arkiv för effektiv symboluppslagning vid länkning |
| Stöd för tunna arkiv | GNU tunna arkiv använder magi 21 3C 74 68 69 6E 3E 0A (!<thin>) och lagrar filsökvägar, inte data |
| Primära användningsområden | .a statiska bibliotek (Linux, macOS), .deb Debian-paket, .ipk OpenWrt-paket |
| Plattformar | Linux, macOS, FreeBSD, Solaris, AIX, Windows (MinGW/Cygwin/WSL) |
| Släppt | 1971 (Unix v1, as the original Unix archiver) |
| Senaste version | POSIX.1-2017 specifies the format; GNU ar (binutils) is current implementation |
| Öppen standard | Ja · royaltyfri |
| Specifikation | pubs.opengroup.org |
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om AR-filer.