Hallo Tom,
ich muss kurzfristig über Netz einen Linux-Server sichern und zwar so, dass man die geicherten Verzeichnisse nachher wieder herstellen kann inclusive User, Gruppe und Rechten.
Was muss ich beachten?
Zuerst einmal ist es ideal, alle Dienste, die man gerade NICHT benötigt, zu beenden. Im Idealfall läuft gar nichts bis auf die Shell, auf der man das Backup macht - allerdings kann man wenn man Remote arbeitet auf den SSHD z.B. nicht verzichten.
tar bietet eine Option 'p' an, die für 'preserve' steht, d.h. "Rechte erhalten". Ferner ist 'tar' als 'root' auszuführen, damit es mit Zugriffsrechten keine Probleme gibt.
Ferner ist die Option --one-file-system hilfreich: Es ist besser, alle Partitionen separat zu Backupen und nicht in gemountete Verzeichnisse hineinzuwechseln (sonst sammelt man sich Probleme wie /proc, /sys etc. an).
Zudem mounten einige Distributionen gerade in Verzeichnisse wie /dev andere Filesysteme und "überschreiben" so die Dateien, die standardmäßig in /dev vorhanden sind. Daher ist es sinnvoll, vorher ein Bind-Mount der Partition in ein anderes Verzeichnis zu machen und das Verzeichnis dann zu backupen.
Sprich: Wenn man folgende Konfiguration hat:
/dev/hda1 /boot
/dev/hda5 /
/dev/hda6 /home
Und das Backup-Medium auf dem Server (externe Festplatte oder Netzwerkdateisystem wie z.B. NFS oder CIFS oder SMB) nach /mnt/backup gemountet hat.
Dann würde man am besten folgendes machen:
- Alle Dateisysteme per bind-mount an eine bestimmte Stelle mounten:
mkdir /mnt/system
mkdir /mnt/boot
mkdir /mnt/home
mount --bind / /mnt/system
mount --bind /boot /mnt/system
mount --bind /home /mnt/system
- Backups anlegen
[Optionen: -c == create, -v == verbose, -p == preserve, -z == compress,
-C == in das Verzeichnis wechseln]
[Den "." am Ende nicht vergessen!]
tar --one-file-system -cvpzf /mnt/backup/root.tar.gz -C /mnt/system .
tar --one-file-system -cvpzf /mnt/backup/boot.tar.gz -C /mnt/boot .
tar --one-file-system -cvpzf /mnt/backup/home.tar.gz -C /mnt/home .
- Die bind-mounts wieder entfernen:
umount /mnt/home
umount /mnt/boot
umount /mnt/system
---- das war's für's backup ---
Wenn dann der Server wiederhergestellt werden soll, dann müssen alle Partitionen bereits korrekt eingerichtet sein das Dateisystem schon angelegt sein (sollte das gleiche Dateisystem wie vorher sein, wenn nicht, geht das auch, man muss dann aber die /etc/fstab anpassen!).
Man sollte dann von einem Rettungssystem aus den Rechner gebootet haben. Dann kann man die Partitionen an die entsprechende Stelle mounten, wenn man dem bisherigen Beispiel folgt:
[auf dem Rettungssystem (!):]
mkdir /mnt/system
mount /dev/hda5 /mnt/system
tar -xvpzf /mnt/backup/root.tar.gz -C /mnt/system
mount /dev/hda1 /mnt/system/boot
tar -xvpzf /mnt/backup/boot.tar.gz -C /mnt/system/boot
mount /dev/hda6 /mnt/system/home
tar -xvpzf /mnt/backup/home.tar.gz -C /mnt/system/home
[WICHTIG IST, DASS HIER DIE PARTITIONEN AN DIE RICHTIGE STELLE UNTERHALB VON /mnt/system gemountet werden!]
Dann sind die Backups wiederhergestellt, dann wäre es noch sinnvoll, den Bootloader wieder zu installieren. Dazu ist es am sinnvollsten, in das System reinzu-chroot-en und dort das Bootloaderprogramm auszuführen.
Um aber erfolgreich rein-zu-chrooten musst Du erst dafür sorgen, dass /proc etc. verfügbar ist:
mount --bind /proc /mnt/system/proc
mount --bind /dev /mnt/system/dev
mount --bind /sys /mnt/system/sys
Dann reinwechseln:
chroot /mnt/system /bin/bash
source /etc/profile
Dann den Bootloader neu installieren, bei LILO:
lilo
Bei Grub ist es am einfachsten, eine Grub-Shell zu laden:
grub
Und dann dort Befehle einzugeben:
root (hd0,0)
setup (hd0)
quit
Wobei (hdX) == X+1te Festplatte ist (d.h. setup (hd0) schreibt das in den MBR der ersten Platte, bei IDE-Systemen hda) und (hdX,Y) ist die Y+1te Partition der X+1ten Platte, dort muss /boot liegen, d.h. (hd0,0) wäre hda1 bei einem IDE-System.
Danach rauswechseln aus dem chroot:
exit
Und danach alles unmounten:
Bind-Mounts für's chroot
umount /mnt/system/dev
umount /mnt/system/sys
umount /mnt/system/proc
Zusätzliche Partitionen wie home und root
umount /mnt/system/home
umount /mnt/system/boot
Das eigentliche System
umount /mnt/system
Und dann sollte das System wieder problemlos booten - und wäre faktisch identisch zum vorigen System.
Wenn Du nicht das GESAMTE System backupen willst, dann müsstest Du mal genauer erklären, was Du überhaupt anstellen willst.
Das System verwendet Confixx
Das kenne ich nicht wirklich, ich kenne aber genug Leute, die und deren Meinung ich sehr schätze, die das Ding meiden wie der Teufel das Weihwasser.
Viele Grüße,
Christian