Kompression unter Linux: Unterschied zwischen den Versionen
(→tar) |
K (Änderungen von Benutzer:84.149.138.162 (Beiträge) rückgängig gemacht und letzte Version von Benutzer:Martin von Wittich wiederhergestellt) |
||
Zeile 35: | Zeile 35: | ||
** <tt>z</tt> für die zusätzliche Kompression mit gzip, | ** <tt>z</tt> für die zusätzliche Kompression mit gzip, | ||
** <tt>f</tt> für die Angabe eines Dateinamens, unter dem das Archiv erstellt werden soll. | ** <tt>f</tt> für die Angabe eines Dateinamens, unter dem das Archiv erstellt werden soll. | ||
− | * <cmdpre>tar | + | * <cmdpre>tar jzf source.tar.bz2 *.c *.h</cmdpre> erstellt dem entsprechend das selbe Archiv wie das obige Kommando; <tt>j</tt> teilt hierbei dem Programm mit, dass eine Kompression mit bzip2 gewünscht wird. |
* <cmdpre>tar xzf source.tar.gz</cmdpre> packt das Archiv <tt>source.tar.gz</tt> aus. Dabei wird erst die komprimierte Datei mit gzip entpackt (dazu der Schalter <tt>z</tt>). Anschließend wird das in der <tt>.gz</tt>-Datei enthaltene tar-Archiv entpackt. Das <tt>x</tt> steht hier für ''extract'', also das Auspacken eines Archivs. Dabei werden auch die Pfadinformationen berücksichtigt, die im Archiv gespeichert sind, die benötigten Verzeichnisse werden ggf. erstellt und vorhandene Dateien überschrieben! | * <cmdpre>tar xzf source.tar.gz</cmdpre> packt das Archiv <tt>source.tar.gz</tt> aus. Dabei wird erst die komprimierte Datei mit gzip entpackt (dazu der Schalter <tt>z</tt>). Anschließend wird das in der <tt>.gz</tt>-Datei enthaltene tar-Archiv entpackt. Das <tt>x</tt> steht hier für ''extract'', also das Auspacken eines Archivs. Dabei werden auch die Pfadinformationen berücksichtigt, die im Archiv gespeichert sind, die benötigten Verzeichnisse werden ggf. erstellt und vorhandene Dateien überschrieben! | ||
* <cmdpre>tar xjf source.tar.bz2</cmdpre> macht das gleiche mit einem bzip2-komprimierten tar-Archiv (hierfür wieder der Schalter <tt>j</tt>). | * <cmdpre>tar xjf source.tar.bz2</cmdpre> macht das gleiche mit einem bzip2-komprimierten tar-Archiv (hierfür wieder der Schalter <tt>j</tt>). |
Version vom 15. August 2007, 19:37 Uhr
Unter Linux gibt es neben den von Windows bekannten Kompressionsformaten ZIP und RAR auch noch eine weitere Anzahl Archiv- und Kompressionsprogramme. Hier sind vor allen tar, gzip und bzip2 zu nennen, in letzter Zeit ist auch verstärkt 7z anzutreffen, das eine sehr große Kompressionsrate ermöglicht.
Bei all diesen Programmen ist grundsätzlich eine Einteilung in Archivprogramme und Kompressionsprogramme vorzunehmen: Archivprogramme dienen in erster Linie dazu, mehrere Dateien in einer einzigen Datei zusammenzufassen (bspw. für ein Backup), während Kompressionsprogramme in erster Linie die Dateigröße einer Datei verringern sollen.
In den hier aufgeführten Beispielen werden nur Grundlagen erläutert. Für weitere Informationen genügt ein Blick in die Manpage (man befehl) oder befehl --help. |
gzip
gzip (abgekürzt für GNU zip) ist ein reines Kompressionsprogramm, das heißt, es kann nur eine einzelne Datei damit komprimiert werden. Diese Dateien werden dadurch gekennzeichnet, dass die Endung .gz an den Dateinamen angehängt wird, so wird aus datei.txt etwa datei.txt.gz. gzip wird oft in Kombination mit tar (s. u.) verwendet, um mehrere Dateien zu komprimieren. Das Kommando zum Komprimieren lautet gzip, das zum Entpacken gunzip. Die meisten Editoren (z.B. vi) können aber auch gzip-komprimierte Dateien lesen und schreiben (z.B. vi datei.txt.gz).
Beispiele:
- befehlkomprimiert die Datei datei.txt und speichert sie unter datei.txt.gz. Zu beachten ist, dass die Datei datei.txt nachher gelöscht wird, sodass nur noch die komprimierte Version existiert!
gzip datei.txt
- befehlentpackt die Datei datei.txt.gz. Darin ist die Datei namens datei.txt enthalten, wie man am Dateinamen erkennen kann. Diesmal wird die Datei datei.txt.gz nachher gelöscht, sodass nur die unkomprimierte Version der Datei existiert.
gunzip datei.txt.gz
bzip2
bzip2 ermöglicht eine effizientere Kompression der Daten als mit gzip und ZIP, ist aber dementsprechend auch zeitaufwändiger. Ebenso wie gzip ist es ein reines Kompressionsprogramm, kann also nur einzelne Dateien komprimieren. Die Handhabung gleicht weitgehend gzip; die komprimierten Dateien sind an der Endung bz oder bz2 zu erkennen.
Beispiele:
- befehlkomprimiert die Datei datei.txt und speichert sie unter datei.txt.bz2. Zu beachten ist, dass die Datei datei.txt nachher gelöscht wird, sodass nur noch die komprimierte Version existiert!
bzip2 datei.txt
- befehlentpackt die Datei datei.txt.bz2. Darin ist die Datei namens datei.txt enthalten, wie man am Dateinamen erkennen kann. Diesmal wird die Datei datei.txt.bz2 nachher gelöscht, sodass nur die unkomprimierte Version der Datei existiert.
bunzip2 datei.txt.bz2
ZIP
Linux kommt auch mit dem Windows-Standard-Format ZIP zurecht. ZIP verbindet ein Kompressions- mit einem Archivprogramm, es können also mehrere Dateien in einem Archiv unter Platzersparnis gespeichert werden. Dem entsprechend kann ZIP auch Pfadinformationen speichern, sodass die Kompression eines gesamten Verzeichnisses möglich ist. ZIP-Dateien werden auf der Konsole mit dem Befehl unzip, gefolgt vom Dateinamen, entpackt. Das Kommando zip erstellt dem entsprechend ZIP-Archive.
Beispiele:
- befehlentpackt das Archiv mit dem Namen archive.zip.
unzip archive.zip
- befehlentpackt das Archiv mit dem Namen file.zip ins Verzeichnis /opt, sofern man dort Schreibrechte besitzt.
unzip file.zip -d /opt/
- befehlerstellt ein Archiv namens source.zip, das alle Dateien im aktuellen Verzeichnis enthält, die auf .c oder .h enden.
zip source.zip *.c *.h
tar
tar ist im Unterschied zu allen oben genannten Werkzeugen ein reines Archivierungsprogramm. Es fasst mehrere Dateien in einer einzigen Datei zusammen, nimmt jedoch keine Kompression vor. Dem entsprechend ist es auch möglich, Pfadangaben im Archiv zu speichern, sodass ganze Verzeichnisse archiviert werden können. Um trotzdem eine Kompression zu erzielen, wird tar meist in Verbindung mit gzip (s. o.) oder bzip2 (s. o.) verwendet: die Dateien werden erst mit tar in einem Archiv zusammengefasst, dann wird das entstehende Archiv durch gzip bzw. bzip2 komprimiert. tar arbeitet dabei effizient mit diesen beiden Kompressionsprogrammen zusammen, sodass ein Kommandoaufruf genügt, um ein komprimiertes Archiv zu erstellen. Die Archivdateien sind an den Endungen .tar.gz oder .tgz (für Kompression mit gzip) und .tar.bz bzw. .tar.bz2 oder .tbz (für Kompression mit bzip2) zu erkennen. Wenn keine Kompression vorgenommen wird, tragen die Archive nur die Endung .tar.
Beispiele:
- befehlerstellt das Archiv source.tar.gz, das alle Dateien mit den Endungen .c und .h enthält, und komprimiert dieses Archiv mit gzip. Die Buchstaben bedeuten:
tar czf source.tar.gz *.c *.h
- c für create, also das Erstellen eines Archivs,
- z für die zusätzliche Kompression mit gzip,
- f für die Angabe eines Dateinamens, unter dem das Archiv erstellt werden soll.
- befehlerstellt dem entsprechend das selbe Archiv wie das obige Kommando; j teilt hierbei dem Programm mit, dass eine Kompression mit bzip2 gewünscht wird.
tar jzf source.tar.bz2 *.c *.h
- befehlpackt das Archiv source.tar.gz aus. Dabei wird erst die komprimierte Datei mit gzip entpackt (dazu der Schalter z). Anschließend wird das in der .gz-Datei enthaltene tar-Archiv entpackt. Das x steht hier für extract, also das Auspacken eines Archivs. Dabei werden auch die Pfadinformationen berücksichtigt, die im Archiv gespeichert sind, die benötigten Verzeichnisse werden ggf. erstellt und vorhandene Dateien überschrieben!
tar xzf source.tar.gz
- befehlmacht das gleiche mit einem bzip2-komprimierten tar-Archiv (hierfür wieder der Schalter j).
tar xjf source.tar.bz2
- befehlzeigt die Dateien an, die im gzip-komprimierten Archiv source.tgz enthalten sind.
tar tzf source.tgz
- befehlwird hier wieder entsprechend für bzip2-komprimierte Archive verwendet.
tar tjf source.tbz
- Will man nur tar-Archive erstellen bzw. entpacken, entfallen die Optionen zur Kompression: befehlpackt alle Dateien mit der Endung .c in das unkomprimierte Archiv file.tar.
tar xf file.tar *.c
Meist werden jedoch nicht einzelne Dateien sondern ein ganzes Verzeichnis eingepackt. Dies hat den Vorteil, dass man beim Entpacken nicht erst ein Verzeichnis erstellen muss, indem man die Dateien dann entpackt. Beispiel:
- befehlpackt alle Dateien und Unterverzeichnisse im Ordner my-program-v1.0 zusammen in ein gzip-komprimiertes Archiv. Die Verzeichnisstruktur wird dabei vollständig beibehalten.
tar czf source.tgz my-program-v1.0/
- Wenn das oben erstellte Archiv jetzt wieder entpackt wird, wird erst der Ordner my-program-v1.0 im aktuellen Verzeichnis erstellt und dann darin die gesamte Verzeichnisstruktur entpackt.
7-Zip
7-Zip fasst, ähnlich wie WinRAR oder WinZIP unter Windows, mehrere Kompressions- und Archivprogramme in einem einzigen Werkzeug zusammen. Es bringt ein eigenes Format mit, das sich 7z nennt und sehr hohe Kompression ermöglicht, verarbeitet jedoch auch alle gängigen Formate (zur Zeit: ZIP, GNU zip, tar, bzip2, Z, CPIO, ARJ, Microsoft CAB, RPM, LZH, CHM, RPM- und deb-Pakete und ISO-Images; RAR steckt jedoch noch in den Kinderschuhen…) und stellt dabei automatisch das jeweilige Format der Datei fest. 7-Zip kann jedoch nur 7z-Archive erstellen, bei anderen Formaten ist nur das Hinzufügen von Dateien zu Archiven, das Aktualisieren von Dateien in Archiven und das Entpacken von Archiven möglich.
Beispiele:
- befehlerstellt ein 7zip-Archiv namens file.7z und fügt alle Dateien im aktuellen Ordner hinzu (a für add)
7z a file.7z *
- befehlentpackt das Archiv file.gz.
7z x file.gz
- befehl: ebenso lässt sich jedes andere Archiv entpacken.
7z x file.tar
- befehlfügt alle Dateien, die auf .c oder .h enden, zum angegebenen Archiv hinzu. Hierbei ist zu beachten, dass das angegebene Archiv die Archivierung mehrerer Dateien unterstützen muss, wenn mehrere Dateien zum Aktualisieren angegeben werden (wenn das Archiv z. B. ein gzip-Archiv ist, können nicht mehrere Dateien enthalten sein – dann gibt man die Datei an, die im Archiv komprimiert ist).
7z a file.tar *.c *.h
- befehlaktualisiert alle Dateien, die auf .c enden, im angegebenen Archiv und fügt sie ggf. hinzu (in Bezug auf mehrere Dateien gilt das gleiche wie oben).
7z u file.tar *.c