Linux/Datensicherung und -archivierung: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „Kurzbeschreibung“ durch „Beschreibung“
 
(47 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Motivation und Zielsetzung ===
'''Datensicherung und -archivierung''' - Beschreibung


Die Aufgabe von IT-Systemen ist die Verarbeitung und Verwaltung digitaler Daten, die dazu vorübergehend oder dauerhaft auf Datenträgern gespeichert werden. Die Sicherung dieser Daten soll die Rückkehr in einen vorherigen Zustand gewährleisten. Die regelmäßige Sicherung des Datenbestandes zählt zu den wichtigsten Aufgaben eines Systemverwalters.
== Beschreibung ==
=== Motivation ===
; Motivation und Zielsetzung
Die Aufgabe von IT-Systemen ist die Verarbeitung und Verwaltung digitaler Daten, die dazu vorübergehend oder dauerhaft auf Datenträgern gespeichert werden
* Die Sicherung dieser Daten soll die Rückkehr in einen vorherigen Zustand gewährleisten
* Die regelmäßige Sicherung des Datenbestandes zählt zu den wichtigsten Aufgaben eines Systemverwalters


Daten sind verschiedenen Einflüssen ausgesetzt. Dem Schichtenmodell entsprechend können auf jeder Ebene Anomalien auftreten. Zum Beispiel:* Defekte an der Hardware (Datenträger, Controller)
Daten sind verschiedenen Einflüssen ausgesetzt
* Dem Schichtenmodell entsprechend können auf jeder Ebene Anomalien auftreten
* Defekte an der Hardware (Datenträger, Controller)
* Fehler im Dateisystem
* Fehler im Dateisystem
* Fehler bei der Administration
* Fehler bei der Administration
Zeile 9: Zeile 16:
* Ausfall des Systems
* Ausfall des Systems
* Fehlfunktion nach Update
* Fehlfunktion nach Update
* Versehentliches löschen von Daten
* Versehentliches Löschen von Daten


Um jeder dieser Situationen gerecht zu werden ist es möglich auf folgenden Ebenen Daten zu sichern:* Datenträger
Um jeder dieser Situationen gerecht zu werden, ist es möglich, auf folgenden Ebenen Daten zu sichern
* Partition  
* Datenträger
* Dateisystem  
* Partition
* Dateisystem
* Datenbanken


==== Datensicherungsstrategien ====
=== Strategie ===
; Datensicherungsstrategien
Die Begriffe »Backup« und »Archiv« verwenden wir im weiteren Verlauf synonym
* Allgemein bezeichnen wir als ein Archiv einen Container von Daten, der aufbewahrt wird, um genau auf diese Daten später zugreifen zu können
* Archive legt man an, um momentan nicht benötigte Daten von der Festplatte zu verbannen oder um sie von einem Rechner auf einen anderen zu kopieren..


Die Begriffe »Backup« und »Archiv« verwenden wir im weiteren Verlauf synonym. Allgemein bezeichnen wir als ein Archiv einen Container von Daten, der aufbewahrt wird, um genau auf diese Daten später zugreifen zu können. Archive legt man an, um momentan nicht benötigte Daten von der Festplatte zu verbannen oder um sie von einem Rechner auf einen anderen zu kopieren...
Die Motivation zu einem Backup resultiert aus anderen Überlegungen
* Hier ist die Absicht, einen bestimmten Systemzustand aufzuzeichnen
* Dabei bezieht man sich nicht auf den konkreten Inhalt einer Datei - wie bei Archiven - sondern ordnet eine Datei in die Schublade »wichtig« oder »unwichtig« ein, je nachdem, ob sie von meiner Backupstrategie betroffen sein wird oder nicht


Die Motivation zu einem Backup resultiert aus anderen Überlegungen. Hier ist die Absicht, einen bestimmten Systemzustand aufzuzeichnen. Dabei bezieht man sich nicht auf den konkreten Inhalt einer Datei - wie bei Archiven - sondern ordnet eine Datei in die Schublade »wichtig« oder »unwichtig« ein, je nachdem, ob sie von meiner Backupstrategie betroffen sein wird oder nicht.
Grundsätzlich werden zwei Arten des Backups unterschieden
* Das volle Backup sichert stets den kompletten Bestand an Daten, während das inkrementelle Backup nur Daten archiviert, die innerhalb einer bestimmten Periode modifiziert wurden
* Dabei steht die Periode meist für den Zeitraum seit der letzten Sicherung


Grundsätzlich werden zwei Arten des Backups unterschieden. Das volle Backup sichert stets den kompletten Bestand an Daten, während das inkrementelle Backup nur Daten archiviert, die innerhalb einer bestimmten Periode modifiziert wurden. Dabei steht die Periode meist für den Zeitraum seit der letzten Sicherung.
Ein volles Backup ist wegen des hohen Bedarfs an Zeit (die Sicherung erfolgt meist auf ein Bandmedium) weniger für den täglichen Einsatz geeignet, deswegen entscheidet man sich heute meist für eine Mischform aus voller und inkrementeller Datensicherung
* Hierbei wird zu einem Zeitpunkt der komplette Datenbestand gesichert und nachfolgend - in regelmäßigen Abständen - archiviert man nur die modifizierten Daten


Ein volles Backup ist wegen des hohen Bedarfs an Zeit (die Sicherung erfolgt meist auf ein Bandmedium) weniger für den täglichen Einsatz geeignet, deswegen entscheidet man sich heute meist für eine Mischform aus voller und inkrementeller Datensicherung. Hierbei wird zu einem Zeitpunkt der komplette Datenbestand gesichert und nachfolgend - in regelmäßigen Abständen - archiviert man nur die modifizierten Daten.
Die tatsächlich gewählte Strategie des inkrementellen Backups hängt stark von der »Statik« der Daten und vom Sicherheitsbedürfnis des Administrators ab
* Im einfachsten Fall betrifft das Backup jeweils alle modifizierten Daten seit dem letzten vollen Backup bis hin zum aktuellen Zeitpunkt
* Das umgekehrte Verfahren ist die Aufzeichnung der Änderungen seit der letzten inkrementellen Sicherung
* Während in ersterem Fall nur die Archive des vollen und letzten inkrementellen Backups aufbewahrt werden müssen, sind beim zweiten Vorgehen das volle Backup und sämtliche inkrementellen Datensicherungsarchive aufzuheben
* In der Praxis findet man auch Archivierungsformen zwischen den beiden beschriebenen Extremen (Multilevel-Backups)


Die tatsächlich gewählte Strategie des inkrementellen Backups hängt stark von der »Statik« der Daten und vom Sicherheitsbedürfnis des Administrators ab. Im einfachsten Fall betrifft das Backup jeweils alle modifizierten Daten seit dem letzten vollen Backup bis hin zum aktuellen Zeitpunkt. Das umgekehrte Verfahren ist die Aufzeichnung der Änderungen seit der letzten inkrementellen Sicherung. Während in ersterem Fall nur die Archive des vollen und letzten inkrementellen Backups aufbewahrt werden müssen, sind beim zweiten Vorgehen das volle Backup und sämtliche inkrementellen Datensicherungsarchive aufzuheben. In der Praxis findet man auch Archivierungsformen zwischen den beiden beschriebenen Extremen (Multilevel-Backups).  
Bedenken Sie, dass ein Festplattenfehler Sie auch während der Aufzeichnung eines Backups ereilen kann. Überschreiben Sie daher niemals ihre aktuelle Sicherungskopie


Bedenken Sie, dass ein Festplattenfehler Sie auch während der Aufzeichnung eines Backups ereilen kann. Überschreiben Sie daher niemals ihre aktuelle Sicherungskopie.
Bei der Vorstellung der Backup-Werkzeuge beschränken wir uns auf Programme, die der GPL oder einer ähnlichen Lizenz unterstehen
* In vielen Fällen lassen sie die Bedienfreundlichkeit kommerzieller Produkte vermissen, jedoch ist es durchaus möglich - die notwendigen Kenntnisse vorausgesetzt - diese in Skripten so zu kapseln, dass sie zum einen die Funktionalität und zum anderen die einfache Benutzbarkeit ausgereifter Werkzeuge erreichen


Bei der Vorstellung der Backup-Werkzeuge beschränken wir uns auf Programme, die der GPL oder einer ähnlichen Lizenz unterstehen. In vielen Fällen lassen sie die Bedienfreundlichkeit kommerzieller Produkte vermissen, jedoch ist es durchaus möglich - die notwendigen Kenntnisse vorausgesetzt - diese in Skripten so zu kapseln, dass sie zum einen die Funktionalität und zum anderen die einfache Benutzbarkeit ausgereifter Werkzeuge erreichen.  
=== Medien ===
; Medien für die Datensicherung
Zunächst ist einfach nachvollziehbar, dass die Speicherkapazität des Backupmediums dem aufkommenden Datenvolumen entsprechen muss
* Ein volles Backup könnte man auch auf Disketten vornehmen, jedoch wird man des Wechsels sicherlich bald überdrüssig und die Diskette ist selbst schon Quelle des lauernden Datenverlusts
* Wer kennt nicht das leidige »Can't read sector xxx.«? Besser geeignet - vorwiegend bei dem geringeren Datenaufkommen des inkrementellen Backups - sind ZIP-Disketten


==== Medien für die Datensicherung ====
; Festplatten
Waren früher die Medien für einen Streamer die preiswerteste Alternative, so geht heute nichts über eine Festplatten
* Dem System eigens für die Datensicherung eine eigene Platte zu spendieren, mag auf den ersten Blick befremdend erscheinen, jedoch erhält man für den Preis eines Streamers eine Menge Festplattenspeicher
* Die weiteren Vorteile liegen im wahlfreien und wesentlich schnelleren Zugriff
* Allerdings schützt die eingebaute Festplatte nur mäßig vor mutwilliger Sabotage, hier kann eine Datensicherung auf einem anderen Rechner (über das Netz) Abhilfe bringen


Zunächst ist einfach nachvollziehbar, dass die Speicherkapazität des Backupmediums dem aufkommenden Datenvolumen entsprechen muss. Ein volles Backup könnte man durchaus auch auf Disketten vornehmen, jedoch wird man des Wechsels sicherlich bald überdrüssig und die Diskette ist selbst schon Quelle des lauernden Datenverlusts. Wer kennt nicht das leidige »Can't read sector xxx.«? Besser geeignet - vor allem bei dem geringeren Datenaufkommen des inkrementellen Backups - sind ZIP-Disketten.
Die durch RAID-Systeme realisierbare Datenredundanz schützt nur vor Hardwareausfall einer Festplatte, hat also nichts mit einem Backup zu tun


Traditionell sind Magnetbänder (Quarter-Inch- und DAT-Streamer) weit verbreitet. Sowohl Kapazität als auch Zuverlässigkeit sprechen für dieses Medium. Leider lässt sich auf einem Band kein Dateisystem einrichten, so dass die Daten mit Hilfe spezieller Programme sequentiell auf dieses abgelegt werden müssen. Im Falle eines »Restores« muss demnach der gesamte Bandinhalt zurückgespielt werden, da ein wahlfreier Zugriff nicht möglich ist. Ein Magnetband muss vor dem Zugriff zurückgespult werden, hierzu nutzt man das Kommando mt mit der Option rewind :
; Magnetbänder
Traditionell sind Magnetbänder (Quarter-Inch- und DAT-Streamer) weitverbreitet
* Sowohl Kapazität als auch Zuverlässigkeit sprechen für dieses Medium
* Leider lässt sich auf einem Band kein Dateisystem einrichten, sodass die Daten mithilfe spezieller Programme sequenziell auf dieses abgelegt werden müssen
* Im Falle eines »Restores« muss demnach der gesamte Bandinhalt zurückgespielt werden, da ein wahlfreier Zugriff nicht möglich ist


user@sonne> mt -f <Device> rewind
Ein Magnetband muss vor dem Zugriff zurückgespult werden, hierzu nutzt man das Kommando mt mit der Option rewind
mt -f <Device> rewind


Es ist außerdem möglich, mehr als ein Archiv auf einem Band unterzubringen, immer vorausgesetzt, die Speicherkapazität setzt keine Schranken:
Es ist außerdem möglich, mehr als ein Archiv auf einem Band unterzubringen, immer vorausgesetzt, die Speicherkapazität setzt keine Schranken
# Band zur ersten Dateiende-Markierung spulen
mt -f <Device> fsf 1
# Band zur dritten Dateiende-Markierung spulen
mt -f <Device> fsf 3
# Band zur letzten Dateiende-Markierung spulen
mt -f <Device> eof


<nowiki># Band zur ersten Dateiende-Markierung spulen</nowiki>
user@sonne> mt -f <Device> fsf 1
<nowiki># Band zur dritten Dateiende-Markierung spulen</nowiki>
user@sonne> mt -f <Device> fsf 3
<nowiki># Band zur letzten Dateiende-Markierung spulen</nowiki>
user@sonne> mt -f <Device> eof


Waren früher die Medien für einem Streamer die preiswerteste Alternative, so geht heute nichts über eine Festplatte. Dem System eigens für die Datensicherung eine eigene Platte zu spendieren, mag auf den ersten Blick befremdend erscheinen, jedoch erhält man für den Preis eines Streamers eine Menge Festplattenspeicher. Die weiteren Vorteile liegen im wahlfreien und wesentlich zügigerem Zugriff. Allerdings schützt die eingebaute Festplatte nur mäßig vor mutwilliger Sabotage, hier kann eine Datensicherung auf einem anderen Rechner (über das Netz) Abhilfe bringen. Die durch RAID-Systeme realisierbare Datenredundanz schützt nur vor Hardwareausfall einer Festplatte, hat also nichts mit einem Backup zu tun!
Während sich die »normale« CD-ROM oder DVD wegen der nur einmaligen Beschreibbarkeit eher als Medium zur reinen Archivierung eignet, kann die CD-RW und vor allem die DVD-RW durchaus für die alltägliche Datensicherung eingesetzt werden
* Allerdings erfordern umfangreiche Backups, die die Kapazität einer einzelnen CD-ROM übersteigen, die Anwesenheit des Administrators


Während sich die&nbsp;»normale«&nbsp;CD-ROM bzw. DVD wegen der nur einmaligen Beschreibbarkeit eher als Medium zur reinen Archivierung eignet, kann die CD-RW und vor allem die DVD-RW durchaus für die alltägliche Datensicherung eingesetzt werden. Allerdings erfordern umfangreiche Backups, die die Kapazität einer einzelnen CD-ROM übersteigen, die Anwesenheit des Administrators.
=== Daten ===
; Welche Daten sollten gesichert werden?
Es lohnt sich, etwas Zeit in den Plan zu investieren, welche Daten denn überhaupt den Aufwand eines Backups rechtfertigen


==== Welche Daten sollten gesichert werden?  ====
Vielleicht beginnen wir mit Daten, die sichere Kandidaten sind


Es lohnt sich, etwas Zeit in den Plan zu investieren, welche Daten denn überhaupt den Aufwand eines Backups rechtfertigen.  
Da wären
* Die Daten unter /home
* Klar, die Benutzer ziehen sich ja täglich neue Daten aus dem Netz
* Die Daten unter /etc
* Oder haben Sie Interesse, Ihr System komplett neu konfigurieren zu müssen?
* Die Daten unter /var
* Hier liegen Protokolle, Mails, Druckaufträge, ...
* also Daten, die permanenter Änderung unterliegen
* Projektverzeichnisse, Datenbanken, ...


Vielleicht beginnen wir mit Daten, die sichere Kandidaten sind. Da wären: * Die Daten unter /home. Klar, die Benutzer ziehen sich ja täglich neue Daten aus dem Netz.
Als Daten, deren Aufzeichnung Sie sich getrost sparen können, sind all jene zu nennen, die ohnehin auf einem anderen Medium vorhanden sind, zum Beispiel die Daten der Linuxdistribution, die auf CD-ROM im Schrank liegen
* Die Daten unter /etc. Oder haben Sie Interesse, Ihr System komplett neu konfigurieren zu müssen?
* Ebenso sollten Dateisysteme, die von entfernten Rechnern gemountet wurden, besser von dessen Backup-Strategie erfasst werden
* Die Daten unter /var. Hier liegen Protokolle, Mails, Druckaufträge... also Daten, die i.d.R. permanenter Änderung unterliegen.
* Projektverzeichnisse, Datenbanken,. ..???


Als Daten, deren Aufzeichnung Sie sich getrost sparen können, sind all jene zu nennen, die ohnehin auf einem anderen Medium vorhanden sind, z.B. die Daten der Linuxdistribution, die auf CD-ROM im Schrank liegen. Ebenso sollten Dateisysteme, die von entfernten Rechnern gemountet wurden, besser von dessen Backup-Strategie erfasst werden.  
Aber letztlich ist es die Ermessensfrage des Administrators, welche Daten er für sicherungswürdig erachtet
* Eine Neuinstallation von Linux hat ja manchmal auch den Vorteil, etwas Ordnung im System zu schaffen.


Aber letztlich ist es die Ermessensfrage des Administrators, welche Daten er für sicherungswürdig erachtet. Eine Neuinstallation von Linux hat ja manchmal auch den Vorteil, etwas Ordnung im System zu schaffen..
<noinclude>


=== [http://wiki.ubuntuusers.de/Archivmanager] Dateien komprimieren/archivieren ===
== Anhang ==
=== Siehe auch ===
* [[Dateien_komprimieren/archivieren|Dateien komprimieren/archivieren]]
* [[gzip]]
* [[tar]]
* [[dd]]
* [[mkisofs]]
* [[cpio]]
* [[Dump/Restore]]
{{Special:PrefixIndex/{{BASEPAGENAME}}}}


Dateien in Archive zu verpacken und ihre Größe durch Kompressionsalgorithmen zu verkleinern ist ein häufiger Vorgang in der Datenverarbeitung. Grundsätzlich unterscheidet man zwischen Archiven und komprimierten Dateien.
==== Links ====
===== Weblinks =====


Ein Archiv ist ein unkomprimierter Behälter für Dateien. Dieses Archiv kann durch Kompressionsverfahren komprimiert werden. Es gibt allerdings ein paar Formate, die gleich auch eine Komprimierung beinhalten.
[[Kategorie:Linux/Datei/Archiv]]
 
[[Kategorie:Linux/Backup]]
==== Archivformate ====
[[Kategorie:Linux/Storage]]
 
[[Kategorie:Backup]]
Es gibt sehr viele verschiedene Formate zum Komprimieren von Daten. Soweit bekannt, lassen sich sämtliche Formate unter Linux benutzen, zumindest jedoch kann man die Dateien öffnen (entpacken). Bekannte Formate unter Linux/Unix sind folgende:* [http://wiki.ubuntuusers.de/gzip gzip] - Kurze Laufzeit, Endung '''.gz'''
</noinclude>
* [http://wiki.ubuntuusers.de/bzip2 bzip2] - Hohe Kompressionsrate, Endung '''.bz2'''
* [http://de.wikipedia.org/wiki/Xz xz] - Neueres, 7z ähnliches Format, Endung '''.xz'''
 
Hierbei ist zu beachten, dass unter Linux erst die oft genutzte Kombination aus dem Archivprogramm [http://wiki.ubuntuusers.de/tar tar] und einer Kompression mittels gzip oder bzip2 ein komprimiertes Archiv ergibt. '''.tar.gz''' bzw. '''.tar.bz2'''-Dateien sind also '''.tar''' Archive, die mit dem entsprechenden Kompressionsverfahren komprimiert wurden.
 
Unter Windows sind vor allem die folgenden Formate gebräuchlich, die sich aber auch unter Linux benutzen lassen:* [http://de.wikipedia.org/wiki/ZIP_%28Dateiformat%29 ZIP] - Das wohl bekannteste Packformat, gleichzeitig auch die Dateiendung '''.zip'''
* [http://de.wikipedia.org/wiki/RAR_%28Dateiformat%29 RAR] - Bekanntes Dateiformat, gleichzeitig auch die Dateiendung '''.rar'''
* [http://de.wikipedia.org/wiki/ACE_%28Dateiformat%29 ACE] - ACE Packformat, sehr leistungsfähig, gleichzeitig auch die Dateiendung '''.ace'''
* [http://de.wikipedia.org/wiki/7z 7z] - Freies Packformat, sehr leistungsfähig und quelloffen. Dateiendung '''.7z'''
 
Welches Format man wählt hängt vom Verwendungszweck ab. Möchte man Mails auf einem Server im laufenden Betrieb komprimieren dann sollte der Prozess den Server nicht zu stark beanspruchen damit der Mailverkehr nicht beeinträchtigt wird.
 
Hat man jedoch nur sehr wenig Platz so kann man eine stärkere Komprimierung wählen, dies benötigt jedoch auch mehr Leistung und dauert länger. Der folgende Test samt Auflistung stammt aus dem Artikel [http://wiki.ubuntuusers.de/qt4-fsarchiver qt4-fsarchiver] und soll ein Gefühl für Komprimierung und Geschwindigkeit vermitteln.
 
Für den gesamtem Test lagen folgende Bedingungen zu Grunde: * Quellmedium: ganze Partition
* Partitionstyp: Kubuntu Lucid '''root'''-Partition (breit gestreute Datenformate); ohne das '''/home''' Verzeichnis (liegt in separater Partition)
* Partitionsgröße: 15 GiB; tatsächlicher Dateninhalt 4,43 GiB; 189807 Dateien und Verzeichnisse
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|- style="border:0.05pt solid #000000;padding:0.049cm;"
| colspan="4" | Kompressionsübersicht
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | Modus/Stufe
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | Komprimierte Größe (~ GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | Zeitaufwand
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Ersparnis in ~ %
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | lzo (keine Unterstufen)
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 2.141.695.938 Byte (1.99 GiB)
| align=center style="background-color:#ccff99;border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 11 min 12 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 55,1
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | gzip fast
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.822.273.889 Byte (1.7 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 12min 11 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 61,6
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | gzip standard
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.695.248.687 Byte (1.58 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 12 min 49 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 64,3
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | gzip best
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.688.266.397 Byte (1,57 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 23 min 52 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 64,6
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | bzip2 fast
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.660.019.964 Byte (1,55 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 26 min 11 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 65
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | bzip2 good
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.637.605.954 Byte (1,53 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 28 min 23 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 65,5
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | lzma fast
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.597.604.088 Byte (1,49 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 19 min 19 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 66,4
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | lzma medium
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.480.208.664 Byte (1,38 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 59 min 4 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 68,8
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | lzma best
| style="background-color:#ccff99;border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 1.461.640.213 Byte (1,36 GiB)
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | 67 min 0 Sek
| align=center style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | 69,3
 
|-
|}
==== Programme ====
 
Um diese Formate unter Linux packen und entpacken zu können, benötigt man für jedes Format ein eigenes Programm. Für die großen Desktop-Umgebungen GNOME und KDE gibt es Archivmanager, die über eine komfortable grafische Oberfläche verfügen, jedoch auf die Einzelprogramme zurückgreifen. Daher müssen diese auf jeden Fall installiert sein.
 
Um mit sämtlichen oben genannten Formaten umgehen zu können, müssen die folgenden Pakete installiert [http://wiki.ubuntuusers.de/Archivmanager?redirect=no#source-1 [1]] werden. Die ersten fünf Pakete sollten bereits nach einer Standardinstallation vorhanden sein.* [http://wiki.ubuntuusers.de/tar tar] - ein Archivierungsprogramm, das unter Linux oft mit GZip oder BZip verwendet wird
* [http://wiki.ubuntuusers.de/bzip2 bzip2] - für Dateien vom Typ BZip
* [http://wiki.ubuntuusers.de/gzip gzip] - für Dateien vom Typ GZip
* [http://wiki.ubuntuusers.de/lzop lzop] - auf Geschwindigkeit optimiertes Packprogramm
* '''zip''' - zum Packen von Zip-Archiven
* '''unzip''' - zum Entpacken von Zip-Archiven
* '''xz-utils''' und '''xz-lzma''' - für XZ-Dateien und den Vorgänger LZMA
* [http://wiki.ubuntuusers.de/7z p7zip-full] (''universe'') - zum Packen/Entpacken mittels LZMA Algorithmus von 7-Zip-Archiven und Entpacken von AES-verschlüsselten Zip-Archiven
* '''lha''' (''multiverse'', [http://wiki.ubuntuusers.de/Archivmanager?redirect=no#source-2 [2]]) - ein LZH-Archiver, wird von [http://wiki.ubuntuusers.de/Ark Ark] benutzt
 
Erwähnenswert ist auch folgende Anwendung, die bereits in der Standardinstallation mit installiert wird: * [http://wiki.ubuntuusers.de/split split] - Archive in mehrere (beliebig große) Teile teilen
 
Für diverse proprietäre Archivformate gibt es die Wahl zwischen einer Open Source Version und einer Version, die unter einer unfreien Lizenz steht, die dafür aber mehr Funktionalität bietet. So können beispielsweise nur die proprietären Versionen mit Passwörtern geschützte Archive extrahieren usw. Man sollte hierbei darauf achten, dass entweder die proprietäre oder die freie Version installiert ist.
 
===== Ace =====
 
* '''unace''' (''universe'')
* '''unace-nonfree''' (''multiverse'')
 
Hinweise: unace-nonfree ist erst ab Ubuntu 7.04 Feisty Fawn verfügbar, und funktioniert nicht mit dem Archivmanager File Roller von GNOME.
 
===== Rar =====
 
Für '''rar''' Dateien muss eines der folgenden Pakete installiert werden: * '''rar''' (''multiverse'' - zum Erstellen von Rar-Archiven )
* '''unrar''' (''multiverse'')
* '''unrar-free''' (''universe'')
* '''p7zip-rar''' (''universe'')
* '''unar''' (''universe'')
 
===== Hinweis =====
 
RAR und Ace sind [http://de.wikipedia.org/wiki/Proprietär proprietäre] Dateiformate. Das heißt, die Mechanismen zum Erstellen und Entpacken solcher Archive beruhen auf geschützten
 
Closed-Source Verfahren. [https://gna.org/projects/unrar/ unrar-free] [[Image:Grafik9.png|top|alt="{en}"]]und unace sind Versuche, die wichtigsten Funktionen zum Entpacken unter einer offenen Lizenz bereit stellen zu können. [http://www.rarlab.com/ unrar] [[Image:Grafik10.png|top|alt="{en}"]]und unace-nonfree sind kommerzielle Software von den Herstellern der beiden Formate.
 
Welches dieser Pakete man installieren soll, ist dem Benutzer selber überlassen. Möchte man ein Computersystem ohne proprietäre Software, so sollte man die freien Pakete nutzen, muss aber mit der Einschränkung leben, nicht alle Archive entpacken zu können.
 
Möchte man alle Archive inklusive beispielsweise dem RAR 3.0 Format und Passwort geschützte Archive entpacken, so muss man auf die proprietären Pakete zurückgreifen.
 
==== Archivmanager ====
 
[[Image:Grafik11.png|right]]Die großen Desktop-Umgebungen bringen von Haus aus Archivmanager mit, die Daten (de-)komprimieren können.
 
Dabei sollte man im Kopf behalten, dass diese Archivmanager nur grafische Frontends für die einzelnen Packprogramme sind, die etwas weiter oben beschrieben werden.
 
Ubuntu installiert aus lizenzrechtlichen Gründen standardmäßig keine Packprogramme für beliebte Archivformate wie Rar oder 7z.
 
Diese müssen also wie oben beschrieben installiert sein, damit die Archivmanager solche Archive verarbeiten können.
 
====== File Roller ======
 
File Roller /http://fileroller.sourceforge.net/) ist der Archivmanager der [http://wiki.ubuntuusers.de/Unity Unity] und [http://wiki.ubuntuusers.de/GNOME GNOME] Desktop-Umgebung. Es wird direkt bei der Installation von Ubuntu mitinstalliert.
 
File Roller ist vollständig in [http://wiki.ubuntuusers.de/Nautilus Nautilus], dem Dateimanager von der GNOME Desktop-Umgebung integriert. Ein Doppelklick links auf ein Archiv öffnet dieses in File Roller. Will man ein Archiv anlegen, so markiert die zu archivierenden Dateien in Nautilus und wählt ''"Komprimieren ..."'' oder ''"Archiv anlegen"'' aus dem Kontextmenü.
 
====== ARK ======
 
[[Image:Grafik15.png|right]][http://wiki.ubuntuusers.de/Ark Ark] ist der Archivmanager der Desktop-Umgebung [http://wiki.ubuntuusers.de/KDE KDE]. Das Programm wird automatisch bei der Installation von [http://wiki.ubuntuusers.de/Kubuntu Kubuntu] installiert.
 
Das Programm selber findet man unter* ''"K-Menü -> Dienstprogramme -> Ark (Archivprogramm)"''
 
oder man startet es, indem man ein Archiv aus einem [http://wiki.ubuntuusers.de/Dateimanager Dateimanager] heraus öffnet.
 
====== Xarchiver ======
 
[[Image:Bild1.png|right]][http://wiki.ubuntuusers.de/Xarchiver Xarchiver] ist der Archivmanager der Desktop-Umgebung [http://wiki.ubuntuusers.de/Xfce Xfce] und wird automatisch mit [http://wiki.ubuntuusers.de/Xubuntu Xubuntu] installiert.
 
Das Programm selbst findet man im Anwendungsmenü unter ''"Zubehör -> Xarchiver"'' oder man startet es, indem man ein Archiv aus dem [http://wiki.ubuntuusers.de/Dateimanager Dateimanager] heraus öffnet.
 
====== Squeeze ======
 
Squeeze (http://squeeze.xfce.org/) ist ein moderner, fortgeschrittener, schneller und einfach zu bedienender Archivmanager für [http://wiki.ubuntuusers.de/Xfce Xfce]. Weitere Informationen im Artikel Squeeze (http://wiki.ubuntuusers.de/Squeeze).
 
===== [http://wiki.ubuntuusers.de/7z?action=backlinks 7z] =====
 
7z ist sowohl ein Dateiformat als auch ein Kommandozeilenprogramm zur Datenkompression. Es handelt sich um die Referenzimplementierung des hocheffizienten, freien LZMA-Algorithmus', der die allermeisten anderen Algorithmen in ihrer Kompressionsstärke mitunter deutlich übertrifft.
 
Ein Beispiel: LZMA komprimiert durchschnittlich 50% stärker als der Deflate-Algorithmus des weit verbreiteten ZIP-Formats. Auch mit proprietären, kommerziellen Formaten wie RAR kann sich 7z messen. Sensible Daten können per AES-256 verschlüsselt werden und ein Archiv kann bei Bedarf in beliebig große Teile zerlegt werden.
 
Dank seiner Open-Source-Entwicklung hat 7z mittlerweile große Verbreitung gefunden. Die Standard-Archivmanager File-Roller (GNOME), Xarchiver (XFCE/LXDE) und Ark (KDE) kommen mit dem Format zurecht, indem sie auf das hier beschriebene 7z-Terminalprogramm zurückgreifen.
 
Auch für Windows gibt es eine breite Palette an Programmen, die 7z von Haus aus unterstützen. Eine Auflistung findet sich auf der Homepage.
 
====== Hinweis ======
 
Der LZMA-Algorithmus stellt beim Komprimieren sehr hohe Ansprüche an die Systemleistung, insbesondere an den Arbeitsspeicher. Leistungsschwache Systeme werden spätestens bei großen Datenmengen und höheren Kompressionsstufen völlig in die Knie gehen ("System Lock-up"). Um das Potential voll auszuschöpfen, sollten mindestens 2 GiB Arbeitsspeicher vorhanden sein und auch der Prozessor sollte eine Gesamtleistung von 2 GHz nicht unterschreiten.
 
Nach der Installation wird '''p7zip''' mit <tt>7zr</tt> aufgerufen und '''p7zip-full''' nur mit <tt>7z</tt>. Im Verlaufe dieses Artikels wird von p7zip-full ausgegangen, der Befehl ist bei Bedarf auszutauschen.
 
====== Benutzung ======
 
====== Achtung! ======
 
7z alleine ist für ein Backup eines kompletten Linux-/Unix-Systems nicht geeignet, da es sämtliche Zugriffsrechte ignoriert. Eine Möglichkeit, dieses Problem zu umgehen, findet sich im Abschnitt Tipps.
 
Die allgemeine Syntax von p7zip-full lautet:
 
7z OPTIONEN SWITCHES AUSGABE EINGABE
 
Beispiel
 
7z a -t7z -m0=LZMA -mmt=on -mx=9 -md=96m -mfb=256 /home/peter/kirschkuchenrezept.7z /home/peter/kirschkuchenrezept.doc
 
7z erkennt Verzeichnisse (rekursives arbeiten) selbstständig, es muss kein spezieller Parameter angegeben werden. Optionen werden immer als Buchstaben am Anfang angegeben, während die darauf folgenden Switches immer ein vorstehendes <tt>-</tt> haben.
 
====== Optionen ======
 
Mit den Optionen wird zuerst grob festgelegt, was zu tun ist.
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|- style="border:0.05pt solid #000000;padding:0.049cm;"
| colspan="2" | '''Optionen '''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | '''Option '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | '''Beschreibung '''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>a</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Dateien/Verzeichnisse einem Archiv hinzufügen bzw. eine Archivdatei erstellen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>d</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Dateien/Verzeichnisse aus einem Archiv löschen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>e</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Einfaches Entpacken aller Dateien aus dem Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>l</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Inhalt eines Archivs auflisten
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>t</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Archiv auf Beschädigungen prüfen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>u</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Archivinhalt aktualisieren
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>x</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Archiv entpacken und dabei die Verzeichnisstruktur erhalten
 
|-
|}
====== Switches ======
 
Im folgenden nur ein Auszug der wichtigsten Switches, welche die genaue Vorgehensweise festlegen. Der Fokus liegt hier auf dem LZMA-Algorithmus. Informationen zu weiteren Switches finden sich in den [http://wiki.ubuntuusers.de/man Manpages].
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|- style="border:0.05pt solid #000000;padding:0.049cm;"
| colspan="2" | '''Switches '''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | '''Switch '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | '''Beschreibung '''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-l</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | keine [http://de.wikipedia.org/wiki/Symbolische_Verknüpfung Symlinks] archivieren, sondern ihr Ziel
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-m</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Algorithmus für Kompression festlegen (z.B. <tt>-m0=LZMA</tt>)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-mhe=on</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Den [http://de.wikipedia.org/wiki/Header Header] des Archivs verschlüsseln
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-oZIEL</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Nicht ins gleiche Verzeichnis entpacken (Standard), sondern nach "ZIEL"
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-pPASSWORT</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Archiv mit Passwort schützen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-tDATEIFORMAT</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Dateiformat festlegen (z.B. <tt>-t7z</tt>)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-mmt=on</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | [http://de.wikipedia.org/wiki/Multithreading Multithreading] für Mehrkernprozessoren oder Multiprozessorsysteme aktivieren
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-mx=STUFE</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Stufe der Kompressionsstärke (1=schnell und schlecht, 9=langsam und gut)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-mfb=NUMMER</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Anzahl der [http://de.wikipedia.org/wiki/Wörterbuchkompression Wörterbücher] (8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 273)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-md=NUMMER</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Größe der Wörterbücher (64k, 1m, 2m, 4m, 6m, 8m, 12m, 16m, 24m, 32m, 48m, 64m, 96m, 128m)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-ms=on</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | [http://de.wikipedia.org/wiki/Progressive_Kompression Progressive ("solid") Kompression]
 
|-
|}
====== Tipps ======
 
* Je höher die anstehenden Nummern bei den Switches <tt>-mfb</tt> und <tt>-md</tt> sind, desto stärker ist die Kompression. Dies wirkt sich allerdings nicht nur auf die benötigte Zeit des Vorgangs aus, sondern auch auf die Systemauslastung, insbesondere die des Arbeitsspeichers. Es sei nochmals darauf hingewiesen, dass der Switch <tt>-md</tt> nicht die maximale Beanspruchung des Arbeitsspeichers definiert.
* Die progressive Komprimierung wird die Effizienz immer dann erhöhen, wenn mehrere Dateien gepackt werden sollen – insbesondere, wenn diese sich ähneln. Der nötige Aufwand kann durch die Methode jedoch stark in die Höhe schießen, sie sollte mit Bedacht eingesetzt werden. Ist ein Archiv progressiv komprimiert worden, können einzelne Dateien bzw. Verzeichnisse nur entpackt werden, indem alles, was sich im Archiv davor befindet, abgearbeitet wird. In einem solchem Szenario dauert das Entpacken länger. Beim Entpacken des gesamten Archivs gibt es hingegen keinen sonderlichen Zeitunterschied.
* Um doch ein Backup eines Linux-/Unix-Systems mit 7z zu komprimieren, empfiehlt es sich, dieses vorher mit [http://wiki.ubuntuusers.de/tar tar] zu einem einzelnen Datenstrom zusammenzufügen. Beispiel:
 
tar cf - PFAD | 7za a -si ERGEBNIS.tar.7z
 
Das Entpacken eines solchen Archives läuft dann wieder in umgekehrter Reihenfolge ab (Achtung! Das Zielverzeichnis '''ZIELPFAD''' muss vorhanden sein!):
 
7za x -so ERGEBNIS.tar.7z | tar xf - -C ZIELPFAD
 
==== Terminal ====
 
Man muss nicht zwangsläufig auf die graphischen Archivmanager zurückgreifen. Alle Packprogramme kann man auch von einem Terminal heraus bedienen. Wichtig dabei ist natürlich, dass die oben genannten Packprogramme installiert sind.
 
===== Ace =====
 
<nowiki># Falls unance-nonfree installiert ist</nowiki>
unace (OPTIONEN) ARCHIVNAME.ace
<nowiki># Falls unace installiert ist</nowiki>
unace e ARCHIVNAME.ace
 
===== Rar =====
 
====== Archive erstellen ======
 
<nowiki># Allgemein</nowiki>
rar a ARCHIVNAME DATEI1 (DATEI2) ...
<nowiki># Beispiel</nowiki>
rar a -v2048 test.rar -p datei1 datei2 datei3
 
====== Archive entpacken ======
 
Manche unter Windows erstellte Rar-Archive lassen sich aus unbekannten Gründen nicht mit Ark unter KDE öffnen. Hier ist man gezwungen, auf das Entpacken im Terminal zurückzugreifen, was in der Regel einwandfrei funktioniert. Dazu geht man wie folgt vor:
 
<nowiki># Allgemein</nowiki>
unrar x ARCHIVNAME.rar
<nowiki># Beispiel</nowiki>
unrar x -pPasswort ~/Desktop/beispiel.rar
 
Ein Sonderfall ergibt sich, wenn bei einer passwortgeschützten Datei das Passwort mit Sonderzeichen, wie etwa ~ endet. In diesem Fall führt der o. g. Befehl zu der Fehlermeldung
 
bash: !~: event not found
 
Das Problem kann man umgehen, indem man zunächst das Entpacken ohne Passworteingabe einleitet (siehe Befehl oben). Dann wird man automatisch nach dem Passwort gefragt, welches man nun eingeben kann. Achtung: Das Passwort wird bei der Eingabe nicht angezeigt.
 
Enter password (will not be echoed) for Dateiname.rar:
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
| style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | '''Kommandos / Optionen '''
| style="border:0.05pt solid #000000;padding:0.049cm;" | '''Bemerkung '''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>a</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Dateien sollen hinzugefügt werden.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>e</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Dateien sollen entpackt werden.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>x</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Dateien sollen in die in der Datei enthaltene Verzeichnisstruktur entpackt werden.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-m[KOMPRESSIONSLEVEL]</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Setzt den Kompressionslevel ( <tt>-m0</tt> = ohne; <tt>-m3</tt> = standard; <tt>-m5</tt> = maximal) (optional).
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-v[GROESSE][EINHEIT]</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Legt die Dateigröße fest, als Einheit kann man u.a. Byte (<tt>b</tt>), Kilobyte (<tt>k</tt>), und Megabyte (<tt>m</tt>) wählen. Wenn man nun Teilarchive haben will, die z.B. 100 Megabyte groß sind, wählt man folgende Option <tt>-v100m</tt>. Die Größe der Teilarchive geht bei 1000 Bytes los, kleinere Teilarchive kann man nicht erstellen (optional).
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-rr[GROESSE][EINHEIT]</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Fügt Wiederherstellungsinformationen hinzu. Diese können bspw. in Prozent angegeben werden, für fünf Prozent gibt man also <tt>-rr5%</tt> an. Wird keine Einheit angegeben, gibt die Größenangabe die Anzahl der Sektoren an, die zur Wiederherstellung verwendet werden können (optional).
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-p</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Setzt ein Passwort, das man nach der Eingabe festlegt (optional).
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.049cm;" | <tt>-hp</tt>
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.049cm;" | Setzt auch ein Passwort, Unterschied zu <tt>-p</tt> ist, dass das Archiv nun komplett verschlüsselt wird, d.h. die Dateinamen im Archiv werden auch verschlüsselt (optional).
 
|-
|}
===== tar.gz/tar.bz2 =====
 
====== tar.gz ======
 
====== Archive erstellen ======
 
<nowiki># Allgemein</nowiki>
tar -czf ARCHIVNAME.tar.gz DATEI1/VERZEICHNIS1 (DATEI2/VERZEICHNIS2) ...
<nowiki># Beispiel</nowiki>
tar -czf beispiel.tar.gz test example
<nowiki># oder</nowiki>
tar -czf beispiel.tar.gz test/
 
Dabei wird im ersten Beispiel ein Archiv '''beispiel.tar.gz''' aus den Dateien '''test''' und '''example''' erstellt. Im zweiten Beispiel wird aus dem Verzeichnis '''test/''' ein Archiv erstellt.
 
====== Archive entpacken ======
 
<nowiki># Allgemein</nowiki>
tar -xzf ARCHIVNAME.tar.gz
<nowiki># Beispiel</nowiki>
tar -xzf beispiel.tar.gz
 
====== tar.bz2 ======
 
====== Archive erstellen ======
 
<nowiki># Allgemein</nowiki>
tar -cjf ARCHIVNAME.tar.bz2 DATEI1/VERZEICHNIS1 (DATEI2/VERZEICHNIS2) ...
<nowiki># Beispiel</nowiki>
tar -cjf beispiel.tar.bz2 test example
<nowiki># oder</nowiki>
tar -cjf beispiel.tar.bz2 test/
 
Dabei wird im ersten Beispiel ein Archiv '''beispiel.tar.bz2''' aus den Dateien '''test''' und '''example''' erstellt. Im zweiten Beispiel wird aus dem Verzeichnis '''test/''' ein Archiv erstellt.
 
====== Archive entpacken ======
 
<nowiki># Allgemein</nowiki>
tar -xjf ARCHIVNAME.tar.bz2
<nowiki># Beispiel</nowiki>
tar -xjf beispiel.tar.bz2
 
Dabei entsteht in der Regel ein neues Verzeichnis, in welches man dann wechseln kann. Manchmal möchte man den Inhalt des Archivs auch direkt an einen Ort entpacken (für '''.tar.bz2''' bitte die Befehle entsprechend ändern):
 
<nowiki># Allgemein</nowiki>
tar -xjf ARCHIVNAME.tar.bz2 -C ZIELORDNER
<nowiki># Beispiel</nowiki>
tar -xjf php-5.1.0.tar.bz2 -C /opt/php5
 
===== UnZip =====
 
<nowiki># Datei entpacken</nowiki>
unzip ARCHIVNAME.zip
<nowiki># in Ordner entpacken</nowiki>
unzip ARCHIVNAME.zip -d ZIELORDNER
 
===== atool, Unpack und dtrx =====
 
Um sich nicht die unterschiedlichen Befehle und Parameter der verschiedenen Archivformattools zu merken, gibt es [http://www.nongnu.org/atool/ atool] [[Image:Bild3.png|top|alt="{en}"]], [http://Unpack.sourceforge.net/ Unpack] [[Image:Grafik21.png|top|alt="{en}"]]oder [http://brettcsmith.org/2007/dtrx/ dtrx] [[Image:Grafik22.png|top|alt="{en}"]]. Die Programme kennen die Syntax um Archive zu entpacken und ersparen dem Benutzer die Eingabe des kompletten Befehls. So kann man dann mit einem einzigen Befehl wie
 
aunpack ARCHIV
 
oder
 
unp ARCHIV
 
oder
 
dtrx ARCHIV
 
bequem im Terminal [http://wiki.ubuntuusers.de/Archivmanager?redirect=no#source-4 [4]] entpacken. Weitere Informationen zu Unpack findet man im Wiki unter [http://wiki.ubuntuusers.de/unp unp].
 
Die Funktionalität von atool geht sogar noch weiter, so können u.a. mit <tt>apack</tt> Archive erstellt werden oder mit <tt>als</tt> Archivinhalte aufgelistet werden. '''atool''' kann aus den ''universe''-Quellen installiert werden:* '''atool''' (''universe'')
 
Analog '''dtrx''': * '''dtrx''' (''universe'')
 
===== zless und bzless =====
 
[http://wiki.ubuntuusers.de/less#zless-und-bzless zless und bzless] sind zwei kleine Programme, mit denen sich gepackte Textdateien ('''.gz''' und '''.bz2''') betrachten lassen, ohne sie vorher manuell entpacken zu müssen.
 
==== Weitere Packprogramme ====
 
===== cabextract =====
 
[http://wiki.ubuntuusers.de/Cabinet-Dateien#cabextract cabextract] ist zum Entpacken von [http://wiki.ubuntuusers.de/Cabinet-Dateien Cabinet-Dateien], welche im Format '''.cab''' vorliegen, gedacht.
 
===== innoextract =====
 
[http://wiki.ubuntuusers.de/innoextract innoextract] extrahiert Installationsdateien, welche mit [http://de.wikipedia.org/wiki/Inno_Setup Inno Setup] erstellt wurden.
 
===== unshield =====
 
[http://wiki.ubuntuusers.de/Cabinet-Dateien#unshield unshield] ist wie cabextract zum Entpacken von [http://wiki.ubuntuusers.de/Cabinet-Dateien Cabinet-Dateien] gedacht, jedoch für Anwendungen, die [http://de.wikipedia.org/wiki/InstallShield InstallShield] verwenden.
 
===== PeaZip =====
 
[[Image:Bild4.png|right]][http://wiki.ubuntuusers.de/PeaZip PeaZip] ist ein relativ junges plattformübergreifendes Projekt (2005) und stellt eine gute und funktionserweiterte Alternative zu den obigen Archivmanagern dar.
 
Es unterstützt praktisch alle im Rahmen der lizenzrechtlichen Bestimmungen verfügbaren Formate und bietet eine kaum mehr überschaubare
 
Vielfalt an Funktionen, Optionen und Filtern. Besondere Beachtung verdienen die umfangreichen Möglichkeiten zur Datensicherheit (verschiedene Verschlüsselungen, Löschen durch mehrfaches Überschreiben usw.).
 
Im Gegensatz zu den oben beschriebenen [http://wiki.ubuntuusers.de/Archivmanager?redirect=no#Archivmanager Archivmanagern] ist PeaZip kein grafisches Frontend für die einzelnen oben beschriebenen [http://wiki.ubuntuusers.de/Archivmanager?redirect=no#Programme Packprogramme], sondern ein eigenständiges Pack- und Archivierungsprogramm.
 
Es ist also nicht auf die separate Installation von Packprogrammen angewiesen.
 
=== Dateien komprimieren mit gzip ===
 
gzip komprimiert Dateien
 
gzip [-cdfhlLnNqrtvV19] [-S Endung [Datei ...]
 
gzip komprimiert Dateien mit dem LZ77 Lempel-Ziv Algorithmus. gzip erzielt erheblich bessere Kompressionsraten als das mit dem LZW-Algorithmus arbeitende compress-Programm. Weil es sich ansonsten sehr ähnlich verhält, ist abzusehen, daß es compress als Standardpacker im Bereich der freien Software verdrängen wird. Mit gzip können auch Dateien ausgepackt werden, die mit compress oder pack gepackt wurden. Archive, die mit zip gepackt wurden, können mit gzip nur ausgepackt werden, wenn sie eine einzige Datei enthalten und mit der ,,deflation`` Methode gepackt wurden.
 
gzip ist kein Archivpacker wie lharc, arj oder pkzip.
 
gzip komprimiert einzelne Dateien, unabhängig davon, ob die resultierende Datei tatsächlich kleiner ist, und ersetzt die Urdatei durch die komprimierte, indem es an den Dateinamen die Endung `.gz' anhängt. Wenn der Dateiname durch Anhängen der Endung unzulässig lang würde, verkürzt gzip automatisch den Namen um die erforderliche Anzahl Zeichen.
 
Die Zeitmarke der Datei und die Zugriffsrechte bleiben beim Komprimieren erhalten. Um die Wiederherstellung der Zeitmarke und des Dateinamens sicherzustellen, werden diese Daten mit eingepackt und können beim entkomprimieren verwendet werden. Außerdem wird eine CRC-Checksumme mit eingepackt, mit der beim Auspacken automatisch die Integrität der Daten geprüft wird.
 
Wenn gzip ohne Dateinamen aufgerufen wird, liest es von der Standardeingabe und schreibt auf die Standardausgabe. Der gleiche Effekt wird erzielt, wenn anstelle einer Eingabedatei ein Minuszeichen `-' angegeben wird.
 
Wie bei compress kann auch gzip auf andere Namen gelinkt werden, um bestimmte Aufgaben zu erfüllen.
 
Unter dem Namen gunzip arbeitet es wie gzip -d, packt also komprimierte Dateien der oben aufgeführten Formate aus. gunzip erwartet die Endung `.gz', `-gz', `.tgz', `.taz', `.z', `-z', `-z' oder `.Z' an dem Dateinamen. Außerdem wird die Datei auf eine ,,magische Zahl`` überprüft, die mit gzip komprimierte Dateien identifiziert. Nach dem Auspacken bleiben die Zugriffsrechte und das Erstellungsdatum der Datei erhalten.
 
zcat arbeitet wie gzip -dc, schreibt also die entkomprimierte Datei auf die Standardausgabe und läßt die komprimierte Datei unberührt. Wenn die Eingabedatei die korrekte magische Zahl enthält, wird sie ausgepackt, egal welche Endung der Dateiname hat. &nbsp;
 
'''Optionen'''
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
| style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-c</tt> '''
| style="border:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | schreibt die (ent)komprimierte ''Datei'' auf die Standardausgabe, anstatt die Datei zu ersetzen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-d</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (decompress) dekomprimiert die ''Datei''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-f</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (force) ersetzt bestehende Dateien mit Endung `.gz'; normalerweise fragt <tt>gzip</tt> vor dem Überschreiben solcher Dateien nach
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-h</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (help) gibt eine Kurzhilfe zum Programm aus
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-l</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (list) zeigt den in einer mit <tt>gzip</tt> komprimierten Datei gespeicherten originalen Dateiname, sowie die originale und die gepackte Größe an; wenn die <tt>-v</tt>-Option gesetzt ist, wird zusätzlich die Zeitmarke und die Checksumme ausgegeben
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-L</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (license) gibt eine Kurzfassung des Lizenztextes aus
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-n</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (noname) unterdrückt beim Einpacken das Speichern des Dateinamen und der Zeitmarke (nur wenn der Name nicht gekürzt werden muß); beim Auspacken wird die Wiederherstellung des originalen Namens mit der Zeitmarke unterdrückt; diese Option ist Voreinstellung zum Entpacken
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-N</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (name) veranlaßt beim Einpacken die Sicherung des originalen Namen und der Zeitmarke in der gepackten Datei und beim Auspacken die Wiederherstellung dieser Daten an der dekomprimierten Datei; diese Option ist Voreinstellung beim Einpacken
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-q</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (quiet) unterdrückt alle Warnungen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-r</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (recursive) packt alle Dateien in den angegebenen Unterverzeichnissen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-S</tt> ''Endung'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt die Verwendung der neuen ''Endung'' anstelle von `.gz'
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-t</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (test) prüft die Integrität der angegebenen ''Datei''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-v</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (verbose) gibt den Namen und den Kompressionsfaktor für jede ''Datei'' aus
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-V</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (Version) gibt die Versionsnummer des Programms aus
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''''Ziffer'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | bestimmt mit einer Ziffer von 1 bis 9 die Kompressionstiefe; 1 bedeutet schnell und schlecht komprimiert, 9 bedeutet langsam und optimal komprimiert
 
|-
|}
==== Gut verpackt mit Gzip  ====
 
Das Programm Gzip (GNU Zip) ist der "Standardpacker" unter Linux. Gzip komprimiert einfache Dateien; Archive ganzer Verzeichnisse legt das Tool allerdings nicht an. Der einfachste Aufruf lautet:
 
gzip datei
 
Gzip ersetzt die Originaldatei durch eine komprimierte Fassung mit der zusätzlichen Dateiendung <tt>.gz </tt>. Dateieigenschaften wie Rechte, Zugriffs- und Modifikationszeit bleiben beim Packen erhalten. Gefällt Ihnen die Dateiendung nicht, definieren Sie über <tt>-S </tt>(Suffix) eine eigene. So erzeugt der Aufruf
 
gzip -S .z bild.bmp
 
eine komprimierte Datei namens <tt>bild.bmp.z </tt>.
 
Die Größe der zurechtgestutzten Datei hängt unter anderem von der Verteilung gemeinsamer Zeichenketten in der Originaldatei ab. Das bedeutet, dass Gzip Dateien, in denen sich ähnliche Muster wiederholen, deutlich besser "zusammenschrumpft". Bereits komprimierte Dateien, etwa im MP3- oder JPEG-Format, verkleinert Gzip dagegen nicht besonders gut. <span style="color:#008080;">Listing 1 </span>zeigt die Unterschiede für eine Bitmap- und eine JPEG-Datei.
 
Weiterhin beeinflussen Sie die Größe über einen Kompressionsfaktor zwischen 1 und 9, wobei <tt>gzip -1 </tt>schneller komprimiert und <tt>gzip -9 </tt>langsamer, aber mit besserer Kompressionsrate arbeitet. Als Standard ist <tt>-6 </tt>definiert; um diese Vorgabe zu ändern, setzen Sie die Umgebungsvariable <tt>GZIP </tt>in der Datei <tt>~/.bashrc </tt>, zum Beispiel
 
export GZIP="-9"
 
$ '''ls -l'''
-rw-r--r--  1 huhn huhn 2313894 Sep  3 22:47 screenie.bmp
-rw-r--r--  1 huhn huhn  169862 Sep  5 12:41 screenie.jpg
$ '''gzip screenie*'''
$ '''ls -l'''
-rw-r--r--  1 huhn huhn    9547 Sep  3 22:47 screenie.bmp.gz
-rw-r--r--  1 huhn huhn  130524 Sep  5 12:41 screenie.jpg.gz
 
Eine mit Gzip komprimierte Datei entpacken Sie entweder mit Gunzip oder <tt>gzip -d </tt>. Liegt im Verzeichnis eine Datei mit gleichem Namen, fragt das Programm sicherheitshalber nach, ob Sie diese überschreiben wollen:
 
$ '''gunzip screenie.jpg.gz'''
gunzip: screenie.jpg already exists; do you wish to overwrite (y or n)?
 
Antworten Sie an dieser Stelle mit [N], bricht Gzip die Operation ab. Wenn Sie die Sicherheitsabfrage als störend empfinden, schalten Sie über die Option <tt>-f </tt>ab (englisch "force" = "erzwingen"). Der Parameter hat noch eine Nebenwirkung: Standardmäßig weigert Gzip sich, <span style="color:#ff0000;">'''Symlinks '''</span>zu komprimieren. Lassen Sie Gzip zusammen mit dem Parameter ''-f ''auf solche Verweise los, komprimiert das Tool die Datei, auf die der symbolische Link zeigt, und gibt ihr den Namen des Symlinks (ergänzt um die Endung). Beim Entpacken landet anschließend allerdings kein Verweis, sondern eine Datei auf der Platte (Abbildung <span style="color:#008080;">((2)) </span>).
 
<span style="color:#008080;">((2)) </span>Aufgepasst beim Komprimieren von Symlinks: Der Parameter "-f" erzwingt dies, das Auspacken erzeugt allerdings keinen Verweis mehr.
 
<span style="color:#ff0000;">'''Symlink: '''</span>Ein symbolischer Link (oder Softlink) ist ein Verweis auf eine andere Datei, den Anwendungsprogramme genau wie die Datei selbst behandeln. Wenn die Datei, auf die ein Symlink verweist, gelöscht wird, zeigt der Link ins Leere. Symlinks erzeugt das Kommando <tt>ln -s ''Quelle Ziel ''</tt>.
 
Komprimierte Textdateien, wie zum Beispiel die HOWTOs unter <tt>/usr/share/doc/ </tt>, müssen Sie nicht erst umständlich auspacken und dann mit einem Pager wie Less oder More anzeigen. Schneller geht es, wenn Sie Gzip mit dem Parameter <tt>-c </tt>(schreibt nach <span style="color:#ff0000;">'''stdout '''</span>) einsetzen und die Ausgabe über eine Pipe an einen Betrachter weiterleiten, z. B.:
 
gzip -dc /usr/share/doc/iptables/README.Debian.gz | less
 
Noch kürzer geht es mit <tt>zless ''Datei ''.gz </tt>: Hinter dem Befehl steckt ein kleines Skript, das im Wesentlichen das Gleiche leistet.
 
<span style="color:#ff0000;">'''stdout: '''</span>Es gibt drei "Standardkanäle": <tt>stdin </tt>(Standardeingabe), <tt>stdout </tt>(Standardausgabe) und <tt>stderr </tt>(Standardfehlerausgabe). Laufende Programme erwarten ihren Input von der Standardeingabe, zum Beispiel über die Tastatur. Die Ausgabe der Programme sehen Sie in der Standardausgabe, also meist in einem Terminal-Fenster. Die Standardfehlerausgabe landet in der Regel am gleichen Ort: Dort schreiben Programme Warnungen und Fehlermeldungen hin.
 
==== Neuer, schneller, besser: Bzip2  ====
 
Das Programm Bzip2 verwendet einen anderen Kompressionsalgorithmus und verkleinert daher die meisten Dateien deutlich besser. <span style="color:#008080;">Listing 2 </span>zeigt Gzip und Bzip2 im Vergleich. Weiterhin besitzt Bzip2 einen so genannten Recovery-Modus: Beim Komprimieren zerlegt das Tool die Dateien in einzelne Blöcke. Ist eine Datei beschädigt, ist es eventuell noch möglich, Daten aus den intakt gebliebenen Bereichen zu retten -- dazu entpacken Sie mit Bzip2recover die unbeschädigten Teile.
 
Listing 2: "gzip" und "bzip2" im Vergleich
 
$ '''ls -l bild.bmp*'''
-rw-r--r--  1 huhn huhn 2313894 Sep  5 13:35 bild.bmp
-rw-r--r--  1 huhn huhn    2534 Sep  5 13:35 bild.bmp.bz2
-rw-r--r--  1 huhn huhn    9547 Sep  5 13:35 bild.bmp.gz
 
Abgesehen von einigen kleinen Unterschieden ähneln viele Bzip2-Optionen denen von Gzip. Auch hier geben Sie zum einfachen Komprimieren einer Datei nur deren Namen an:
 
bzip2 datei
 
Die komprimierte Datei trägt anschließend die Endung <tt>.bz2 </tt>und behält -- genauso wie beim Packen mit Gzip -- ihre ursprünglichen Dateieigenschaften. Anders als Gzip kennt Bzip2 eine Option, über die es eine Kopie des Originals anlegt. Geben Sie dafür einfach zusätzlich den Parameter <tt>-k </tt>(englisch "keep" = "behalten") an:
 
bzip2 -k datei
 
(Wer Gleiches mit Gzip erreichen will, gibt die komprimierte Datei auf die Standardausgabe aus und schreibt sie dann in eine neue Datei: <tt>gzip -c datei > datei.gz </tt>. Die komprimierte Fassung übernimmt auf diese Weise allerdings nicht die Dateieigenschaften.)
 
Wie bei Gzip bringen die Parameter <tt>-1 </tt>bis <tt>-9 </tt>(Standard) Bzip2 dazu, mehr oder weniger stark zu komprimieren. Um die Vorgabe zu ändern, setzen Sie die Umgebungsvariable <tt>GZIP </tt>. Fügen Sie beispielsweise in die Datei <tt>~/.bashrc </tt>die Zeile
 
export BZIP2="-6"
 
ein. Zum Entpacken geben Sie entweder Bzip2 die Option <tt>-d </tt>mit auf den Weg oder verwenden den speziellen Entpackbefehl Bunzip2. Genau wie Gzip schützt das Programm vor dem Überschreiben vorhandener Dateien. Anders als bei Gzip überlässt das Tool Ihnen aber nicht die Entscheidung und fragt nach, sondern bricht einfach den Vorgang ab:
 
$ '''bunzip2 peggy.jpg.bz2'''
bunzip2: Output file peggy.jpg already exists.
 
Der Parameter <tt>-f </tt>schaltet dieses Verhalten ab.
 
==== Ab ins Archiv  ====
 
Um mehrere Dateien in einem Archiv zusammenzufassen, verwenden Sie den Befehl Tar. Der Name des Programms (englisch "tape archiver") weist auf seine ursprüngliche Verwendung hin: Das Programm war ursprünglich für die Verwaltung von Bandarchiven zuständig. Es leistet aber mehr als einfach nur Dateien zusammenzufassen: Tar können Sie über Optionen anweisen, die Archive direkt mit Gzip oder Bzip2 zu komprimieren -- so entstehen die typischen <tt>tar.gz </tt>- und <tt>tar.bz2 </tt>-Archive.
 
Mehrere Dateien fassen Sie zu einem Archiv zusammen, indem Sie beispielsweise
 
tar -cvf archiv.tar datei1 datei2
 
eingeben. Die drei Optionen <tt>-c </tt>, <tt>-v </tt>und <tt>-f </tt>, die hier zusammengefasst wurden, sorgen dafür, dass Tar ein Archiv anlegt ("c" für englisch "create"), dabei verrät, was im Hintergrund passiert ("v" für englisch "verbose"), und das erste Argument ( <tt>archiv.tar </tt>) als Archivnamen interpretiert ("f" für englisch "file").
 
Stellen Sie zu einem späteren Zeitpunkt fest, dass Sie eine Datei vergessen haben, müssen Sie das Archiv nicht neu packen, sondern hängen diese einfach über <tt>-r </tt>an:
 
tar -rf archiv.tar datei3
 
Genauso leicht ist das Entpacken mit der Option <tt>-x </tt>("x" für englisch "extract", auspacken):
 
tar -xvf archiv.tar
 
Um sicherzustellen, dass Tar keine vorhandenen Dateien mit Archivinhalten überschreibt, entpacken Sie das Archiv sicherheitshalber in einem temporären Unterordner oder ersetzen im Aufruf <tt>-x </tt>durch <tt>-t </tt>, um zunächst einen Trockenlauf durchzuführen und zu sehen, welche Dateien und Verzeichnisse sich im Archiv befinden.
 
Ganze Verzeichnisse inklusive ihrer Unterordner erfassen Sie übrigens auf dieselbe Weise -- geben Sie statt einzelner Dateinamen einfach den Ordner an:
 
$ '''tar -cvf archiv.tar ordner/'''
test/
test/screenie.bmp
test/link.bmp
test/neu/
test/neu/screenie.jpg
test/neu/neu/
...
 
Gerade, wenn Sie Tar für Backups einsetzen, kann es sinnvoll sein, einzelne Verzeichnisse auszuklammern. Dabei hilft der Parameter <tt>--exclude </tt>. Weiterhin praktisch für solche Sicherungskopien ist der Parameter <tt>--rsh-command </tt>, über den Sie Tar beispielsweise mitteilen, dass es das Backup per SSH <span style="color:#008080;">[1] </span>auf einen anderen Rechner übertragen soll. Ein vollständiger Beispielaufruf sieht dann so aus:
 
tar -cvf user@host:/scratch/tmp/backup_$(date '+%Y_%m_%d').tar --rsh-command=/usr/bin/ssh --exclude=/proc /
 
Aufgeschlüsselt bedeutet der recht lange Kommandozeilenaufruf: Erstelle per SSH auf dem Rechner <tt>host </tt>im Verzeichnis <tt>/scratch/tmp/ </tt>eine Sicherungskopie, deren Name sich aus <tt>backup_ </tt>, dem aktuellen Datum <span style="color:#008080;">[2] </span>und der Dateiendung <tt>.tar </tt>zusammensetzt (zum Beispiel <tt>backup_2005_09_05.tar </tt>). Dieses Backup umfasst alles ausgehend vom Wurzelverzeichnis <tt>/ </tt>, klammert aber das Verzeichnis ''/proc ''aus, das keine echten Dateien enthält.
 
==== Und jetzt alle!  ====
 
Wie schon erwähnt, bringt Tar einige Parameter mit, die das Archiv in einem Rutsch mit Gzip oder Bzip2 komprimieren. Für die Gzip-Variante hat der Aufruf die Form
 
tar -cvzf archiv.tar.gz ''Datei(en)''
 
Soll stattdessen Bzip2 zum Einsatz kommen, ersetzen Sie die Option <tt>-z </tt>durch <tt>-j </tt>:
 
tar -cvjf archiv.tar.bz2 ''Datei(en)''
 
Entsprechend setzen Sie die Parameter <tt>-z </tt>und <tt>-j </tt>auch beim Entpacken wieder ein und sparen einen Arbeitsschritt, indem Sie beispielsweise statt
 
bunzip2 archiv.tar.bz2
tar -xvf archiv.tar
 
einfach
 
tar -xvjf archiv.tar.bz2
 
tippen.
 
=== Backup mit tar ===
 
<tt>'''tar'''</tt> (tape archiver) verwaltet Dateiarchive
 
'''tar''' [-Acdrtux] [-delete] [-b ''N''] [-BgGhiklmMoOpPPsSvwWz] [-C ''Verzeichnis''] [-f ''Datei''] [-F ''Datei''][-K ''Datei''] [-L ''Länge''] [-N ''Datum''] [-T ''Datei''] [-V ''Name''] [-X ''Datei''] [0-7] [{lmh}]
 
<tt>'''tar'''</tt> ist ursprünglich ein Tool zur Verwaltung von Bandarchiven. Das GNU-<tt>tar</tt> kann aber auch auf ,,rohen`` Disketten oder in normalen Dateien Archive im <tt>tar</tt> Format anlegen und verwalten. Normalerweise werden Archive mit <tt>tar</tt> nicht komprimiert. Das GNU-<tt>tar</tt> kann aber die Ein- und Ausgabe durch einen Kompressor leiten. Die neuen Versionen (ab 1.11.2) unterstützen sowohl <tt>compress</tt> als auch <tt>gzip</tt>.
 
Wenn auf der Kommandozeile keine Datei und kein Gerät angegeben ist, versucht <tt>tar</tt> auf die Gerätedatei eines Magnetbandgerätes zuzugreifen. Je nach Konfiguration ist das meist /dev/tape oder /dev/rmt0. Sie können eine andere Voreinstellung wählen, indem Sie die Umgebungsvariable <tt>TAPE</tt> mit dem Pfadnamen der entsprechenden Gerätedatei belegen.
 
'''Optionen'''
 
Die Optionen können aus Gründen der Kompatibilität mit anderen, älteren Versionen von <tt>tar</tt> auch in Abweichung von den [../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node23.html#goldenrules POSIX-Regeln] ohne das für Optionen übliche Minuszeichen angegeben werden. <tt>tar</tt> interpretiert den ersten Kommandoparameter immer als Optionsblock. Optionsargumente müssen dann im Anschluß an den Optionsblock in der Reihenfolge angegeben werden, in der die Optionen im Optionsblock erscheinen.
 
Einige wenige spezielle Optionen des GNU-<tt>tar</tt> sind nicht als einfache Buchstabenoptionen erreichbar. Diese Schalter und Regler können Sie nur in der für GNU-Kommandos spezifischen verbalen Form erreichen.
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
| style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-A</tt> '''
| style="border:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | hängt ein komplettes Archiv an ein anderes Archiv an (nicht für Magnetbänder)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-c</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzeugt ein neues Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-d</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | vergleicht das Archiv mit dem Dateisystem
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''- -delete ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | löscht die ''Datei'' aus dem Archiv (nicht für Magnetbänder)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-r</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | hängt Dateien an das Archiv an (nicht für Magnetbänder)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-t</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | zeigt den Inhalt des Archivs
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-u</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ersetzt Dateien, die neuer als eine bereits archivierte Version sind; ist eine Datei noch nicht archiviert, so wird sie eingefügt (nicht für Magnetbänder)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-x</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | kopiert ''Datei'' oder alle Dateien aus dem Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''Weitere Optionen '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" |
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-atime-preserve</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt <tt>tar</tt>, die Zugriffszeit nach der Archivierung zurück zu setzen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-b</tt> ''N'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | setzt die Blockgröße auf ''N''x512 Bytes (Voreinstellung ist N=20)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-B</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | unterdrückt den Abbruch von <tt>tar</tt> beim Lesen unvollständiger Blöcke; zum Lesen von 4.2BSD Pipes
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-C</tt> ''Verzeichnis'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | wechselt während der Ausführung in das ''Verzeichnis'', um von dort weitere Dateien zu archivieren
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-f</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | benutzt ''Datei'' oder das damit verbundenen Gerät als Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-F</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | bei mehrteiligen Archiven (Option <tt>-M</tt>) wird das Shellscript ''Datei'' ausgeführt, wenn das Medium voll ist
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-G</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzeugt am Anfang des Bandarchives einen speziellen Eintrag für jedes archivierte Verzeichnis; spezielles GNU Format
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-g</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzeugt eine ''Datei'' mit einer Liste der archivierten Verzeichnisse als Zeitmarke der Archivierung; wenn die ''Datei'' bereits existiert, werden nur die Dateien archiviert, die nach dieser Zeitmarke erzeugt oder verändert wurden (spezielles GNU Format: 1. Zeile = Zeitmarke, 1. Feld = Nr. der Partition, 2. Feld = Inode des Verzeichnisses, 3. Feld = Name des Verzeichnisses)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-h</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | archiviert die referenzierten Dateien anstelle der Links
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-i</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ignoriert Blöcke mit Nullbytes im Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-k</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | existierende Dateien werden beim Auspacken von Archiven nicht überschrieben
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-K</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | beginnt eine Aktion bei ''Datei'' im Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-l</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | verhindert Archivierung von Dateien aus anderen Dateisystemen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-L</tt> ''Länge'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | wartet auf Medienwechsel nach ''Länge'' Bytes
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-m</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | das Datum der letzten Änderung wird nicht mitarchiviert
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-M</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | das Archiv ist auf mehrere Medien verteilt (Multi-Volume)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-N</tt> ''Datum'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | archiviert nur Dateien, die neuer sind als ''Datum''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-o</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | benutzt das alte V7 <tt>tar</tt>-Format anstelle des ANSI Formates
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-O</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | schreibt die Dateien in die Standardausgabe
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-p</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erhält die Zugriffsrechte der Dateien
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-P</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | archiviert mit absoluten Dateinamen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-R</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | gibt zu jeder Meldung die Blocknummer des Archivblocks aus, von dem die Meldung verursacht wurde
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-s</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | zeigt an, daß die Liste von Dateien im Argument die gleiche Reihenfolge hat wie die Dateien im Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-T</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | holt die Namen der zu archivierenden Dateien aus ''Datei''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-v</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | meldet jede Aktion
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-V</tt> ''Name'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzeugt ein Archiv mit dem (internen) Label ''Name''
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-w</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erwartet interaktiv Bestätigung jeder Aktion
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-W</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | verifiziert die geschriebenen Daten im Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-X</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | liest aus der ''Datei'' Namen oder reguläre Ausdrücke von bzw. für Dateien, die nicht archiviert werden sollen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-z</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzeugt ein mit <tt>gzip</tt> komprimiertes Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-Z</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzeugt ein mit <tt>compress</tt> komprimiertes Archiv
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''-{0..7}{lmh} '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | spezifiziert das Gerät und die Dichte des Speichermediums (für Diskettenarchive ohne Bedeutung); 0 ist der erste Streamer, 1 der zweite und so weiter; die Dichte bestimmt den Bandtyp
|-
|}
'''Beispiel'''
 
Der Tape Archiver ist das verbreitetste Werkzeug zur Datensicherung in Unix-Systemen. Ursprünglich rein zur Datenübertragung auf Bänder konzipiert, mit deren Hilfe der Datenaustausch zwischen verschiedenen Computern zu Zeiten fehlender Netzwerke ermöglicht werden sollte, hat sich gerade durch die Eignung von Bändern als Backupmedium das Programm quasi zum Standardwerkzeug für das Backup in kleineren Netzwerken etabliert, trotz des Fehlens einer brauchbaren Unterstützung von inkrementellen Backups.
 
Als Werkzeug zur [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Archivierung Archivierung ]wurde [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Archivierung#tar_-_Das_Standard-Archiv-Format tar ]im Kapitel [../../../../index.php%3Ftitle=Linuxfibel_-_Nuterkommandos&action=edit Nutzerkommandos ]bereits vorgestellt. Hier soll nun der Schwerpunkt auf den Einsatz des Kommandos zum Backup von Daten liegen.
 
tar [ OPTION... ] [ DATEI... ]
 
tar arbeitet auf Dateiebene, kann also beliebige Dateien und Verzeichnisse in eine einzige Zieldatei verpacken. Zieldatei kann dabei alles bedeuten, was unter Unix als Datei betrachtet wird, also ein Gerät, eine normale Datei, eine Pipe...
 
Die drei wichtigsten Optionen sind c zum Erzeugen eines Archivs, t zum Betrachten des Archivinhalts und x zum Entpacken desselben.
 
==== Volles Backup  ====
 
tar wird alle angegebenen Dateien (oder rekursiv den Inhalt von Verzeichnissen) in ein Archiv verpacken. Per Voreinstellung versucht das Kommando das Archiv auf einen Streamer zu schreiben (/dev/tape oder /dev/rmt0), ist kein solcher im System installiert, schreibt tar das Ergebnis auf die Standardausgabe. Um das Archiv in einer Datei zu sichern, ist die Option -f Datei zu wählen.
 
Eine angenehme Eigenschaft ist der Umgang mit&nbsp;»Multivolumes«&nbsp;(Option -M) . Speichert man z.B. das Archiv auf eine Diskette und reicht deren Speicherkapazität nicht aus, so fordert tar automatisch zum Wechsel des Mediums auf:
 
user@sonne> tar -Mcf /dev/fd0h1440 ~/Books/
tar: Removing leading `/' from absolute path names in the archive
Prepare volume #2 for /dev/fd0h1440 and hit return:
Prepare volume #3 for /dev/fd0h1440 and hit return:
Prepare volume #4 for /dev/fd0h1440 and hit return:
 
Im Beispiel schreibt tar die Daten auf eine (unformatierte) Diskette, weswegen dem Kommando genau mitgeteilt werden muss, wie groß die Speicherkapazität dieser ist (es ist das entsprechende Device anzugeben). Als erstes entfernt tar in allen Pfadnamen den führenden Slash (-P forciert die Verwendung absoluter Pfadnamen), so dass das Archiv bei einem späteren Entpacken an beliebiger Stelle im Dateisystem extrahiert werden kann - bei Beibehaltung der Verzeichnisstruktur. Nachfolgend wird der Benutzer zum Wechsel der Disketten aufgefordert. Alternativ zu&nbsp;»-M«&nbsp;kann mit -L Anzahl der Medienwechsel nach Archivierung von Anzahl Bytes erzwungen werden.
 
Es ist allerdings furchtbar uneffizient, das Archiv unkomprimiert abzulegen. tar kann zum Glück mit mehreren [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Archivierung Packern ]zusammen arbeiten. Mit -z wird das Archiv mit [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Archivierung#gzip_-_Dateien_komprimieren gzip ]komprimiert; -Z nutzt das (veraltete) Werkzeug [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Archivierung#compress_-_Dateien_komprimieren compress ]und -j (alt: -I) den derzeit effektivsten Packalgorithmus des Kommandos [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Archivierung#bzip2_-_Dateien_komprimieren bzip2. ]Wurde ein Archiv einmal gepackt, ist bei allen weiteren Operationen die Option für den jeweiligen Packer anzugeben! Das Packen funktioniert allerdings nicht bei Multilevel-Archiven. Ein Ausweg wäre das&nbsp;»vorab«-Komprimieren einer jeden Datei (z.B. mittels eines Skripts) mit anschließender Archivierung.
 
==== Inkrementelles Backup  ====
 
tar unterstützt nur eine rudimentäre Variante des inkrementellen Backups, in dem Daten zur Archivierung ausgewählt werden können, die&nbsp;»neuer«&nbsp;als ein anzugebendes Datum sind. Das Datum (-n Datum) ist hierbei im Format&nbsp;»Jahr-Monat-Tag«&nbsp;anzugeben. Um z.B. alle Dateien zu erfassen, die in den letzten 7 Tagen (ab aktuellem Zeitpunkt) modifiziert wurden, kann folgender Kommandoaufruf verwendet werden:
 
user@sonne> tar -n $(date -d "now 7 days ago" +%Y-%b-%d) -czf /tmp/backup.tgz ~/Books/
 
Im Beispiel wurde bewusst die etwas verwirrende Kalkulation des Datums mit Hilfe von [../../../../index.php%3Ftitle=Linuxfibel_-_Sytem-Administration_-_Zeit_und_Steuerung&action=edit date ]gewählt, da dessen Einsatz das Schreiben eines Skripts zum automatischen Erzeugen von inkrementellen Backups vereinfacht.
 
==== Überprüfung des Archives  ====
 
Um sich von einer ordnungsgemäßen Archivierung zu überzeugen, sollte das resultierende Archiv einem Test unterzogen werden. Da der Slash automatisch entfernt wurde, ist zuvor ins Wurzelverzeichnis zu wechseln oder das Arbeitsverzeichnis mit -C Pfad zu ändern und (in Bezug auf obiges Beispiel) Folgendes aufzurufen:
 
user@sonne> tar -C / -d -f /dev/fd0h1440
 
tar überzeugt sich nun, dass alle Dateien des Archivs auch im Dateisystem existieren. Sobald eine Unstimmigkeit festgestellt wird, wird das Kommando den Fehler ausgeben:
 
<nowiki># Um einen Fehler zu provozieren, wurde eine Datei verschoben</nowiki>
user@sonne> tar -df /dev/fd0h1440
home/user/Books/linuxfibel.pdf: File does not exist
 
==== Recovery  ====
 
Zu einem Backup gehört natürlich auch eine Möglichkeit, dieses wieder zurückzuspielen. Hier gelangt die Option -x (extract) zum Einsatz. Im Falle von relativen Pfadangaben im Archiv wird die Verzeichnisstruktur unterhalb des aktuellen Verzeichnisses erzeugt. Sie sollten also entweder zuvor ins Zielverzeichnis wechseln, oder dieses mit -C Pfad explizit angeben:
 
user@sonne> tar -C / -x -f /dev/fd0h1440
 
Handelt es sich um ein auf mehrere Medien verteiltes Archiv, muss die Option -M angegeben werden. tar fordert dann zum Medienwechsel auf.
 
Möchten Sie nur einzelne Dateien extrahieren, sind deren Namen mit vollständiger Pfadangabe auf der Kommandozeile anzugeben. Hier hilft eventuell die Option -t, um den korrekten Namen, so wie er im Archiv gespeichert ist, zu erfahren:
 
user@sonne> tar tf /dev/fd0h1440
home/user/Books/access.htm
home/user/Books/index.htm
home/user/Books/stuff.htm
home/user/Books/test.htm
...
user@sonne> tar -C / -x -f /dev/fd0h1440 home/user/Books/index.htm
 
==== Grafische Verpackung: kdat  ====
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
|| Mit dem Programm kdat steht den KDE-Benutzern eine grafische Oberfläche zur Backupverwaltung mit tar zur Verfügung. Leider wird als Backupmedium derzeit nur das Tape unterstützt.
 
Nach dem Start von kdat sollte unter dem Menüpunkt&nbsp;»Bearbeiten->Einstellungen«&nbsp;der Typ des Tapes (Speicherkapazität, Device, Blockgröße) angepasst werden.
 
Anschließend muss das Tape gemountet werden, wobei kdat testet, ob das Band formatiert ist und ggf. zu einer Formatierung auffordert (Vorsicht: eventueller Datenverlust).
|| [[Image:Grafik4.png|right|top]]
|-
|}
Das vorgeschlagene&nbsp;»Label«&nbsp;kann übernommen werden, es ist ein eindeutiger Name für das Backup.
 
Im Hauptfenster ist der Verzeichnisbaum u.a. des Rechners dargestellt. Jedes zu sicherne Verzeichnis bzw. jede Datei ist durch Klick mit der rechten Maustaste zu selektieren. Ein Verzeichnis schließt dabei die enthaltenen Dateien/Verzeichnisse ein, wobei diese wiederum von einer Sicherung ausgeschlossen werden können. Ein markierter Eintrag ist hervorgehoben dargestellt. Über das Sichern-Symbol (oder&nbsp;»Datei->Sichern«) werden alle selektierten Dateien und Verzeichnisse auf das Tape geschrieben.
 
Um nicht bei jedem Aufruf die Dateien einzeln markieren zu müssen, können beliebig viele Sicherungsprofile angelegt werden. Jedes Profil enthält eine Liste der zu sichernden Daten.
 
=== Low Level Backup (dd) ===
 
Diskdump ist ein sehr flexiebles Werkzeug, das ab einem bestimmten Startpunkt eine bestimmte Menge »roher« Daten liest und diese 1:1 in eine Zieldatei oder auf ein Zielgerät schreibt. Zusätzlich kann dd die gelesen Daten konvertieren.
 
Diese Eigenschaft erlaubt es, Dateien beliebiger Dateisysteme zu sichern, selbst wenn Linux diese nicht lesen kann.
 
dd if=QUELLE of=ZIEL [OPTIONEN]
 
QUELLE und ZIEL können hierbei sowohl ein Device als auch eine Datei sein. Werden keine weiteren Optionen angegeben, so werden alle Daten aus QUELLE gelesen. Handelt es sich bei QUELLE um eine Partition, wird deren gesamter Inhalt kopiert:
 
<nowiki># dd if=/dev/hda of=/dev/hdc</nowiki>
 
Im Beispiel wird die gesamte erste IDE-Festplatte (/dev/hda) des Systems auf die dritte (/dev/hdc) kopiert. Es sollte jedem bewusst sein, dass der alte Inhalt der dritten Festplatte damit überschrieben wird. Auch sollte diese über die gleiche Kapazität wie die erste Platte verfügen (sonst muss man sich die Anzahl der kopierten Bytes merken). Um die Daten später zurückzuspielen, vertauscht man die Angaben von QUELLE und ZIEL.
 
Ist das Ziel einer Kopieraktion eine Datei, könnte bei Kernel-Versionen <2.4 die Beschränkung der Dateigröße von 2 GB unser Vorhaben zunichte machen, in einem solchen Fall muss die QUELLE auf mehrere Zieldateien aufgeteilt werden. Hierzu benötigt dd mehrere Optionen. Mit bs=BYTES muss die Anzahl Bytes, die in einem Schritt zu lesen oder schreiben sind, angegeben werden. Wieviele Schritte getätigt werden sollen, legt die Option count=ANZAHL fest. Um bspw. den Masterbootsektor (Mbr) der ersten Festplatte in eine Datei zu schreiben, könnte man folgenden Aufruf verwenden:
 
<nowiki># dd if=/dev/hda of=/tmp/mbr.save bs=512 count=1</nowiki>
 
Um jetzt den Superblock (1 k groß) der ersten Partition zu sichern, müssen sowohl Mbr als auch der 512 Bytes lange Bootsektor (also zwei Blöcke) übersprungen werden. Hierzu verwendet man die Option skip=ANZAHL.
 
<nowiki># dd if=/dev/hda of=/dev/superblock.save bs=512 count=2 skip=2 </nowiki>
 
Wenn dd seine Arbeit verrichtet hat, gibt es eine Statistik aus:
 
3385223+0 records in
3385223+0 records out
1733234176 bytes (1.7 GB) copied, 6.42173 seconds, 270 MB/s
 
Mit Hilfe des Signals SIGUSR1(10) kann dd auch während der Arbeit eine Statistik ausgeben:
 
<nowiki>#</nowiki> dd if=/dev/zero of=/dev/null count=10MB & pid=$!
<nowiki>#</nowiki> kill -10 $pid
 
'''Optionen'''
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
| style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''bs=bytes'''
| style="border:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Erzwingen von ibs=bytes und obs=bytes.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''cbs=bytes'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Konvertieren von bytes Bytes auf einmal.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''conv=schlüsselwörter'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Konvertieren der Datei gemäß der kommagetrennten Liste von Schlüsselwörtern.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''count=blöcke'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Nur blöcke Eingabeblöcke kopieren.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''ibs=bytes'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Lesen von bytes Bytes auf einmal.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''if=datei'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Lesen aus datei statt von der Standardeingabe.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''obs=bytes'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Schreiben von bytes Bytes zur Zeit.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''of=datei'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Schreiben in datei statt in die Standardausgabe.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''seek=blöcke'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Überspringen von blöcke Blöcken der Größe von obs beim Beginn der Ausgabe.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''skip=blöcke'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Überspringen von blöcke Blöcken der Größe von ibs beim Beginn der Eingabe.
|-
|}
''bytes'' können folgende multiplikativen Endungen tragen: xM M, c 1, w 2, b 512, kD 1000, k 1024. MD 1.000.000, M 1.048.576, GD 1.000.000, G 1.073.741.824, und so weiter für T, P, E, Z, Y.
 
'''Schlüsselwörter'''
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
| style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''ascii'''
| style="border:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | von EBCDIC in ASCII.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''ebcdic'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | von ASCII in EBCDIC.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''ibm'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | von ASCII in alternatives EBCDIC.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''block'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Auffüllen von mit Zeilenumbrüchen terminierten Datensätzen durch Leerzeichen bis zur cbs-Größe.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''unblock'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Ersetzen von nachlaufenden Leerzeichen in Datensätzen von cbs-Größe mit Zeilenumbrüchen.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''lcase'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Ändern von Großbuchstaben in Kleinbuchstaben.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''notrunc'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Kein Abschneiden der Ausgabedatei.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''ucase'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Ändern von Kleinbuchstaben in Großbuchstaben.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''swab'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Jedes Paar von Eingabebytes vertauschen.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''noerror'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Nach Lesefehlern fortfahren.
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | '''sync'''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | Jeden Eingabeblock mit NULLen zur ibs-Größe auffüllen; wenn mit block oder unblock benutzt, stattdessen mit Leerzeichen.
 
|-
|}
==== Anwendung von Diskdump ====
 
'''Eine Diskette in ein Imagefile schreiben '''
 
'''dd if=/dev/fd0 of=image file'''Achtung, das Diskettenlaufwerk darf nicht gemountet sein!
 
<u>Beispiel</u>
 
dd if=/dev/fd0 of=/tmp/abc_diskette.im
 
'''Eine Diskette aus einem Imagefile erstellen '''
 
'''dd if=image file of=/dev/fd0 '''Achtung, das Diskettenlaufwerk darf nicht gemountet sein!
 
<u>Beispiel</u>
 
dd if=/tmp/abc_diskette.img of=/dev/fd0
 
'''Eine CD in ein Imagefile schreiben '''
 
Genauso wie von Disketten lassen sich auch von CDs Images erstellen: '''dd if=cd-laufwerk of=image file '''Achtung, das CD-Laufwerk darf nicht gemountet sein!
 
<u>Beispiel</u>
 
dd if=/dev/cdrom of=/tmp/CD-image.img
 
'''Ein Imagefile mounten '''
 
mount -o loop imagefile ziel
 
Das Imagefile kann so wie eine Festplatte / ein Verzeichnis behandelt werden. Sehr praktisch, um z.B. ein CD-Abbild als "virtuelles CD-Laufwerk" zu benutzen. Geht natuerlich auch mit anderen Imagedateien, z.B. Diskettenimages oder Festplattenimages
 
mount -o loop /tmp/cd-image.img /mnt/virtualCD
 
'''Den Master Boot Record sichern '''
 
Der dd-Befehl ist auch geeignet, um den Master Boot Record einer Festplatte auszulesen und in eine Datei zu schreiben.
 
<div style="margin-left:0cm;margin-right:0cm;">dd if=festplatte of=dateiname bs=512 count=1
 
<u>Beispiel</u>
 
dd if=/dev/hda of=/tmp/mbr.img bs=512 count=1
 
'''Einen gesicherten Master Boot Record zurückschreiben '''
 
Den mit dem vorigen Befehl gesicherten MBR kann man natuerlich auch wieder auf eine Festplatte zurueckschreiben.
 
<div style="margin-left:0cm;margin-right:0cm;">dd if=dateiname of=festplatte bs=512 count=1
 
<u>Beispiel</u>
 
dd if=/tmp/mbr.img of=/dev/hda bs=512 count=1
 
'''Die primäre Partitionstabelle wiederherstellen, ohne den MBR zu überschreiben'''
 
dd if=mbr.img of=/dev/hda bs=1 count=64 skip=446 seek=446
 
'''Einen komprimiertes Image von einer Festplatte oder Partition erstellen '''
 
Um von einer Festplattenpartition ein Backup zu machen, ist dieser Befehl sinnvoll. Durch die Komprimierung kann oft ca. die Häfte des Platzes gespart werden.
 
<div style="margin-left:0cm;margin-right:0cm;">dd if=partition/festplatte bs=64k |gzip -c >dateiname.img.gz
 
<u>Beispiel (1. Partition der 1. Festplatte)</u>
 
dd if=/dev/hda1 bs=64k |gzip -c >/tmp/hda1.img.gz
 
<u>Beispiel 2 (Verschlüsselt auf entfernten Rechner übertragen)</u>
 
dd if=/dev/hda1 bs=64k |gzip -c | ssh [mailto:user@rechner user@rechner2] 'cat >/tmp/rechner1.hda1.img.gz'
 
'''Das komprimierte Image wieder zurückschreiben '''
 
<div style="margin-left:0cm;margin-right:0cm;">cat dateiname.gz |gzip -d | dd of=festplatte bs=64k
 
<u>Beispiel 1</u>
 
cat /tmp/hda1.img.gz |gzip -d | dd of=/dev/hda1 bs=64k
 
<u>Beispiel 2</u>
 
ssh [mailto:user@rechner2 user@rechner2] 'cat /tmp/rechner2.hda1.img.gz' |gzip -d | dd of=/dev/hda1 bs=64k
 
'''README'''
 
Dd erstellen 1:1-Kopien von Datenträgern aller Art und rettet so beispielsweise die Daten von kränkelnden Festplatten. Das Tool Mkisofs sammelt Daten aus dem Verzeichnisbaum und schreibt sie in ein ISO-Image. So lassen sich Backups auf CD/DVD sichern oder bootfähige Medien erzeugen.
 
Zum Brennen von Daten-CDs oder -DVDs stehen auf der Kommandozeile mehrere Anwendungen zur Verfügung. Bevor es jedoch ans eigentliche Brennen geht, muss ein so genanntes <span style="color:#ff0000;">'''ISO'''</span>-Image erstellt werden. Für diesen Zweck greifen Sie beispielsweise zu Mkisofs: Es unterstützt die <span style="color:#ff0000;">'''Rockridge'''</span>- und <span style="color:#ff0000;">'''Joliet'''</span>-Erweiterungen, erzeugt Images für bootbare Medien und Dateien und kann automatische Backups anlegen, wobei es einzelne Dateien ausschließt. Eine Alternative kommt in Form von Dd, das nicht nur ISO-Abbilder erzeugt, sondern oft auch die letzte Rettung für die Daten von sterbenden Festplatten darstellt.
 
<span style="color:#ff0000;">'''ISO:'''</span> Linux unterstützt mehrere Typen von Dateisystemen, wie Ext2, Ext3, ReiserFS und selbst FAT und NTFS. ISO 9660, wie der komplette Name lautet, ist der Standard für die Verwaltung von Dateien auf CD-ROMs. <span style="color:#ff0000;">'''Rockridge/Joliet:'''</span> Die Rockridge-Erweiterung ergänzt das ISO-Dateisystem um Unix-typische Dateiinformationen, wie Besitzer, Gruppe, Zugriffsrechte und symbolische Links. So tritt beim Kopieren von Daten aus einem Unix-Dateisystem auf CD kein Informationsverlust ein. Zudem erlaubt Rockridge längere Dateinamen. Die Microsoft-Erweiterung Joliet des ISO-9660-Standards lässt ebenfalls lange Dateinamen zu.
 
==== Convert und Copy ====
 
Das praktische kleine Tool Dd müsste eigentlich den Namen Cc tragen: Convert & Copy. Da dieser aber schon für den C-Compiler vergeben war, griffen die Entwickler einfach zum nächsten Buchstaben im Alphabet.
 
Dd erstellt 1:1-Kopien von Datenträgern. Egal ob Festplattenpartitionen, CDs oder DVDs -- Dd liest und schreibt zuverlässig blockweise. Da Dd diese <span style="color:#ff0000;">'''Blöcke'''</span> nicht verarbeitet oder interpretiert, spielt es keine Rolle, um welches Dateisystem es sich handelt. Sogar vor Festplatten mit Fehlern schreckt Dd nicht zurück (siehe Abschnitt "Letzte Rettung"). Der einfache Aufruf für Dd lautet:
 
dd if=''Quelle'' of=''Ziel''
 
<span style="color:#ff0000;">'''Block:'''</span> Eine fortlaufende Ansammlung von Bytes auf einem Datenträger. Einige Geräte wie Festplatten, Disketten und CD-/DVD-Laufwerke organisieren ihre Daten in solchen Blöcken ("block devices"). Andere Geräte arbeiten zeichenorientiert ("character devices") und lesen/schreiben einzelne Bytes.
 
Über <tt>if</tt> geben Sie also an, von wo Dd die Daten liest, und hinter <tt>of</tt> definieren Sie die Ausgabe. Als Quelle und Ziel dienen oft ein Gerät, wie eine Festplatte(npartition) oder ein CD-/DVD-Laufwerk. Alternativ geben Sie nach dem Gleichheitszeichen eine Datei an. Um etwa die Festplattenpartition <tt>hda1</tt> 1:1 nach <tt>/dev/hdb1</tt> zu kopieren, tippen Sie:
 
dd if=/dev/hda1 of=/dev/hdb1
 
Ebenso können Sie Dd dazu verwenden, schnell eine CD oder DVD auf der Kommandozeile zu kopieren. Ein entsprechendes ISO-Image erstellen Sie beispielsweise über:
 
$ dd if=/dev/hdc of=abbild.iso
9153728+0 Datensätze ein
9153728+0 Datensätze aus
4686708736 bytes transferred in 1209,649659 seconds (3874435 bytes/sec)
 
Das Medium muss dazu nicht gemountet <span style="color:#008080;">[1]</span> sein. Die Laufwerksangabe <tt>/dev/hdc</tt> ersetzen Sie durch den entsprechenden Gerätenamen Ihres Laufwerks; das ISO-Image landet anschließend in der Datei <tt>abbild.iso</tt> des aktuellen Verzeichnisses.
 
==== Optimieren mit Optionen ====
 
Das Programm Dd bringt einige Schalter mit. Ein praktischer Parameter, der die Arbeit des Programms maßgeblich beschleunigt, ist <tt>bs</tt> (englisch "block size" = Blockgröße). Standardmäßig arbeitet Dd mit 512 Byte großen Blöcken -- es liest jeweils 512 Bytes ein und schreibt diese in die Ausgabedatei. Wählen Sie größere Blöcke, arbeitet Dd dementsprechend schneller. So sorgt der Aufruf:
 
dd if=/dev/hda1 of=/dev/hdb1 bs=2k
 
dafür, dass Dd die Partition in 2 KByte (2048 Bytes) großen Blöcken kopiert. Unterschreitet der letzte Block die angegebene Blockgröße, füllt Dd ihn nicht auf:
 
$ dd if=/dev/hda1 of=/dev/hdb1 bs=6k
16059+1 Datensätze ein
16059+1 Datensätze aus
98670592 bytes transferred in 13,801482 seconds (7149275 bytes/sec)
 
Die Ausgabe zeigt, dass Dd 16059 Blöcke der Größe 6144 Bytes und einen "übrig gebliebenen" Block von 4096 Byte kopiert hat.
 
Neben der Blockgröße können Sie angeben, wie viele dieser Blöcke Dd lesen soll: Um 40 MByte zu kopieren, schreiben Sie <tt>bs=1M count=40</tt>. Dabei spezifiziert die Option <tt>count</tt> die Anzahl der Blöcke. Das macht beispielsweise Sinn, wenn Sie den Boot-Sektor einer Festplatte sichern wollen -- Sie kopieren in diesem Fall nur den ersten, 512 Bytes großen Block mit dem Aufruf:
 
dd if=/dev/hda of=bootsektor bs=512 count=1
 
==== Letzte Rettung ====
 
Das Programm Dd erweist sich auch als unverzichtbarer Helfer, wenn es um die Rettung von Daten aus zerstörten Dateisystemen geht. Bevor Sie sich an die Reparatur begeben, sollten Sie zunächst ein Backup vornehmen. Dazu erstellen Sie mit Dd eine 1:1-Kopie des zerstörten Systems und führen auf dieser die Reparaturversuche durch.
 
Da Dd standardmäßig zerstörte Sektoren von der Kopie ausschließt, setzen Sie die Parameter <tt>conv=noerror,sync</tt> ein:
 
dd bs=512 conv=noerror,sync if=/dev/hda of=/dev/hdb
 
Auf diese Weise teilen Sie Dd mit, dass es mit dem Lesen und Ablegen von Daten auch dann fortfahren soll, wenn es defekte Sektoren findet. Dabei sorgt <tt>noerror</tt> dafür, dass Dd bei Fehlern nicht abbricht, und <tt>sync</tt> füllt unlesbare Sektoren mit Nullen auf.
 
=== ISO-Images mit Mkisofs ===
 
Das Programm Mkisofs ("make ISO9660 filesystem") erstellt ausschließlich ISO-Images -- das aber gekonnt und mit vielen zusätzlichen Features. Der einfache Aufruf lautet:
 
mkisofs ''Parameter'' -o datei.iso ''/Verzeichnis/Daten''
 
Über <tt>-o</tt> definieren Sie den Namen der Zieldatei. Dahinter geben Sie die Daten an, die ins Image wandern sollen. Als optionale Parameter teilen Sie Mkisofs beispielsweise über <tt>-r</tt> mit, dass Sie die Rockridge-Erweiterung wünschen. Alternativ darf hier auch <tt>-R</tt> stehen, um zusätzlich Rechte und Dateieigentümer zu setzen. Die Joliet-Erweiterung schalten Sie entsprechend über <tt>-J</tt> ein:
 
mkisofs -J -R -o datei.iso ''/Verzeichnis/Daten''
 
Über den Parameter <tt>-V</tt> setzen Sie einen Namen (Volume-ID) für die spätere CD/DVD. Enthält dieser Leer- und Sonderzeichen, schließen Sie ihn in Hochkommata ein:
 
mkisofs -V "Backup 20060502" ...
 
Darf es hingegen etwas ausführlicher sein, schalten Sie mit <tt>-v</tt> ("verbose") auf eine lange Ausgabe um (Abbildung <span style="color:#008080;">((1))</span>); mit <tt>-quiet</tt> hingegen stellen Sie das Programm ruhig. Wer die Statusmeldungen nicht im Terminal sehen will, dennoch aber nicht auf die Informationen verzichten möchte, leitet sie in ein Protokoll (hier: <tt>log.txt</tt>) um:
 
mkisofs ... -log-file log.txt ...
 
((1)) Mkisofs bei der Arbeit -- auf Wunsch zeigt das Tool genau an, was im Hintergrund passiert.
 
==== Ideal für Backups ====
 
Mkisofs bringt einige praktische Optionen für das regelmäßige Erstellen von Datensicherungen mit. So schließen Sie beispielsweise über die Option <tt>-m</tt> gezielt Dateien vom Image aus. Hinter dem Parameter geben Sie als weitere Argumente Namen an. Dabei kann Mkisofs auch mit <span style="color:#ff0000;">'''Wildcards'''</span> umgehen und akzeptiert Mehrfachnennung. Um etwa sämtliche HTML-Dateien nicht ins ISO-Image aufzunehmen, tippen Sie:
 
mkisofs ... -m *.html -m *.HTML -o backup.iso /home/huhn
 
<span style="color:#ff0000;">'''Wildcards:'''</span> Platzhalter, die Teile von Zeichenketten unbestimmt lassen. Ein Fragezeichen ? in einer Zeichenkette lässt nur denjenigen Buchstaben unbestimmt, an dem sich das Fragezeichen befindet, während ein * für beliebig viele verschiedene Zeichen steht.
 
Über die Option <tt>-x</tt> klammern Sie bei Bedarf ganze Verzeichnisse aus, falls nötig wiederum mit mehrfacher Angabe:
 
mkisofs ... -x /tmp -x /var -o backup.iso /
 
Achten Sie bei der Verwendung dieser beiden Parameter darauf, dass Sie bei der Angabe der zu sichernden Daten keine Wildcards verwenden. Das Kommando
 
mkisofs ... -m *.html -m *.HTML -o backup.iso *
 
führt beispielsweise dazu, dass die Shell die letzte Wildcard auflöst und so wieder alle Daten ins Image aufnimmt.
 
Wer Dateien mit typischen Backup-Endungen, wie z. B. <tt>~</tt>, <tt><nowiki>#</nowiki></tt> oder <tt>.bak</tt>, ausklammern möchte, setzt hingegen einfach die Option <tt>-no-bak</tt> ein, und schlägt damit sämtliche Fliegen mit einer Klappe.
 
==== Erstellen von ISO-Images ====
 
Nachdem das Programm erfolgreich installiert wurde, kann es folgendermaßen verwendet werden
 
mkisofs -l -iso-level 4 -o "Name der ISO Datei" "Name der Quelldatei"
 
Ist die Quelldatei ein Verzeichnis wird aus dem gesamten Verzeichnis ein ISO-Image erstellt.Wer weitere Einstellmöglichkeiten benötigt kann sich diese über einen Aufruf von
 
mkisofs -help
 
in der Konsole anzeigen lassen.
 
==== Bootbar bitte! ====
 
Um bootbare Medien zu erstellen, greifen Sie beispielsweise auf den Isolinux-Bootloader zurück, der mit Mkisofs Hand in Hand arbeitet:
 
mkisofs -J -R -o bootcd.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ''/Ordner/Daten''
 
Neben den schon bekannten Mkisofs-Optionen taucht hier einiges Neue auf: Hinter <tt>-b</tt> steht das eigentliche Boot-Image, und über <tt>-c</tt> geben Sie den Boot-Katalog an. Der Parameter <tt>-no-emul-boot</tt> weist das Programm an, bei einer Installation von dieser CD keine Emulation zu erstellen, sondern den Inhalt der Abbilddatei auf die Platte zu schreiben. Die Option <tt>-boot-load-size 4</tt> definiert, dass das BIOS später vier Sektoren à 512 Bytes für die Boot-Datei bereitstellt. Schließlich erzwingt (<tt>-boot-info-table</tt>), dass beim Booten Informationen über das Layout des Mediums berücksichtigt werden. Beachten Sie, dass sich das Verzeichnis <tt>isolinux</tt> unterhalb von <tt>''/Ordner/Daten''</tt> befinden muss.
 
==== Images testen ====
 
Das Kommando Mount bietet eine praktische Option, um ISO-Images vor dem Brennen auf eventuelle Fehler zu überprüfen. Dazu hängen Sie die Abbilddatei unter Angabe des Parameters <tt>-o loop</tt> testweise ins Dateisystem ein:
 
mount -o loop datei.iso /mnt/tmp
 
Beachten Sie, dass der Mount-Punkt existieren muss; außerdem benötigen Sie für diesen Befehl Administratorrechte. Nach Abschluss des Tests hängen Sie das ISO-Image über den Befehl <tt>umount /mnt/tmp</tt> wieder aus.
 
=== Backup mit cpio  ===
 
<tt>'''cpio'''</tt> erzeugt und verwaltet Dateiarchive verschiedener Formate
 
'''cpio''' {-o|-create} [-0acvABLV] [-C ''Anzahl''] [-H ''Format''] [-M ''Nachricht''<nowiki>] [-O [[</nowiki>''User''@]''Host'':]''Datei''<nowiki>] [-F [[</nowiki>''User''@]''Host'':]''Datei''<nowiki>] [-file=[[</nowiki>''User''@]''Host'':]''Datei''] [-format=''Format''] [-message=''Nachricht''] [-null] [-reset-access-time] [-verbose] [-dot] [-append] [-block-size=''Größe''] [-dereference] [-io-size=''Größe''] [-force-local] [-help] [-version] < ''Liste'' [> ''Datei'']
'''cpio''' {-i|-extract} [-bcdfmnrtsuvBSV] [-C ''Anzahl''] [-E ''Datei''] [-H ''Format''] [-M ''Nachricht''] [-R [''User''][:.][''Gruppe''<nowiki>]] [-I [[</nowiki>''User''@]''Host'':]''Datei''<nowiki>] [-F [[</nowiki>''User''@]''Host'':]''Datei''<nowiki>] [-file=[[</nowiki>''User''@]''Host'':]''Datei''] [-make-directories] [-nonmatching] [-preserve-modification-time] [-numeric-uid-gid] [-rename] [-list] [-swap-bytes] [-swap] [-dot] [-unconditional] [-verbose] [-block-size=''Anzahl''] [-swap-halfwords] [-io-size=''Anzahl''] [-pattern-file=''Datei''] [-format=''Format''] [-owner=[''user''][:.][''Gruppe'']] [-no-preserve-owner] [-message=''Nachricht''] [-force-local] [-help] [-version] [''Muster''...] [< ''Datei'']
'''cpio''' {-p|-pass-through} [-0adlmuvLV] [-R [user][:.][group]] [-null] [-reset-access-time] [-make-directories] [-link] [-preserve-modification-time] [-unconditional] [-verbose] [-dereference] [-owner=[''User''][:.][''Gruppe'']] [-dot] [-no-preserve-owner] [-help] [-version] ''Zielverzeichnis'' < ''Liste''
 
<tt>'''cpio'''</tt> ist ein Tool zur Erzeugung und Verwaltung von Dateiarchiven. In einem Dateiarchiv werden mehrere Dateien mit ihren Verzeichnissen und allen Verwaltungsinformationen, wie Eigentümer, Zugriffsrechte Erzeugungszeit etc., zu einer einzigen Datei oder zu einem Datenstrom zusammengefaßt. <tt>cpio</tt> erzeugt und verarbeitet eine ganze Reihe verschiedener Archivformate. Deshalb ist es besonders gut für den Austausch von Datenbeständen zwischen unterschiedlichen Rechnern geeignet.
 
<tt>cpio</tt> kann in drei verschiedenen Modi arbeiten.
 
Im copy-out Modus werden Daten aus dem Dateisystem in ein Archiv, zum Beispiel auf ein Magnetband, geschrieben. Die Namen der zu archivierenden Dateien liest <tt>cpio</tt> Zeilenweise von der Standardeingabe. Eine gängige Methode zur Erzeugung einer geeigneten Liste von Dateinamen ist die Verbindung des Ausgabekanals von [../../../ebooks/computer/betriebssysteme/linux/allgemein/unsortiert/linux_anwender_handbuch/linux_anwenderhandbuch_7-0/node54.html#find find] mit dem Eingabekanal von <tt>cpio</tt> durch eine Pipeline.
 
Im copy-in Modus werden die Daten vom Archiv in das Dateisystem kopiert. In diesem Modus liest <tt>cpio</tt> die archivierten Daten von der Standardeingabe. Wenn nicht das gesamte Archiv ausgepackt werden soll, können die gewünschen Dateien durch reguläre Ausdrücke nach den Optionen auf der Kommandozeile angegeben werden.
 
Im copy-pass Modus werden die Daten wie bei copy-out aus dem Dateisystem gelesen und sofort wieder in ein anderes Verzeichnis geschrieben, ohne daß zwischendurch ein Archiv erzeugt wird. Die Namen der zu kopierenden Dateien werden wie bei copy-out von der Standardeingabe gelesen, der Name des Zielverzeichnisses muß in der Kommandozeile nach den Optionen angegeben werden.
 
'''Optionen'''
 
{| class="wikitable sortable"  style="border-spacing:0;margin:auto;width:17.501cm;"
|-
| style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-a</tt> '''
| style="border:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt <tt>cpio</tt>, nach dem copy-out die letzte Zugriffszeit vor dem Lesen zurückzusetzen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-A</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die Dateien werden an ein existierendes Archiv angehängt (nur im copy-out Modus auf Blockgeräten möglich)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-b</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt <tt>cpio</tt>, beim extrahieren von Daten die Bytes von Datenwörtern und Halbwörtern zu tauschen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-B</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | setzt die Blockgröße auf 5120 Bytes anstelle der voreingestellten 512 Bytes
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-block-size</tt><nowiki>=</nowiki>''Anzahl'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | setzt die Blockgröße auf ''Anzahl''x512 Bytes
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-c</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt tar, das alte, portable ASCII Archivformat zu benutzen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-C</tt> ''Größe'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | setzt die Blockgröße (''Größe'' in Bytes)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-d</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt tar, beim Auspacken eines Archivs die notwendigen Verzeichnisse zu erzeugen, wenn sie noch nicht existieren
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-E</tt> ''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die Liste oder die regulären Ausdrücke zur Bestimmung der zu kopierenden Dateien wird aus der angegebenen Datei und nicht von der Standardeingabe gelesen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-f</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | verkehrt die Wirkung der Liste bzw. des Musters ins Gegenteil; es werden die Dateien kopiert, die nicht auf das Muster passen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-F</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt <tt>tar</tt>, die angegebene ''Datei'' als Archivdatei zu benutzen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-force-local</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erzwingt die Interpretation eines Archivnamens bei den Optionen -F, -I und -O als lokale Datei, auch wenn in dem Dateinamen ein Doppelpunkt vorkommt
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-H</tt> ''Format'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | bestimmt eines der folgenden Archivformate (bei copy-in werden die unterstützten Formate automatisch erkannt):
 
bin (Voreinstellung bei copy-out) veraltetes Binärformat
 
odc das alte, portable POSIX-1 Format
 
newc das neue, portable SVR4 Format; für große Dateisysteme mit mehr als 65536 I-Nodes geeignet
 
crc wie newc mit zusätzlicher Prüfsumme
 
tar das alte <tt>tar</tt> Format
 
ustar das POSIX-1 <tt>tar</tt> Format und das GNU-<tt>tar</tt> Format
 
hpbin das alte Binärformat des HPUX-<tt>cpio</tt>
 
hpodc das portable POSIX-1 Format von HPUX; unterscheidet sich in der Speicherung von Gerätedateien
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-i</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | schaltet <tt>cpio</tt> in den copy-in Modus; die in der Liste angegebenen Dateien werden aus dem Archiv in das System hinein kopiert
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-I</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | verbindet die Standardeingabe von <tt>cpio</tt> mit der ''Datei''<nowiki>; gegebenenfalls wird die Verbindung zum Rechner </nowiki>''Host'' hergestellt und die Archivierung mit den Rechten von ''User'' ausgeführt
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-k</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | ohne Funktion
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-l</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | wenn möglich werden Dateien nicht kopiert sondern symbolische Links erzeugt
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-L</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | im copy-out oder -pass Modus werden nicht die symbolischen Links kopiert, sondern die referenzierten Dateien
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-m</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | das Datum der letzten Änderung bleibt beim Kopieren unverändert
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-M</tt> ''Nachricht'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | veranlaßt cpio, die Nachricht auf die Standardfehlerausgabe zu schreiben, wenn das Backup-Medium voll ist; der Platzhalter `%d' kann benutzt werden, um in der Nachricht die laufende Nummer des aktuellen Bandes auszugeben (Start bei 1)
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-n</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die User- und Gruppen-ID der archivierten Dateien wird beim Listing in numerischer Form ausgegeben
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-no-preserve-owner</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | (Voreinstellung für User ohne root-Privilegien) beim Extrahieren von Dateien aus dem Archiv oder beim Kopieren wird die archivierte User- und Gruppen-ID nicht auf die extrahierten Dateien übertragen
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-o</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | schaltet cpio in den copy-out Modus; die in der Liste angegebenen Dateien werden aus dem System heraus kopiert und ein Archiv angelegt oder erweitert
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-O</tt><nowiki> [[</nowiki>''User''@ ]''Host'':]''Datei'' '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | verbindet die Standardausgabe von <tt>cpio</tt> mit der ''Datei''<nowiki>; gegebenenfalls wird die Verbindung zum Rechner </nowiki>''Host'' hergestellt und die Archivierung mit den Rechten von ''User'' ausgefüチhrt
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-p</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | schaltet cpio in den copy-pass Modus
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-r</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | erlaubt dem Anwender die interaktive Umbenennung von Dateien im copy-in Modus
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-R</tt> [''User'' ][:.][''Gruppe'' ] '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die entsprechenden Benutzerrechte vorausgesetzt, werden Eigentümer und/oder Gruppe der Dateien beim Extrahieren geändert
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-s</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die Bytes eines Halbwortes werden beim Extrahieren der Daten vertauscht
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-S</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die Halbworte eines Wortes werden beim Extrahieren der Daten vertauscht
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-t</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | zeigt den Inhalt des Archives an
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-u</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | beim Extrahieren werden Dateien im Dateisystem ohne Nachfrage durch gleichnamige Dateien aus dem Archiv überschrieben, auch wenn diese älter sind
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-v</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | zusammen mit -t wird ein ausführliches Listing des Archivinhalts ausgegeben
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-V</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | für jede bearbeitete Datei wird ein Punkt in den Standardfehlerkanal geschrieben
|-
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | <tt>'''-0</tt> '''
| style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding-top:0.101cm;padding-bottom:0.101cm;padding-left:0.3cm;padding-right:0.3cm;" | die Elemente der Liste können durch Nullbytes anstelle der normalerweise erwarteten NEWLINE übergeben werden
|-
|}
cpio (cpio in/out) besitzt einen ähnlichen Funktionsumfang wie das zuvor beschriebene Kommando tar, so dass wohl eher die Vorliebe des Benutzers das eine oder andere Werkzeug favorisiert. Ein Vorteil wäre dennoch zu nennen: cpio verzweifelt nicht an beschädigten Archiven und vermag zumindest den unversehrten Teil komplett wieder herzustellen.
 
cpio MODUS [ OPTIONEN ]
 
cpio kennt drei Betriebsarten: * copy in zum Extrahieren von Dateien aus einem Archiv: Option -i
* copy out zum Erzeugen eines Archivs: Option -o
* pass througth als Kombination aus den obigen Modi erlaubt das Kopieren ganzer Verzeichnisbäume: Option -p
 
==== Volles und inkrementelles Backup  ====
 
Um Dateien in einem cpio-Archiv zu speichern, müssen deren Namen dem Kommando mitgeteilt werden. cpio erwartet allerdings, dass jeder Dateiname auf einer neuen Zeile erscheint. Deshalb füttert man das Kommando am einfachsten über eine Pipe:
 
user@sonne> ls *.txt | cpio -o > /dev/fd0
11 blocks
 
Das Beispiel sichert alle auf ".txt" endenden Dateien des aktuellen Verzeichnisses auf die Diskette. Die Ausgabeumleitung ist wichtig, da sonst die Dateiinhalte auf dem Bildschirm landen würden.
 
Hiermit kennen Sie nun das Prinzip des Backups mit cpio ; zur Implementierung eines inkrementellen Backups bietet sich die Nutzung der Möglichkeiten des Kommandos [../../../../index.php/Linuxfibel_-_Nutzerkommandos_-_Datei_%26_Verzeichnis#find_-_Dateien_suchen find ]an, mit dem nach den verschiedensten Kriterien nach Dateien gefahndet werden kann. So archiviert der Aufruf von:
 
user@sonne> find /etc -maxdepth 2 -depth | cpio -o > /dev/fd0
319 blocks
 
alle Dateien aus dem Verzeichnis /etc, wobei alle Unterverzeichnisse, nicht aber die darin befindlichen Unterverzeichnisse berücksichtigt werden. Die Option&nbsp;»-depth«&nbsp;von find bewirkt, dass der Name eines Verzeichnisses selbst erst nach den enthaltenden Daten ausgegeben wird. Bei eventuellem Zurückschreiben der Daten, wird nun der häufige Fehler verhindert, dass ein Verzeichnis mit&nbsp;»falschen«&nbsp;Zugriffsrechten erzeugt wurde und anschließend das Übertragen der Daten in dieses scheitert. Durch die hier gewählte Reihenfolge wird mit der ersten Datei aus dem Verzeichnis dieses mit den korrekten Rechten gesetzt (mit Rechten, die das Schreiben der Datei ermöglichen).
 
Im Sinne eines inkrementellen Backups ist aber sicher die Suche nach Dateien, die innerhalb einer bestimmten Zeitspanne geändert wurden, interessant. Der nächste Aufruf findet alle Dateien des Verzeichnisses /etc, deren Modifikationszeit nicht älter als 5 Tage ist:
 
<nowiki># find /etc -mtime -5 -maxdepth 2 -depth | cpio -o > /dev/fd0</nowiki>
112 blocks
 
==== Überprüfung des Archives  ====
 
Um sich eine Liste der Dateien eines Archives zu betrachten, ruft man das Kommando im&nbsp;»copy in«-Modus auf:
 
user@sonne> cpio -itvI /dev/fd0
-rw-r--r--  1 root    root          270 Aug 15 07:07 /etc/mtab
-rw-r--r--  1 root    root        2510 Aug 10 13:49 /etc/logfiles
-rw-r--r--  1 root    root        37911 Aug 15 07:06 /etc/ld.so.cache
-rw-r--r--  1 root    root          271 Aug 10 15:27 /etc/hosts.allow
-rw-r--r--  1 root    root        5762 Aug 10 15:27 /etc/inetd.conf
-rw-r--r--  1 root    root        3349 Aug 14 12:18 /etc/printcap
-rw-------  1 root    root          60 Aug 15 07:06 /etc/ioctl.save
-rw-r--r--  1 root    root        3799 Aug 15 09:10 /etc/XF86Config
-rw-------  1 root    root          512 Aug 15 07:07 /etc/ssh_random_seed
-rw-r--r--  1 root    root        3309 Aug 14 12:18 /etc/printcap.old
-rw-rw----  1 lp      lp          1244 Aug 14 12:05 /etc/apsfilterrc.ljet4
-rw-rw----  1 lp      lp          1261 Aug 14 12:37 /etc/apsfilterrc.lj4dith
-rw-r--r--  1 root    root          88 Aug 15 09:38 /etc/dumpdates
drwxr-xr-x  30 root    root            0 Aug 15 08:28 /etc
112 blocks
 
Die Option -t bewirkt die Anzeige des Archivinhalts und verhindert das Entpacken. -v bringt die Rechte der Dateien zum Vorschein und -I Archiv lässt cpio die Daten aus dem Archiv anstatt von der Standardeingabe lesen.
 
Ein Vergleich der Dateien im Archiv mit den Dateien im Verzeichnisbaum ist nicht direkt möglich. Hier kann nur ein Entpacken der Daten in ein separates Verzeichnis mit anschließendem Dateivergleich (z.B. mit diff) helfen.
 
==== Recovery  ====
 
Schließlich möchte man die Daten auch wieder zurückschreiben können. Hierzu ist cpio im&nbsp;»copy-in«-Modus wie folgt zu starten:
 
<nowiki># cpio -id /etc/mtab < /dev/fd0</nowiki>
cpio: /etc/mtab not created: newer or same age version exists
112 blocks
 
Im Beispiel stellt cpio nur fest, dass die gewünschte Datei nicht älter ist als die im Archiv enthaltene Version. Also tut das Kommando nichts. -d erzwingt das Anlegen von Verzeichnissen, falls diese nicht schon existieren, die nachfolgende Angabe von zu rekonstruierenden Dateien kann entfallen, dann werden alle Dateien aus dem Archiv extrahiert.
 
=== Dump/Restore  ===
 
tar und cpio enthalten wenige Eigenschaften, die man sich von einem guten Backup-Werkzeug wünscht. Zwar sind beide effektiv zum Erzeugen voller Backups geeignet, jedoch besitzen sie von Haus aus keinerlei Unterstützung inkrementeller Datensicherungsstrategien. Allerdings passen sie mit ihrer Philosophie ideal in das Kommandokonzept von Unix, wo jedes Standardkommando einen&nbsp;»sinnvollen«&nbsp;Funktionsumfang mit sich bringen sollte und alle komplexeren Aufgaben durch Kombination der Grundbausteine realisiert werden. Ein Backup wird auch heute häufig auf Basis von Shellskripten und unter Verwendung der bereits vorgestellten Kommandos implementiert.
 
dump hingegen verdient die Bezeichnung eines Backup-Werkzeuges. Es vermag sowohl mit vollen als auch mit inkrementellen Backups umzugehen, wobei letztere in bis zu 9 Abstufungen vorgenommen werden können.
 
==== Multilevel-Backups  ====
 
Ein Multilevel-Backup bezeichnet eine Strategie, wobei ein volles Backup mit inkrementellen Backups kombiniert wird. Im einfachsten Fall wird einmal in einem Monat ein volles Backup des Datenbestandes vorgenommen und anschließend werden täglich nur die modifizierten Dateien gesichert. Dem vollen Backup wird hierbei das Level 0 zugeordnet und die weiteren Sicherungen erhalten das Level 1. Nach Ablauf des Monats wiederholt sich der Vorgang.
 
Eine Verallgemeinerung führt nun beliebig viele Level ein, wobei bei einem Backup des Levels x alle geänderten Daten im Zeitraum seit der letzten Sicherung desselben Levels berücksichtigt werden.
 
Der Sinn solcher Level ist die Einsparung von Speichermedien bei gleichzeitiger Verlängerung der Backup-Historie. Möchten Sie bspw. die Daten über den Zeitraum dreier Monate aufbewahren, so benötigen Sie bei Realisierung mittels zweier Level ca. 92 Bänder (1 Band für das volle Backup und für jeden Tag ein weiteres). Ein anderes Vorgehen wäre ein anfängliches volles Backup (Level 0, 1 Band), jeden Monat ein Backup Level 1 (2 Bänder, der 3. Monat wird vom kommenden vollen Backup erfasst), jede Woche ein Backup Level 2 (4 Bänder) und schließlich ein viertes Level zur Speicherung der täglichen Daten (6 Bänder). Mit 13 Bänder können Sie also jederzeit den Datenbestand auf den Stand des letzten Tages bringen.
 
==== Die Verwendung von dump  ====
 
dump [ OPTIONEN ] [ DATEISYSTEM ]
 
dump vermag derzeit nur mit dem Datensystem ext2 zusammen zu arbeiten. Ein zu sicherndes Dateisystem kann in der Datei [../../../../index.php/Linuxfibel_-_System-Administration_-_Dateisysteme#Die_Datei_.2Fetc.2Ffstab /etc/fstab ]markiert werden, so dass bei einem Aufruf von dump über den gesamten Verzeichnisbaum nur diese Dateisysteme berücksichtigt werden.
 
dump versucht in der Voreinstellung das Gerät&nbsp;»/dev/st0«&nbsp;zu öffnen. Existiert das Device nicht, fordert das Kommando zur Eingabe eines anderen Ausgabegerätes auf. Mit der Option -f Datei kann die Sicherung in eine beliebige Datei umgelenkt werden.
 
Dem Kommando ist natürlich mitzuteilen, was zu sichern ist. Hier kann entweder ein Verzeichnis oder das Device angegeben werden. Des Weiteren muss das Backup-Level (0-9) benannt werden. dump selbst ist in der Lage, die Zeiten der letzten Sicherung eines Levels zu notieren und anhand derer zu entscheiden, ob ein erneutes Backup dieses Levels überhaupt notwendig ist. Hierzu schreibt das Kommando, wird es mit der Option -u aufgerufen, die Zeiten in die Datei /etc/dumpdates. Existiert keine Datei, sollte zuvor eine leere von Hand erzeugt werden.
 
==== Volles Backup  ====
 
Um nun ein volles Backup des Verzeichnisses&nbsp;»/etc/rc.d«&nbsp;auf Diskette zu sichern, ist Folgendes einzugeben:
 
<nowiki># dump -0 -u -f /dev/fd0 /etc/rc.d/</nowiki>
  DUMP: Date of this level 0 dump: Tue Aug 15 09:38:13 2000
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/hda5 (/) to /dev/fd0
  DUMP: Label: none
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 652 tape blocks on 0.02 tape(s).
  DUMP: Volume 1 started at: Tue Aug 15 09:38:13 2000
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: DUMP: 725 tape blocks on 1 volumes(s)
  DUMP: finished in less than a second
  DUMP: Volume 1 completed at: Tue Aug 15 09:38:13 2000
  DUMP: level 0 dump on Tue Aug 15 09:38:13 2000
  DUMP: DUMP: Date of this level 0 dump: Tue Aug 15 09:38:13 2000
  DUMP: DUMP: Date this dump completed: Tue Aug 15 09:38:13 2000
  DUMP: DUMP: Average transfer rate: 0 KB/s
  DUMP: Closing /dev/fd0
  DUMP: DUMP IS DONE
 
dump fordert selbständig zum Mediumwechsel auf, wenn dessen Speicherkapazität nicht mehr genügt.
 
dump hat in obigen Beispiel die letzte Sicherung des zugrunde liegenden Dateisystems in der Datei&nbsp;»/etc/dumpdates«&nbsp;vermerkt. Die Informationen sind dort im Klartext enthalten und können somit editiert werden, um z.B. temporär eine andere Backupstrategie zu wählen. Mit der Option -W zeigt dump die gesicherten Dateisysteme mit Datum und letztem Backuplevel an und gibt zusätzlich noch Empfehlungen, welches Dateisystem eine erneute Sicherung vertragen könnte:
 
<nowiki># dump -W</nowiki>
Last dump(s) done (Dump '>' file systems):
  /dev/hda5    (    /) Last dump: Level 1, Date Tue Aug 15 13:38
 
==== Inkrementelles Backup  ====
 
Um nun eine Level-2-Archivierung desselben Dateisystems vorzunehmen, gibt der Administrator folgende Zeile ein:
 
<nowiki># dump -2 -u -f /dev/fd0 /etc/rc.d/</nowiki>
 
Die eigentliche Aufgabe beim Backup ist es nun, die verschiedenen Level-Sicherungen in sinnvollen Zeiträumen anzuordnen, z.B. * Level-0-Backup einmal in 3 Monaten
* Level-1-Backup monatlich
* Level-2-Backup wöchentlich
* Level-3-Backup täglich
 
Es bietet sich an, ein solches Schema per [../../../../index.php/Linuxfibel_-_System-Administration_-_Zeit_und_Steuerung#Wiederkehrende_Abl.C3.A4ufe_mit_cron cron ]-Job automatisch zu realisieren. Die Aufgabe des Administrators reduziert sich damit auf das rechtzeitige Wechseln der Bänder.
 
==== Überprüfung des Archives mit restore  ====
 
Um einen Vergleich der im Archiv vorhandenen mit den installierten Dateien vorzunehmen, dient das Kommando restore in Verbindung mit der Option -C. Wird kein weiteres Argument angegeben, versucht restore das Archiv von /dev/st0 zu lesen. Wir verweisen es deshalb auf eine andere Datei (Option -f Datei) :
 
<nowiki># restore -C -f /dev/fd0</nowiki>
Dump  date: Tue Aug 15 15:38:38 2000
Dumped from: the epoch
Level 0 dump of / on sonne:/dev/hda5 (dir /etc/rc.d)
Label: none
filesys = /
./lost+found: (inode 11) not found on tape
./usr: (inode 2049) not found on tape
...
 
Die angeblich fehlenden Dateien sind auf einen Link im archivierten Verzeichnis zurückzuführen und können ignoriert werden.
 
==== Recovery mit restore  ====
 
Zum Recovery der Daten wird im einfachsten Fall ein Archiv mittels recover und der Option -r zurückgeschrieben. Beachten Sie, falls Sie alle Daten durch ihre Kopie aus den Archiven ersetzen wollen, alle Archive in der Reihenfolge ihrer Aufzeichnung einzuspielen, d.h. Sie spielen zunächst das volle Backup (Level 0) ein, dann alle Backups des Levels 1 usw.
 
<nowiki># restore -r -f /dev/fd0</nowiki>
 
Eine Besonderheit von recover ist der interaktive Modus (Option -i), der die Selektion einzelner Dateien aus einem Archiv ermöglicht.
 
<nowiki># restore -i -f /dev/fd0</nowiki>
Verify tape and initialize maps
Tape block size is 32
Dump  date: Tue Aug 15 15:38:38 2000
Dumped from: the epoch
Level 0 dump of / on dev17:/dev/hda5 (dir tmp)
Label: none
Extract directories from tape
Initialize symbol table.
restore > help
Available commands are:
        ls [arg] - list directory
        cd arg - change directory
        pwd - print current directory
        add [arg] - add `arg' to list of files to be extracted
        delete [arg] - delete `arg' from list of files to be extracted
        extract - extract requested files
        setmodes - set modes of requested directories
        quit - immediately exit program
        what - list dump header information
        verbose - toggle verbose flag (useful with ``ls'')''
        help or `?' - print this list
If no `arg' is supplied, the current directory is used
restore > ls
.:
    2. /      2. ./  6145 tmp/
restore > verbose
verbose mode off
restore > ls
.:
tmp/
restore > quit
 
Die Kommandos [../../../../index.php/Ls ls, ][../../../../index.php/Cd cd ]und [../../../../index.php/Pwd pwd ]besitzen gleiche Bedeutung wie in der Shell, wobei als Argument für [../../../../index.php/Ls ls ]nur Dateinamen mit enthaltenen Metazeichen jedoch keine Optionen zulässig sind.
 
Um nun eine Liste der zu extrahierenden Dateien zu erstellen, werden Dateien mit add hinzugefügt und mittels delete entfernt. In der Ausgabe von ls erscheint eine Markierung vor den in der Liste enthaltenen Dateien.
 
Mit extract werden schließlich die markierten Dateien aus dem Archiv ins System eingespielt, wobei recover zunächst zur Eingabe der Volumenummer auffordert (also das Band, auf dem sich die Datei befindet). Ein Beispieldialog könnte wie folgt aussehen:
 
restore > add boot*
restore > ls boot*
<nowiki>*bootsec.lin</nowiki>
restore > extract
You have not read any tapes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
Mount tape volume 1
Enter ``none ''if there are no more tapes''
otherwise enter tape name (default: /dev/fd0)
resync restore, skipped 64 blocks
set owner/mode for '.'? [yn] n
restore >
 
= Links =
== Intern ==
== Weblinks ==
 
[[Kategorie:Linux:Archive]]

Aktuelle Version vom 19. Oktober 2024, 13:43 Uhr

Datensicherung und -archivierung - Beschreibung

Beschreibung

Motivation

Motivation und Zielsetzung

Die Aufgabe von IT-Systemen ist die Verarbeitung und Verwaltung digitaler Daten, die dazu vorübergehend oder dauerhaft auf Datenträgern gespeichert werden

  • Die Sicherung dieser Daten soll die Rückkehr in einen vorherigen Zustand gewährleisten
  • Die regelmäßige Sicherung des Datenbestandes zählt zu den wichtigsten Aufgaben eines Systemverwalters

Daten sind verschiedenen Einflüssen ausgesetzt

  • Dem Schichtenmodell entsprechend können auf jeder Ebene Anomalien auftreten
  • Defekte an der Hardware (Datenträger, Controller)
  • Fehler im Dateisystem
  • Fehler bei der Administration
  • Dateikorruption durch Schadsoftware
  • Ausfall des Systems
  • Fehlfunktion nach Update
  • Versehentliches Löschen von Daten

Um jeder dieser Situationen gerecht zu werden, ist es möglich, auf folgenden Ebenen Daten zu sichern

  • Datenträger
  • Partition
  • Dateisystem
  • Datenbanken

Strategie

Datensicherungsstrategien

Die Begriffe »Backup« und »Archiv« verwenden wir im weiteren Verlauf synonym

  • Allgemein bezeichnen wir als ein Archiv einen Container von Daten, der aufbewahrt wird, um genau auf diese Daten später zugreifen zu können
  • Archive legt man an, um momentan nicht benötigte Daten von der Festplatte zu verbannen oder um sie von einem Rechner auf einen anderen zu kopieren..

Die Motivation zu einem Backup resultiert aus anderen Überlegungen

  • Hier ist die Absicht, einen bestimmten Systemzustand aufzuzeichnen
  • Dabei bezieht man sich nicht auf den konkreten Inhalt einer Datei - wie bei Archiven - sondern ordnet eine Datei in die Schublade »wichtig« oder »unwichtig« ein, je nachdem, ob sie von meiner Backupstrategie betroffen sein wird oder nicht

Grundsätzlich werden zwei Arten des Backups unterschieden

  • Das volle Backup sichert stets den kompletten Bestand an Daten, während das inkrementelle Backup nur Daten archiviert, die innerhalb einer bestimmten Periode modifiziert wurden
  • Dabei steht die Periode meist für den Zeitraum seit der letzten Sicherung

Ein volles Backup ist wegen des hohen Bedarfs an Zeit (die Sicherung erfolgt meist auf ein Bandmedium) weniger für den täglichen Einsatz geeignet, deswegen entscheidet man sich heute meist für eine Mischform aus voller und inkrementeller Datensicherung

  • Hierbei wird zu einem Zeitpunkt der komplette Datenbestand gesichert und nachfolgend - in regelmäßigen Abständen - archiviert man nur die modifizierten Daten

Die tatsächlich gewählte Strategie des inkrementellen Backups hängt stark von der »Statik« der Daten und vom Sicherheitsbedürfnis des Administrators ab

  • Im einfachsten Fall betrifft das Backup jeweils alle modifizierten Daten seit dem letzten vollen Backup bis hin zum aktuellen Zeitpunkt
  • Das umgekehrte Verfahren ist die Aufzeichnung der Änderungen seit der letzten inkrementellen Sicherung
  • Während in ersterem Fall nur die Archive des vollen und letzten inkrementellen Backups aufbewahrt werden müssen, sind beim zweiten Vorgehen das volle Backup und sämtliche inkrementellen Datensicherungsarchive aufzuheben
  • In der Praxis findet man auch Archivierungsformen zwischen den beiden beschriebenen Extremen (Multilevel-Backups)

Bedenken Sie, dass ein Festplattenfehler Sie auch während der Aufzeichnung eines Backups ereilen kann. Überschreiben Sie daher niemals ihre aktuelle Sicherungskopie

Bei der Vorstellung der Backup-Werkzeuge beschränken wir uns auf Programme, die der GPL oder einer ähnlichen Lizenz unterstehen

  • In vielen Fällen lassen sie die Bedienfreundlichkeit kommerzieller Produkte vermissen, jedoch ist es durchaus möglich - die notwendigen Kenntnisse vorausgesetzt - diese in Skripten so zu kapseln, dass sie zum einen die Funktionalität und zum anderen die einfache Benutzbarkeit ausgereifter Werkzeuge erreichen

Medien

Medien für die Datensicherung

Zunächst ist einfach nachvollziehbar, dass die Speicherkapazität des Backupmediums dem aufkommenden Datenvolumen entsprechen muss

  • Ein volles Backup könnte man auch auf Disketten vornehmen, jedoch wird man des Wechsels sicherlich bald überdrüssig und die Diskette ist selbst schon Quelle des lauernden Datenverlusts
  • Wer kennt nicht das leidige »Can't read sector xxx.«? Besser geeignet - vorwiegend bei dem geringeren Datenaufkommen des inkrementellen Backups - sind ZIP-Disketten
Festplatten

Waren früher die Medien für einen Streamer die preiswerteste Alternative, so geht heute nichts über eine Festplatten

  • Dem System eigens für die Datensicherung eine eigene Platte zu spendieren, mag auf den ersten Blick befremdend erscheinen, jedoch erhält man für den Preis eines Streamers eine Menge Festplattenspeicher
  • Die weiteren Vorteile liegen im wahlfreien und wesentlich schnelleren Zugriff
  • Allerdings schützt die eingebaute Festplatte nur mäßig vor mutwilliger Sabotage, hier kann eine Datensicherung auf einem anderen Rechner (über das Netz) Abhilfe bringen

Die durch RAID-Systeme realisierbare Datenredundanz schützt nur vor Hardwareausfall einer Festplatte, hat also nichts mit einem Backup zu tun

Magnetbänder

Traditionell sind Magnetbänder (Quarter-Inch- und DAT-Streamer) weitverbreitet

  • Sowohl Kapazität als auch Zuverlässigkeit sprechen für dieses Medium
  • Leider lässt sich auf einem Band kein Dateisystem einrichten, sodass die Daten mithilfe spezieller Programme sequenziell auf dieses abgelegt werden müssen
  • Im Falle eines »Restores« muss demnach der gesamte Bandinhalt zurückgespielt werden, da ein wahlfreier Zugriff nicht möglich ist

Ein Magnetband muss vor dem Zugriff zurückgespult werden, hierzu nutzt man das Kommando mt mit der Option rewind

mt -f <Device> rewind

Es ist außerdem möglich, mehr als ein Archiv auf einem Band unterzubringen, immer vorausgesetzt, die Speicherkapazität setzt keine Schranken

# Band zur ersten Dateiende-Markierung spulen
mt -f <Device> fsf 1
# Band zur dritten Dateiende-Markierung spulen
mt -f <Device> fsf 3
# Band zur letzten Dateiende-Markierung spulen
mt -f <Device> eof


Während sich die »normale« CD-ROM oder DVD wegen der nur einmaligen Beschreibbarkeit eher als Medium zur reinen Archivierung eignet, kann die CD-RW und vor allem die DVD-RW durchaus für die alltägliche Datensicherung eingesetzt werden

  • Allerdings erfordern umfangreiche Backups, die die Kapazität einer einzelnen CD-ROM übersteigen, die Anwesenheit des Administrators

Daten

Welche Daten sollten gesichert werden?

Es lohnt sich, etwas Zeit in den Plan zu investieren, welche Daten denn überhaupt den Aufwand eines Backups rechtfertigen

Vielleicht beginnen wir mit Daten, die sichere Kandidaten sind

Da wären

  • Die Daten unter /home
  • Klar, die Benutzer ziehen sich ja täglich neue Daten aus dem Netz
  • Die Daten unter /etc
  • Oder haben Sie Interesse, Ihr System komplett neu konfigurieren zu müssen?
  • Die Daten unter /var
  • Hier liegen Protokolle, Mails, Druckaufträge, ...
  • also Daten, die permanenter Änderung unterliegen
  • Projektverzeichnisse, Datenbanken, ...

Als Daten, deren Aufzeichnung Sie sich getrost sparen können, sind all jene zu nennen, die ohnehin auf einem anderen Medium vorhanden sind, zum Beispiel die Daten der Linuxdistribution, die auf CD-ROM im Schrank liegen

  • Ebenso sollten Dateisysteme, die von entfernten Rechnern gemountet wurden, besser von dessen Backup-Strategie erfasst werden

Aber letztlich ist es die Ermessensfrage des Administrators, welche Daten er für sicherungswürdig erachtet

  • Eine Neuinstallation von Linux hat ja manchmal auch den Vorteil, etwas Ordnung im System zu schaffen.


Anhang

Siehe auch

Links

Weblinks