Ar (Unix)
aus Wikipedia, der freien Enzyklopädie
Der korrekte Titel dieses Artikels lautet „ar“. Diese Schreibweise ist aufgrund technischer Einschränkungen derzeit nicht möglich. |
ar ist ein einfaches Archivierungsprogramm unter Unix sowie der Name des vom Programm benutzten Dateiformates. Die Art und Weise, wie Dateien im Archiv gespeichert werden und die Kommandozeilen-Parameter sind mit tar vergleichbar, wobei letzteres sehr viel leistungsfähiger als ar ist.
Inhaltsverzeichnis |
[Bearbeiten] Verwendung
ar wird unter Unix/Linux hauptsächlich für statische Programmbliotheken benutzt, wobei ein solches Archiv mehrere Objektdateien enthält, die beim Linken eines Programmes in dieses eingebunden werden. Auch basiert Debians Paketformat deb auf ar. Prinzipiell kann man ar allerdings auch als normales Programm zur Archivierung benutzen, wobei man allerdings einige Einschränkungen in Kauf nehmen muss, wie im Abschnitt Dateiformat erläutert ist.
[Bearbeiten] Beispiel-Aufrufe
Es gibt anscheinend unterschiedliche ar-Varianten, weshalb die folgenden Beispiele, getestet mit Darwins ar, unter Umständen leicht modifiziert werden müssen.
ar -q archiv.a datei1 datei2
Mit diesem Befehl wird, falls die Datei noch nicht existiert, das Archiv archiv.a angelegt und mit den Dateien datei1 und datei2 befüllt, wobei keine Pfadangabe in der Datei hinterlegt wird. Zum Entpacken heißt es dann
ar -x archiv.a
Möchten sie sich anschauen, welche Dateien im Archiv enthalten sind, rufen sie ar mit dem Parameter -t auf:
% ar -t archive.a datei1 datei2
Der Parameter -v steht auch hier für verbose und bewirkt mit -t eine ls-ähnliche Ausgabe:
% ar -tv archive.a rw-r--r-- UID/GID BYTES Feb 9 19:21 2006 datei1 rw-r--r-- UID/GID BYTES Feb 9 19:22 2006 datei2
UID sind dabei die User-ID, die numerischen Darstellungen der Benutzernamen, GID sind die Gruppen-ID, unter denen die Dateien angelegt wurden und BYTES sind die Dateigrößen.
[Bearbeiten] Dateiformat
Das von ar benutzte Dateiformat ist nicht standardisiert, weshalb es einige zueinander inkompatible Varianten geben kann. Im Folgenden ist BSD-ar beschrieben:
ar-Dateien beginnen mit den Magic-Bytes !<arch>\n
, wobei \n
ein Newline-Zeichen darstellt, gefolgt von den archivierten Dateien mit Header. Der Header steht dabei in einer Zeile vor dem jeweiligen Dateiinhalt, die die Metadaten Dateiname (16 Zeichen), letzte Zugriffszeit als Unix-Timestamp (12 Zeichen), User- und Gruppen-ID (je 6 Zeichen), Dateizugriffsrechte (8 Zeichen) sowie die Dateigröße (10 Zeichen) enthält; diese Struktur kann man auch in der Header-Datei /usr/include/ar.h finden. Alle Datensätze sind im Zweifelsfall mit Leerzeichen aufgefüllt, um die genannten Längen zu erreichen. Falls die Datei eine ungerade Anzahl Bytes groß ist, wird als letztes Zeichen ein Newline zum Auffüllen eingefügt.
Das Feld, welches den Dateinamen enthält, bietet als einziges eine Möglichkeit, mit längeren Werten umzugehen: Wenn der Dateiname zu lang ist, enthält dieses Feld die Zeichenfolge #1/
gefolgt von der tatsächlichen Länge des Dateinamens, der dann in der folgenden Zeile steht.
Der Dateiinhalt wird von einem Newline beendet, auf welches ggf. der Header der nächsten Datei folgt.
[Bearbeiten] Einschränkungen
- ar speichert Dateien ohne ihren Pfad ab, folglich wird eine als
ordner/unter/datei
archivierte Datei später alsdatei
im aktuellen Verzeichnis extrahiert. - Durch die Beschränkung der Länge des Timestamps (12 Zeichen) kann es in der Zukunft Probleme geben, nämlich wenn der Timestamp den Wert von 999'999'999'999 Sekunden überschreitet. Dies wird jedoch erst am 27. September des Jahres 33658 der Fall sein, vorausgesetzt, die C-Bibliothek benutzt 64bit Zeitstempel. Siehe auch Jahr-2038-Problem.
- Mit der Begrenzung des Feldes für die Dateigröße auf 10 Zeichen können keine Dateien mit mehr als 10 GB minus 1 Byte (≈9.31 GiB) gespeichert werden.
[Bearbeiten] Siehe auch
- Übersicht wichtiger Unix-Kommandos
[Bearbeiten] Weblinks
- Linux/GNU-Manpage des Programmes ar bei FreeBSD
- Darwin-Manpage des ar-Dateiformates