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.
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 .
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.)
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
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.
[ top ]