Druckversion | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Werkzeuge zur Archivierung ermöglichen in erster Linie das »Packen« mehrerer Dateien in eine einzige Datei. Darüber hinaus bestehen Möglichkeiten, die Daten zu komprimieren. Damit verringert sich nicht nur die Netzlast bei eventueller Datenübertragung, sondern es spart so manchen Platz auf der heimischen Festplatte. Bei heutigen Festplattenkapazitäten mag dies überflüssig anmuten, aber so manche Datei lässt sich in gepackter Form noch auf eine einzelne Diskette platzieren. Zur Demonstration der Güte der einzelnen Werkzeuge werden die Dateien der Linuxfibel (eine frühe Version) mit tar archiviert und anschließend mittels gebräuchlicher »Kompressoren« gepackt. Die dabei berechneten Kompressionsraten dienen einzig der Veranschaulichung, letztlich hängen sie stark von der Art der Dateien ab. Die hier getroffenen Aussagen gelten im Wesentlichen für Textdateien. Die verwendete Archivdatei »Linuxfibel.tar« ist ungepackt knapp 2 Megabytes groß (Stand: Ende 2000).
Die Liste der unterstützten Archivierer und Komprimierungstool ist unter Linux umfangreicher als es dieser Abschnitt vermitteln kann. Alte Bekannte wie »lharc«, »zoo« oder »unrar« wurden auch zwar Linux portiert, haben es jedoch zu keiner nennenswerten Verbreitung gebracht. Wir kehren ihre Diskussion schlicht und einfach unter den Tisch.
Dieses Programm basiert auf dem Burrows-Wheeler blockorientierten Kompressionsalgorithmus mit Huffman Kodierung und ist derzeit das effektivste Komprimierungsprogramm unter Linux. Allerdings erreichte es bislang nicht die Verbreitung eines »gzip«, obwohl es in keiner Standardinstallation fehlt. Eine Datei wird mit folgendem Befehl komprimiert:
bzip2 versieht seine komprimierten Dateien mit der Endung ».bz2« und erwartet dieses auch im Falle eines Entpackens. Greifen Sie auf das Kommando »file« zurück, falls sich das Format einer Datei einmal nicht anhand der Endung offenbart. Um die Kompressionsrate zu berechnen, bemühen wir den Taschenrechner bc
Somit wird eine Kompressionsrate von 59.6% erreicht. Entpackt wird diese Datei mittels
Der Komprimierungsklassiker unter UNIX kennzeichnet von ihm gepackte Dateien standardmäßig mit der Endung ».Z«. compress beruht auf einer älteren Version des Lempel-Ziv-Algorithmus. Seine Kompressionsraten sind um einiges geringer als beim de facto Linux-Standardpacker gzip, dennoch existiert das Programm auf jedem UNIX-System.
Die erzielte Kompressionsrate beträgt ganze 38.8%, was nicht mehr ganz dem Stand der Technik entspricht... Entkomprimiert wird mit dem Kommando uncompress:
Mittels cpio (copy in and out) lassen sich aus Dateien und Verzeichnisbäumen »cpio-Archive« erzeugen. Dabei liest cpio die zu archivierenden Dateien nicht von der Kommandozeile, wie etwa »tar«, sondern von der Standardeingabe. Das hört sich zwar kompliziert an, ist es aber keinesfalls. Denn so etwas lässt sich sehr leicht mit den Kommando ls oder find und einer Pipe realisieren: Um alle html-Seiten der Linux-Fibel zu archivieren, ist die Option -o bzw. --create zu benutzen:
Zur Archivierung ganzer Verzeichnishierarchien bietet sich die Kombination mit dem Kommando find an:
Um das Archiv wieder auszupacken, verwendet man die Option -i bzw. --extract:
Wie zu erkennen ist, liest »cpio« ebenso seine eigenen Archive von der Standardeingabe. Die Option -t bzw. --list ermöglicht das Betrachten des Inhalt eines »cpio-Archives«:
Alternativ eignet sich »cpio« in Verbindung mit der Option -p (»--pass-through«) zum Kopieren von Dateien in ein Verzeichnis:
Letzteres Kommando entspricht einem einfachen Kopierbefehl mittels cp, nämlich »cp -r ~user/doc/* /tmp/user/doc«. Warum also so umständlich? Durch die Kombination mit find ist »cpio« um einiges flexibler. Die vielfältigen Optionen von letzterem Kommando helfen ungemein, um tiefversteckte Dateien schnell und selektiv zu finden. Das wirkt sich dann natürlich vorteilhaft auf »cpio« aus. Zusätzliche Optionen zu den oben genannten sind die folgenden: -m bzw. --preserve-modification-time Zeitstempel bleiben erhalten -v bzw. --verbose Anzeige der gerade bearbeitende Datei -d bzw. --make-directories Notwendige Verzeichnisse werden erstellt -H Format bzw. --format=FORMAT Format des cpio-Archives (-H ustar : POSIX-tar Format)
Dieses Kommando steht nur den Benutzern von Debian-Linux zur Verfügung. Es erledigt im Wesentlichen dieselbe Funktionalität wie das verbreitete rpm anderer Distributionen ((De)Installation, Versionskontrolle, Paketverwaltung, Update), nur arbeitet es mit *.deb-Archiven zusammen. Das Paketmanagement bleibt dem Administrator vorbehalten. Der »normale« Benutzer muss sich mit Abfragen zu Paketinformationen begnügen. Einen Überblick über alle installierten Pakete verschafft die Option -l, durch Anfügen eines Paketnamens beschränkt sich die Ausgabe auf dieses.
Eine Liste der in einem Paket enthaltenen Dateien bringt die Option -L zum Vorschein:
Und schließlich lässt sich mit der Option -S nach dem Paket suchen, in dem die angegebene Datei enthalten ist:
Der Dateiname darf die shellüblichen Metazeichen enthalten, allerdings müssen diese vor der Interpretation durch die Shell geschützt werden (z.B. durch Voranstellen des Backslash).
Diese GNU-Version des alt bekannten zip ist der Standardpacker unter Linux. Er basiert auf der Lempel-Ziv-Kodierung (LZ77) und seine gepackten Dateien enden i.d.R. auf ».gz«.
Die Option »-l« aktiviert quasi den »gzip«-eigenen Taschenrechner, der die Kompressionsrate gleich mit ausgibt. In diesem Fall sind es 56.4%. Entpacken geschieht durch das Kommando »gzip -d« (»--decompress«) oder einfach mit gunzip:
Auf den ersten Blick ähneln die »rpm«-Pakete des RedHat Package Managers den hier behandelten tar oder zip-Archiven. Sie bestehen genauso aus einer Sammlung von Dateien und Dateiinformationen. Allerdings steht eine gänzlich andere Philosophie dahinter. Die durch rpm-Pakete installierten Dateien, sprich Programme, Konfigurationsdateien, Bibliotheken u.a., werden in einer Datenbank fest gehalten. Hierdurch wird es erst möglich, Paketzugehörigkeiten, Versionskontrolle, Aktualisierung und saubere (!) Deinstallation zu realisieren. Weiterhin werden Abhängigkeiten von Paketen berücksichtigt. Installation, Aktualisierung und Löschen von rpm-Paketen ist Aufgabe des Systemadministrators. Genauso fällt das Erzeugen ebensolcher in seinen Aufgabenbereich. In diesem Kapitel, das auf die Belange eines Einsteigers gemünzt ist, soll nur auf die Abfrage von Paketen und Dateien eingegangen werden. Eine Abfrage, eine --query, entspricht im Unix98 Standard der Option -q. Um bspw. herauszufinden, zu welchen Paket das Programm vi gehört, wird die »Anfrage« mit einer zusätzlichen Option -f bzw. --file kombiniert:
Im Paket »vim« ist dieser Editor zu finden. Dieses Paket selbst ist in der Version 5.4 Release 13 installiert. Bevor genauer auf dieses Beispiel eingegangen wird, werden erst einmal die wichtigsten Optionen zur Paketabfrage aufgelistet: -l bzw. --list Auflisten aller Dateien des Paketes -i Informationen zum Paket -R bzw. --requires Zeigt alle benötigten Programme -s bzw. --status Zeigt Status aller Dateien des Paketes (normal, not installed oder replaced) -a bzw. --all Zeigt alle installierten Pakete an (ohne zusätzliche Paketangabe) Welche Dateien sind durch das Paket »vim« installiert? Die Antwort verrät folgende Anfrage:
Welche Informationen über das Paket selbst sind verfügbar?
Diese Abfragekommandos können auch auf rpm-Pakte angewendet werden, die als Dateien vorliegen. Mit
lässt sich erfragen, welche Programme bzw. Pakete notwendig für die Installation dieser »tollen Software« sind.
Dieses Programm wurde ursprünglich zur Verwaltung von Bandarchiven benutzt, daher auch der Name tar (tape archiver). Der heutige Funktionsumfang ermöglicht ebenso das Schreiben zu archivierender Daten in Dateien oder gar auf unformatierte Disketten (/dev/fd0)... Letzteres hat den großen Vorteil, dass die Daten unabhängig vom Filesystem sind, d.h. jedes UNIX-Betriebssystem wäre befähigt, auf die Daten zugreifen. Folgende Optionen sind die Wesentlichsten zur Verwaltung von so genannten tar-Archiven: -c bzw. --compress Archivieren -t bzw. --list Anzeigen -x bzw. --extract Extrahieren -r bzw. --append Anfügen -u bzw. --update Austausch nur neuerer Dateien --delete Löschen -f DATEI bzw. --file=DATEI Archivdatei (auch /dev/fd0) -C VERZEICHNIS bzw. --directory=VERZEICHNIS Ins VERZEICHNIS wechseln -v bzw. --verbose Ausführlichere Anzeige -M bzw. --multi-volume Falls ein Band nicht reichen sollte Um unser obiges Beispielarchiv der Linuxfibel zu erzeugen, wurden folgende Kommandos ausgeführt:
Mit obigem Kommando werden alle Dateien mit der Endung ».htm« und das Verzeichnis »images« einschließlich Inhalt in der Datei »Linuxfibel.tar« archiviert. Ob alles geklappt hat, verrät:
Bei zusätzlicher Verwendung der Option -v im obigen Kommando werden Information über Dateigrößen, Eigentümer, Zeitmarke und Zugriffsrechte mit angezeigt. Wenn nicht anders angegeben, RTFM, bleiben die Dateiattribute erhalten. Ohne Dateiangaben wird alles extrahiert. Betrifft dies nur bestimmte Dateien, so erfolgt dies wie folgt:
Normalerweise werden Archive mit »tar« nicht komprimiert. Man muss, wie in den Beispielen auf dieser Seite, das Archiv explizit selbst packen. Das GNU-tar jedoch unterstützt folgende Packer mittels der aufgelisteten Optionen: -z bzw. --gzip -Z bzw. --compress -j bzw. --bzip2 bzip2 (bei älteren Versionen von tar I (großes i) anstatt j!)
Anzumerken ist, dass in einem gepackten Archiv, auch wenn dies durch »tar« selbst komprimiert wurde, keine Dateien hinzugefügt, erneuert oder gelöscht werden können. Dies kann nur im unkomprimierten tar-Archiv geschehen.
Als letzten Archivierungs- und Kompressionstool sei hier zip erwähnt. Es ist kompatibel mit dem unter MS-Windows weit verbreiteten »PKZIP« (Phil Katz ZIP) und kann daher gut zum Datenaustausch genutzt werden. Um die Linuxfibel zu archivieren, wird folgendes Kommando aufgerufen:
Auch wenn die Online-Hilfe von zip (»man zip« oder »zip -h«) anderer Meinung ist, klappt das rekursive Archivieren nur mit der Option -r und nicht mit »-R«. Groß- und Kleinschreibung ist sowieso ein Problem bei Kompatibilätsversuchen mit MS-DOS. Gut, dass es dafür noch die Optionen »-L« und »-U« gibt, womit Klein- bzw. Großschreibung erzwungen werden kann. Die Kompressionsrate beträgt im Beispiel 48.3%. Entpacken funktioniert mit unzip:
»unzip« ermöglicht ebenso das Betrachten des Archivinhalts. Hierzu ist die Option -t zu verwenden, die gleichzeitig auch die einzelnen Dateien des Archivs testet.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Korrekturen, Hinweise? |