Einfaches Backup mit tar

2003-08-27 fm http://www.teamlinux.de/kb/linux/sysad/backup/tar

Artikel download einfaches_tar_backup.zip (8 kb)

tar ("Tape ARchiver") ist ein einfaches Backup-Kommando, das per Shell-Eingabe oder Shellscript eingesetzt werden kann. In den vielen Jahren seit seiner Entstehung wurden zahlreiche Varianten entwickelt, zum Beispiel das im Linux-Umfeld eingesetzte GNU tar oder das noch recht neue star.

tar hat die Aufgabe, aus einer Vielzahl von zu sichernden Dateien ein sogenanntes "Archiv" zu erzeugen. Ein solches Archiv ist nichts anderes als eine Datei, die in sich alle zu sichernden Dateien enthält. Da dabei auch Verwaltungsinformationen gespeichert werden, ist die Größe einer tar-Archivdatei etwas höher als die Summe der Größen der Einzeldateien.

 

 

Archiv erstellen

Ein tar-Archiv erstellt man über das Kommando

 

tar cvf "archivdatei" "datei(en)"

Die Option "c" steht für "create" = "erzeugen", "v" meint "verbose" und sorgt für eine Auflistung der archivierten Dateien, nach dem "f" für "file" folgt dann der Name der Archivdatei.

Zum Beispiel:

 

# tar cvf ~/etc-backup.tar /etc

Als Archivdatei darf auch eine Gerätedatei verwendet werden, zum Beispiel zur Sicherung auf einem Bandlaufwerk:

 

# tar cvf /dev/st0 /etc

Sollen auch die Dateiberechtigungen und -besitzverhältnisse mitgesichert werden, muss die Option "p" mit angegeben werden. Ein "l" (für "local") sorgt dafür, dass die Sicherung nur das angegebene Dateisystem beinhalten soll. Eine Vollsicherung des root-Datsisystems geschieht also mit

 

# cd /
# tar cplvf /dev/st0 .

 

Archiv extrahieren

Beim Rücksichern ersetzt man die Option "c" einfach durch die Option "x" für "extract":

 

# tar xvf ~/etc-backup.tar

Da beim Erzeugen des Archivs der führende "/" aus den Dateipfaden entfernt wird, wird das /etc Verzeichnis dabei nicht überschrieben. Die Dateien werden statt dessen im aktuellen Arbeitsverzeichnis extrahiert. In unserem Beispiel wird also im Arbeitsverzeichnis das Verzeichnis etc angelegt und sein Inhalt wiederhergestellt. (Sollte das Arbeitsverzeichnis gerade / sein, ist natürlich doch das Originalverzeichnis /etc betroffen.)

 

 

Datenkompression

Um die Größe eines tar-Archivs zu verkleinern, kann Datenkompression eingesetzt werden. In der Linux-Denkweise ist dies eine zweite Aufgabe neben dem Archivieren und wird somit durch ein anderes Programm geleistet. Hier stehen drei Alternativen zur Auswahl: compress ist das älteste Programm dieser Art und ist in der Praxis inzwischen durch zwei Nachfolger ersetzt: etabliert haben sich gzip und das noch effizientere bzip2.

gzip archiv.tar ersetzt die Datei archiv.tar durch ihre komprimierte version archiv.tar.gz. Den umgekehrten Weg geht man mit gzip -d archiv.tar.gz oder einfach gunzip archiv.tar.gz. Beim Konkurrenzprogramm liefert bzip2 archiv.tar das komprimierte Archiv archiv.tar.bz2, das via bzip2 -d archiv.tar.bz2 oder bunzip2 archiv.tar.bz2 wieder entkomprimiert wird.

Für die Nutzung eines komprimierten Archivs ohne Zwischenschritte können Sie die Umleitung der Ein- und Ausgabekanäle nutzen:

 

# tar cvf - /etc | gzip -c > archiv.tar.gz
# gzip -c -d archiv.tar.gz | tar xvf -

bzw.

 

# tar cvf - /etc | bzip2 -c > archiv.tar.bz2
# bzip2 -c -d archiv.tar.bz2 | tar xvf -

GNU tar kennt sogar Optionen für Kompression: "z" steht dabei für gzip, "j" für bzip2:

 

# tar cvzf etc.tar.gz /etc
# tar xvzf etc.tar.gz

bzw.

 

# tar cvjf etc.tar.bz2 /etc
# tar xvjf etc.tar.bz2

 

 

Bandsicherung

Wie bereits oben beschrieben kann ein Archiv auch über ein Bandlaufwerk geschrieben und gelesen werden, indem man dessen Gerätedatei als Archivdatei angibt:

 

# tar cvf /dev/st0 /etc
# tar xvf /dev/st0

Sollen mehrere Archive auf einem Band gespeichert werden, muss das Spulen des Bandes und das Setzen von Trennmarken mit Hilfe des Kommandos mt gesteuert werden. tar bietet hierfür keine Funktionen. Da das Gerät /dev/st0 nach einer Aktion sofort das Band zurückspult, ist dann die Verwendung von /dev/nst0 geschickter, das dieses Verhalten nicht hat.