admin_grundlagen:systemsicherung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| admin_grundlagen:systemsicherung [2012/06/21 13:08] – ingo_wichmann | admin_grundlagen:systemsicherung [2025/11/28 11:53] (aktuell) – [Sicherung der Dateisystem-Einstellungen] ingo_wichmann | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| Zuverlässiger ( z.B. offene Dateien ) und möglicherweise einfacher ( z.B. udev ) ist es aus einem Rettungssystem heraus zu sichern. Die folgende Anleitung zeigt dagegen wie man aus einem laufenden System heraus sichert. Hürden wie eine nach ''/ | Zuverlässiger ( z.B. offene Dateien ) und möglicherweise einfacher ( z.B. udev ) ist es aus einem Rettungssystem heraus zu sichern. Die folgende Anleitung zeigt dagegen wie man aus einem laufenden System heraus sichert. Hürden wie eine nach ''/ | ||
| - | ===== Vorbereitung | + | Abschätzen, |
| + | df -Thlx tmpfs -x devtmpfs | ||
| + | -> Summe der Daten auf persistenten, | ||
| + | |||
| + | ===== Vorbereitung Zielsystem ===== | ||
| + | |||
| + | ==== Platz schaffen | ||
| evtl. Platz schaffen wie in [[Plattenplatz]], | evtl. Platz schaffen wie in [[Plattenplatz]], | ||
| - | mkdir /mnt/backup | + | mkdir -p /mnt/backup/dateien |
| - | ===== Vorbereitung ( auf dem zu sichernden System )===== | + | ==== SSH Zugriff als root ==== |
| - | df -h | + | Root Passwort setzen, sofern nicht bekannt/verfügbar: |
| - | mkdir /mnt/system | + | |
| - | | + | |
| - | mount --bind /boot / | + | |
| - | evtl. weitere Verzeichnisse/ | + | |
| - | ==== Sicherung der ACL-Dateirechte ==== | + | <file txt /etc/ssh/ |
| - | nur nötig, wenn '' | + | PermitRootLogin yes |
| - | cd /mnt/system | + | </file> |
| - | getfacl --skip-base -P -R . > sicherung.acl | + | |
| - | scp sicherung.acl root@server: | + | |
| - | ==== Sicherung der erweiterten Dateiattribute ( z.B. SELINUX ) ==== | + | systemctl restart ssh.service |
| - | nur nötig, wenn '' | + | |
| - | cd / | + | |
| - | getfattr -Rh -m . -d . > sicherung.attr | + | |
| - | scp sicherung.attr root@server:/ | + | |
| + | ++++ Alternativ: sudo und ssh-Schlüssel | | ||
| + | Zielverzeichnis ''/ | ||
| + | chown nutzerXX /mnt/backup | ||
| - | ==== Sicherung | + | * [[sudo]] einrichten, falls noch nicht passiert |
| - | Beispiel ext3: | + | * einen [[ssh]]-Schlüssel beim Benutzer root hinterlegen |
| - | tune2fs -l /dev/sdaX > sicherung.tune2fs.sdaX | + | ++++ |
| - | scp sicherung.tune2fs.sdaX root@server:/ | + | ===== Sicherung |
| + | Diese Schritte werden auf dem zu sichernden System ausgeführt. | ||
| + | ==== Sicherung der UEFI-Einstellungen ==== | ||
| + | Bei UEFI-Systemen ist es manchmal hilfreich die EFI Variablen zu sichern: | ||
| + | efibootmgr -v > sicherung.efivars | ||
| ==== Sicherung der Partitionierung ==== | ==== Sicherung der Partitionierung ==== | ||
| - | Exakte Vorgehensweise siehe [[partitionierung]], wenn die Wiederherstellung | + | Partitionstabelle im Textformat sichern: |
| + | sfdisk -d /dev/sda > sicherung.sfdisk | ||
| + | |||
| + | ((bei GPT-Partitionstabellen eine inzwischen veraltete Warnung der Entwickler vorweg: //As of March 2014 (version 0.8.10), sgdisk should be considered beta software.// )) (( | ||
| + | Lesbarer, aber nicht automatisch wiederherstellbar geht das auch so: | ||
| + | fdisk -l -o device, | ||
| + | oder | ||
| parted /dev/sda print > sicherung.parted | parted /dev/sda print > sicherung.parted | ||
| - | scp sicherung.parted root@server:/ | ||
| - | alternativ | + | Mehr zur Vorgehensweise siehe [[Partitionierung]]. )) |
| - | + | ||
| - | sfdisk -d /dev/sda > sicherung.sfdisk | + | |
| - | scp sicherung.sfdisk root@server:/ | + | |
| ==== Sicherung LVM Informationen ==== | ==== Sicherung LVM Informationen ==== | ||
| + | vgcfgbackup -f sicherung.vg.%s | ||
| pvdisplay > sicherung.pvdisplay | pvdisplay > sicherung.pvdisplay | ||
| vgdisplay > sicherung.vgdisplay | vgdisplay > sicherung.vgdisplay | ||
| lvdisplay > sicherung.lvdisplay | lvdisplay > sicherung.lvdisplay | ||
| - | scp sicherung.pvdisplay sicherung.vgdisplay sicherung.lvdisplay root@server:/ | ||
| - | ==== Sicherung | + | ==== Sicherung |
| - | | + | |
| + | * drbd | ||
| + | * [[lpi2: | ||
| + | * ... | ||
| - | (( | + | ==== Sicherung der Dateisystem-Einstellungen ==== |
| - | Zweiter Aufruf, um zu sehen ob alle Dateien | + | === Von welchen Dateisystemen müssen Einstellungen gesichert werden? === |
| - | rsync -anv --numeric-ids --del -e ssh /mnt/system/ root@server:/ | + | lsblk -f |
| + | oder | ||
| + | df -Thlx tmpfs -x devtmpfs -x efivarfs | ||
| + | -> alle persistenten, | ||
| + | |||
| + | == ext2 / ext3 / ext4 == | ||
| + | tune2fs -l /dev/sdaX > sicherung.ext.sdaX | ||
| + | ((''/ | ||
| + | |||
| + | == xfs == | ||
| + | xfs_admin -l -u / | ||
| + | xfs_info / | ||
| + | ((''/ | ||
| + | |||
| + | == btrfs == | ||
| + | btrfs läßt sich ggf. nur umständlich (Subvolumes, | ||
| + | |||
| + | Die UUID des Dateisystems erhält man mit '' | ||
| + | |||
| + | btrfs subvolume list / > | ||
| + | |||
| + | == vfat == | ||
| + | blkid /dev/sdaX > sicherung.vfat.sdaX | ||
| + | ((''/ | ||
| + | |||
| + | == swap == | ||
| + | blkid /dev/sdaX > sicherung.swap.sdaX | ||
| + | ((''/ | ||
| + | |||
| + | ==== Einstellungs-Dateien | ||
| + | |||
| + | scp sicherung.* root@server:/ | ||
| + | |||
| + | ==== Sicherung der Dateien ==== | ||
| + | === Einhängen der Dateisysteme unter /mnt/system === | ||
| + | | ||
| + | mount --bind / / | ||
| + | |||
| + | In der Ausgabe von '' | ||
| + | |||
| + | mount --bind /boot / | ||
| + | und/oder | ||
| + | mount --bind /boot/efi / | ||
| + | und möglicherweise weitere: | ||
| + | mount --bind /… | ||
| + | |||
| + | ((ab RedHat 6, openSuSE 13.1, Debian 8 und Ubuntu 16.04 könnte man auf diesen Schritt verzichten, und statt dessen bei '' | ||
| + | rsync -axzRSHAX | ||
| )) | )) | ||
| - | === Ubuntu === | ||
| - | Unter **Ubuntu** gibt es defaultmäßig kein root Passwort! | ||
| - | Wenn ein **Ubuntu** System das **ZIEL** ist, muss man zunächst dem User, mit dem man sich auf dem Ziel einloggen will, einen Eintrag machen, der rsync via sudo ohne Passwort erlaubt: | ||
| - | | + | === mit rsync über ssh Dateien kopieren === |
| + | Auf Quell- und Zielsystem muss rsync installiert sein. Alternativ kann man auch [[# | ||
| + | |||
| + | ++++ Ubuntu ohne SSH root-Passwort | | ||
| + | Unter **Ubuntu** gibt es defaultmäßig kein root Passwort. | ||
| + | Wenn ein **Ubuntu** System das **ZIEL** ist, muss man zunächst dem User, mit dem man sich auf dem Ziel einloggen will, einen Eintrag machen, der '' | ||
| + | |||
| + | | ||
| und diese Zeile ergänzen: | und diese Zeile ergänzen: | ||
| - | @admin | + | <file txt / |
| + | %sudo | ||
| + | </ | ||
| + | |||
| + | Der Benutzer muss in der Gruppe //sudo// sein | ||
| Und dann lautet der Befehl zum Backup: | Und dann lautet der Befehl zum Backup: | ||
| - | rsync -a --numeric-ids --del -e ssh --rsync-path=" | + | rsync -azSH --xattrs --acls |
| + | ++++ | ||
| - | === RedHat | + | ++++ SuSE / BTRFS | |
| - | RedHat's Versionen | + | Btrfs snapshot subvolumes können nicht sinnvoll mit rsync oder tar gesichert und wieder hergestellt werden, da die Deduplizierung von Btrfs dabei nicht mehr genutzt wird und die Dateien mehrfach im Backup landen würden. |
| + | ++++ | ||
| + | |||
| + | rsync -azSH --acls --xattrs --numeric-ids --del / | ||
| + | (( mehr zu [[rsync]], u.a. wie man hier '' | ||
| + | |||
| + | === Plausibilitätsprüfung === | ||
| + | Die wichtigsten Fragen sind: | ||
| + | * sind alle Dateien angekommen? -> Dateien auf Original und Backup zählen | ||
| + | * sind die Berechtigungen korrekt? -> Eigentümer/Berechtigungen auf Original und Backup vergleichen, | ||
| + | * Sind die Dateien vollständig angekommen? | ||
| + | |||
| + | == Sind alle Dateien angekommen? | ||
| + | * einfach mal mit '' | ||
| + | * mit Hilfe von '' | ||
| + | |||
| + | == Sind die Berechtigungen korrekt? == | ||
| + | * einfach mal mit '' | ||
| + | |||
| + | == Sind die Dateien vollständig angekommen? == | ||
| + | Einfache Lösung: | ||
| + | * den selben rsync-Aufruf noch mal ergänzt durch die Schalter | ||
| + | * Größenvergleich mit '' | ||
| + | |||
| + | ++++ Optionale, genauere Prüfung für Freude der Unix-Kommandozeile | | ||
| + | |||
| + | Auf dem Zielsystem Checksummen für Backup-Dateien erzeugen: | ||
| + | cd / | ||
| + | find . -xdev -type f -print0 | ||
| + | find . -xdev -print0 | sort -z | xargs -0 getfacl -P -n > / | ||
| + | |||
| + | Auf dem Original-System Checksummen für Dateien erzeugen: | ||
| + | cd / | ||
| + | find . ./ | ||
| + | find . ./boot -xdev -print0 | sort -z | xargs -0 getfacl -P -n > / | ||
| + | |||
| + | '' | ||
| + | scp /run/*.orig root@server: | ||
| + | |||
| + | Checksummen vergleichen | ||
| + | diff ~/ | ||
| + | |||
| + | Berechtigungen vergleichen | ||
| + | diff ~/ | ||
| + | ++++ | ||
| + | ++++ ACLs und erweiterte Attribute | | ||
| + | === Sicherung der ACL-Dateirechte === | ||
| + | aktuelle Versionen von '' | ||
| + | cd / | ||
| + | getfacl --skip-base -P -n -R . > sicherung.acl | ||
| + | scp sicherung.acl root@server:/ | ||
| + | |||
| + | === Sicherung der erweiterten Dateiattribute ( z.B. SELINUX, capabilities | ||
| + | nur nötig, wenn [[tar]] oder [[rsync]] das nicht kann | ||
| + | cd / | ||
| + | getfattr -Rh -m . -d . > sicherung.attr | ||
| + | scp sicherung.attr root@server:/ | ||
| + | ++++ | ||
| ====== Löschen des Systems ====== | ====== Löschen des Systems ====== | ||
| + | (( Und wie geht es weiter, wenn die Festplatte gelöscht ist? Wie kann ich dann noch rebooten? | ||
| + | echo 1 > / | ||
| + | echo b > / | ||
| + | Siehe [[admin_grundlagen: | ||
| + | )) | ||
| === schnell === | === schnell === | ||
| + | wipefs -af /dev/sda | ||
| + | |||
| + | Oder bei SSDs: | ||
| + | blkdiscard --force /dev/sda | ||
| + | (( | ||
| + | Das System lebt jetzt mit den Daten aus dem Cache etwas weiter. Cache löschen: | ||
| + | echo 1 > / | ||
| + | )) | ||
| + | === sicher === | ||
| dd if=/ | dd if=/ | ||
| ... und nach ein paar Sekunden ist das System zumindest unbrauchbar. | ... und nach ein paar Sekunden ist das System zumindest unbrauchbar. | ||
| - | === sicher | + | Oder bei SSDs: |
| + | blkdiscard -s /dev/sda | ||
| + | |||
| + | === paranoid | ||
| dd if=/ | dd if=/ | ||
| - | wipe /dev/sda | + | ... und laaaange warten |
| + | |||
| + | === Gefahr der Beschädigung der Hardware === | ||
| + | |||
| + | Bis Kernel 4.5 ist es möglich, dass durch das Löschen der Dateien unter /sys/firmware/ | ||
| + | |||
| + | Daher vorsichtig sein mit | ||
| + | rm -rf /… | ||
| + | |||
| + | Mehr dazu bei [[https:// | ||
| ====== Wiederherstellung des Systems ====== | ====== Wiederherstellung des Systems ====== | ||
| - | Rettungssystem | + | Rettungssystem booten |
| + | |||
| + | (UEFI-Bootmenü: | ||
| ===== Schritte im Rettungs-System ===== | ===== Schritte im Rettungs-System ===== | ||
| + | ==== Sicherungs-Dateien zurückkopieren ==== | ||
| + | scp root@server:/ | ||
| ==== Wiederherstellung der Partitionierung ==== | ==== Wiederherstellung der Partitionierung ==== | ||
| - | Partitionierung anhand der Informationen aus der gesicherten Datei '' | + | Partitionstabelle wiederherstellen: |
| + | sfdisk | ||
| + | (( Alternativ: Partitionierung manuell anhand der Informationen aus der gesicherten Datei '' | ||
| + | Typ der Partitionstabelle ('' | ||
| ==== Wiederherstellung LVM ==== | ==== Wiederherstellung LVM ==== | ||
| - | Partitionierung anhand der Informationen aus der gesicherten Datei '' | + | === mit vgcfgrestore === |
| + | IDs der Physical Volumes herausfinden: | ||
| + | less sicherung.vg | ||
| + | Physical Volumes anlegen: | ||
| + | pvcreate -ff --zero y --restorefile ~/sicherung.vg --uuid xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx /dev/sdaX | ||
| + | ... | ||
| + | Name der Volume Group herausfinden: | ||
| + | less sicherung.vg | ||
| + | Volume Group und Logical Volumes wiederherstellen: | ||
| + | vgcfgrestore -f ~/sicherung.vg centos_notebook17 | ||
| + | | ||
| + | === von Hand === | ||
| + | LVM anhand der Informationen aus der gesicherten Datei '' | ||
| ==== Dateisysteme anlegen==== | ==== Dateisysteme anlegen==== | ||
| - | Dateisysteme mit '' | + | Dateisysteme mit '' |
| - | mkfs.ext3 /dev/sdaX | + | ((''/ |
| - | ... | + | === ext4 === |
| + | mkfs.ext4 -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | ||
| + | (('' | ||
| + | |||
| + | === xfs === | ||
| + | mkfs.xfs -m uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX | ||
| + | (('' | ||
| + | |||
| + | === fat === | ||
| + | mkfs.vfat -i xxxxxxxx /dev/sdaX | ||
| + | ((Eine UUID die von '' | ||
| + | |||
| + | === btrfs === | ||
| + | |||
| + | Es müssen alle Subvolumes wieder angelegt werden. Beispiel für openSUSE: | ||
| + | mkfs.btrfs -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX | ||
| + | mount /dev/sdaX /mnt | ||
| + | btrfs subvolume create /mnt/@ | ||
| + | btrfs subvolume create /mnt/@/var | ||
| + | … | ||
| + | umount /mnt | ||
| ==== Swap anlegen ==== | ==== Swap anlegen ==== | ||
| - | ((''/ | + | ((''/ |
| - | mkswap /dev/sdaY | + | mkswap |
| ==== Mounten der Zielpartitionen ==== | ==== Mounten der Zielpartitionen ==== | ||
| - | Mountpoints mit '' | + | In ''/ |
| - | ((''/ | + | ((''/ |
| mkdir /tmp/system | mkdir /tmp/system | ||
| mount /dev/sdaX /tmp/system | mount /dev/sdaX /tmp/system | ||
| + | # bei openSUSE mount -o subvol=@ /dev/sdaX /tmp/system | ||
| mkdir / | mkdir / | ||
| mount /dev/sdaY / | mount /dev/sdaY / | ||
| + | und/oder | ||
| + | mkdir / | ||
| + | mount /dev/sdaZ / | ||
| + | und möglicherweise weitere: | ||
| + | mkdir / | ||
| + | mount … | ||
| - | … | + | Bei btrfs-Subvolumes: |
| - | ==== Wiederherstellen mit rsync über ssh ==== | + | |
| - | rsync -a --numeric-ids --del -e ssh root@server:/ | + | |
| - | evtl. ACLs und erweiterte Dateisystemattribute berücksichtigen | + | mount -o subvol=@/ |
| + | … | ||
| + | ==== Wiederherstellen der Dateien mit rsync über ssh ==== | ||
| + | rsync -azSH --acls --xattrs --numeric-ids root@server:/ | ||
| - | ==== Wiederherstellen der ACL-Dateirechte | + | ((mehr siehe [[rsync]])) (( Notlösung: Berechtigungen (teilweise) wiederherstellen, |
| - | nur nötig, wenn '' | + | rpm -qa | xargs rpm --setperms |
| + | Todo: debian? | ||
| + | )) | ||
| + | |||
| + | ++++ ACLs und erweiterte Attribute | | ||
| + | === Wiederherstellen der ACL-Dateirechte === | ||
| + | nur nötig, wenn '' | ||
| + | mount -o remount,acl / | ||
| cd /tmp/system | cd /tmp/system | ||
| setfacl --restore sicherung.acl | setfacl --restore sicherung.acl | ||
| - | ==== Wiederherstellen der SELinux Attribute | + | === Wiederherstellen der SELinux Attribute === |
| - | nur nötig, wenn '' | + | nur nötig, wenn '' |
| ( nicht erfolgreich getestet ... ) | ( nicht erfolgreich getestet ... ) | ||
| + | mount -o remount, | ||
| cd /tmp/system | cd /tmp/system | ||
| - | | + | |
| oder | oder | ||
| touch / | touch / | ||
| - | + | ++++ | |
| - | ==== Wiederherstellung der Dateisystem-Einstellungen | + | ===== Bootfähig machen |
| - | Mir ist kein automatischer Weg bekannt ... daher: | + | |
| - | tune2fs .... ( UUID, Dateisystem-Label, | + | |
| - | tune2fs -U 2e92cc4e-e735-4e4f-8a0f-dc3adb42fd67 /dev/sda5 | + | |
| - | + | ||
| - | ===== Bootloader wiederherstellen | + | |
| ==== chroot vorbereiten ==== | ==== chroot vorbereiten ==== | ||
| - | mount --bind /dev / | + | |
| + | mount --rbind /proc / | ||
| + | mount --rbind /sys / | ||
| + | | ||
| + | ((/run ist sinnvoll bei der Verwendung von lvm oder raid)) (( nicht alle diese Befehle sind in allen Fällen notwendig! grub braucht hauptsächlich | ||
| + | === Alternativ mit bind statt rbind === | ||
| + | mount --bind /dev / | ||
| + | mount --bind /dev/pts / | ||
| mount --bind /proc / | mount --bind /proc / | ||
| - | mount --bind /sys / | + | mount --bind /sys / |
| + | mount --bind /run / | ||
| + | )) | ||
| + | |||
| + | ==== UEFI ==== | ||
| + | (nur bei UEFI-Systemen) | ||
| + | |||
| + | === efivars schreibbar machen === | ||
| + | mount -o rw, | ||
| + | oder (falls ''/ | ||
| + | mount -t efivarfs efivarfs / | ||
| + | |||
| + | === Schritte im chroot Zielsystem === | ||
| + | chroot /tmp/system /bin/bash | ||
| + | |||
| + | === grub-efi bzw. efivars wiederherstellen === | ||
| + | |||
| + | Debian / Ubuntu: | ||
| + | grub-install | ||
| + | |||
| + | SuSE (ab 15.4): | ||
| + | grub2-install | ||
| + | shim-install | ||
| + | |||
| + | CentOS / Rocky (ab 9): | ||
| + | |||
| + | '' | ||
| + | efibootmgr -v | ||
| + | |||
| + | -> alle alten Einträge löschen: | ||
| + | efibootmgr -B -b 000f | ||
| + | (( '' | ||
| + | |||
| + | EFI ESP Partition merken | ||
| + | grub2-probe -t device / | ||
| + | |||
| + | EFI-Eintrag anlegen | ||
| + | efi_label=' | ||
| + | distro=' | ||
| + | boot_device='/ | ||
| + | esp_partition_id=1 | ||
| + | efibootmgr --create --disk " | ||
| + | |||
| + | Ab RHEL/ | ||
| + | |||
| + | dnf -y reinstall kernel-core | ||
| + | oder mit grubby und kernel-install von Hand: | ||
| + | grubby --info DEFAULT | ||
| + | source / | ||
| + | grubby --update-kernel ALL --args " | ||
| + | |||
| + | grub-config neu erzeugen | ||
| + | grub2-mkconfig --update-bls-cmdline -o / | ||
| + | dnf -y reinstall grub2-common | ||
| + | |||
| + | (( | ||
| + | Nachfolgend die Befehle, die notwendig sind, ein reines EFI-System wiederherzustellen | ||
| + | oder wenn alle EFI-Informationen verloren sind | ||
| + | |||
| + | === EFI Variablen schreiben === | ||
| + | Die folgenden Shell-Variablen gemäß Ausgabe von | ||
| + | ls / | ||
| + | und der Datei '' | ||
| + | |||
| + | efi_label=' | ||
| + | distro=' | ||
| + | boot_device='/ | ||
| + | esp_partition_id=2 | ||
| + | efibootmgr --create --disk " | ||
| + | efibootmgr --create --disk " | ||
| + | |||
| + | === Grub2 konfigurieren === | ||
| + | |||
| + | In CentOS 8 BLSCFG abschalten: | ||
| + | <file txt / | ||
| + | … | ||
| + | GRUB_ENABLE_BLSCFG=false | ||
| + | … | ||
| + | </ | ||
| + | TODO: Lösung mit BLSCFG finden | ||
| + | |||
| + | == CentOS == | ||
| + | grub2-mkconfig -o / | ||
| + | |||
| + | == Debian, Ubuntu == | ||
| + | dpkg-reconfigure grub-efi-amd64 | ||
| + | oder | ||
| + | update-grub2 | ||
| - | (( nicht alle diese Befehle sind in allen Fällen notwendig! grub braucht hauptsächlich /dev, und das ist, wenn man zuvor beim sichern mit dem bind-mount gearbeitet hat, schon minimal befüllt. Kann man also weglassen, aber wenn grub meckert, sollte man das versuchen! | ||
| - | Ich habe es schon erlebt, dass die Datei ''/ | ||
| - | mv / | ||
| - | cp -a / | ||
| - | Nach dem chroot nicht vergessen, die ''/ | ||
| - | mv / | ||
| )) | )) | ||
| + | === EFI Variablen prüfen === | ||
| + | blkid | ||
| + | efibootmgr -v | ||
| + | |||
| + | * Partition unique GUID: muss zur ESP Partition passen | ||
| + | * The path of the EFI image to boot must use \ (backslash) instead of / (forward slash) as path separator. | ||
| + | |||
| + | ==== BIOS: Bootloader in mbr schreiben ==== | ||
| + | (nur bei BIOS-Systemen) | ||
| + | |||
| + | === Schritte im chroot Zielsystem === | ||
| + | chroot /tmp/system /bin/bash | ||
| + | |||
| + | === grub2 wiederherstellen === | ||
| + | == Debian (ab 6.0), Ubuntu (ab 16.04) == | ||
| + | grub-install /dev/sda | ||
| + | update-grub2 | ||
| + | |||
| + | == openSuSE 12.2 == | ||
| + | grub2-install /dev/sda | ||
| + | update-bootloader --refresh | ||
| + | |||
| + | == CentOS (ab 7) == | ||
| + | grub2-install /dev/sda | ||
| + | grub2-mkconfig > / | ||
| - | ==== Schritte im chroot Zielsystem ==== | + | == andere |
| - | | + | |
| + | grub-mkconfig > /boot/grub/grub.cfg | ||
| - | === System wieder startfähig machen | + | === grub1 / grub legacy wiederherstellen |
| - | == grub == | + | |
| Grub in den MBR schreiben: | Grub in den MBR schreiben: | ||
| grub | grub | ||
| Zeile 168: | Zeile 479: | ||
| grub-install --recheck --no-floppy hd0 | grub-install --recheck --no-floppy hd0 | ||
| - | == grub2 == | ||
| - | grub-install /dev/sda | ||
| - | update-grub | + | ==== reboot ==== |
| - | (( evtl. nur bei debian )) | + | chroot-Umgebung |
| + | reboot | ||
| ===== Anpassungen bei geänderter Hardware oder geänderten Partitionen ===== | ===== Anpassungen bei geänderter Hardware oder geänderten Partitionen ===== | ||
| + | ==== Ubuntu (22.04 LTS) ==== | ||
| + | * TODO: Nach Backup/ | ||
| + | |||
| + | |||
| + | ==== Rebuild Red Hat / Rocky / Alma 8 ==== | ||
| + | **[[Rebuild Red Hat 8|komplettes Rebuild Bootmanager UEFI+Rocky/ | ||
| + | |||
| Je nach dem wie sich die Hardware geändert hat, sind folgende Bereiche anzupassen: | Je nach dem wie sich die Hardware geändert hat, sind folgende Bereiche anzupassen: | ||
| + | |||
| + | ==== Format Partitionstabelle ==== | ||
| + | Wenn die neue Festplatte größer als 2TB ist, dann GPT als Format für die Partitionstabelle verwenden. | ||
| + | |||
| + | Wenn Linux von der Festplatte auch booten soll, dann braucht Grub vor der ersten Partition etwas Platz. Die erste Partition sollte daher - wie heute üblich - bei Block 2048 (= 1MiB ≈ 1,05MB) starten. Alternativ kann man diesen unpartitionierten Bereich mit einer [[wp> | ||
| + | |||
| + | ((aus dem [[https:// | ||
| + | )) | ||
| + | (( | ||
| + | aus der [[http:// | ||
| + | |||
| + | parted /dev/disk set partition-number bios_grub on | ||
| + | |||
| + | //If you are using gdisk, set the partition type to ‘0xEF02’. With partitioning programs that require setting the GUID directly, it should be ‘21686148-6449-6e6f-744e656564454649’. //)) | ||
| + | |||
| + | ==== /boot auf separater Partition ==== | ||
| + | Bei Debian mit UEFI anpassen: ''/ | ||
| ==== Bootloader grub ==== | ==== Bootloader grub ==== | ||
| ''/ | ''/ | ||
| Zeile 185: | Zeile 519: | ||
| * Kernel-Parameter zum root-Dateisystem ( '' | * Kernel-Parameter zum root-Dateisystem ( '' | ||
| + | ==== Bootloader grub2 ==== | ||
| + | ''/ | ||
| + | |||
| + | Neue Partitionsnummern beachten, wichtig sind z.B. | ||
| + | * die Einstellungen zur Boot-Partition ( '' | ||
| + | * die Lage des Kernels ( ''/ | ||
| + | * Kernel-Parameter zum root-Dateisystem ( '' | ||
| + | |||
| + | ==== BIOS -> UEFI ==== | ||
| + | |||
| + | Um ein (ehemaliges) BIOS System auf einer UEFI Hardware wieder herzustellen braucht man | ||
| + | * Partitionstabelle mit gpt (siehe oben) | ||
| + | * eine FAT32 Partition für ''/ | ||
| + | * GRUB2: | ||
| + | * Debian: die Pakete '' | ||
| + | * Ubuntu: wie bei Debian, zusätzlich optional noch shim bzw. shim-signed | ||
| + | * CentOS: Pakete '' | ||
| + | * SuSE: '' | ||
| ==== /etc/fstab ==== | ==== /etc/fstab ==== | ||
| ''/ | ''/ | ||
| Zeile 194: | Zeile 546: | ||
| (( möglicherweise kann man ''/ | (( möglicherweise kann man ''/ | ||
| ==== Kernel-Module und initrd ==== | ==== Kernel-Module und initrd ==== | ||
| - | Je nach Änderung muß eine neue initrd erzeugt werden und/oder die bei Booten geladenen Module müssen überarbeitet werden | + | Je nach Änderung muß eine neue [[admin_grundlagen: |
| + | |||
| + | === dracut (CentOS 8) === | ||
| + | in der chroot-Umgebung | ||
| + | dracut --hostonly --persistent-policy ' | ||
| + | |||
| + | === dracut (CentOS 7 / openSuSE 42.1) === | ||
| + | in der chroot-Umgebung | ||
| + | |||
| + | <file txt / | ||
| + | add_drivers+=" | ||
| + | </ | ||
| + | dracut --force / | ||
| === CentOS 6 === | === CentOS 6 === | ||
| in der chroot-Umgebung | in der chroot-Umgebung | ||
| Zeile 203: | Zeile 568: | ||
| ====== Alternative Sicherungswege ====== | ====== Alternative Sicherungswege ====== | ||
| + | ==== tar über ssh ==== | ||
| + | === Sicherung === | ||
| + | tar cz --numeric-owner --sparse --xattrs --acls --directory /mnt/system . | ssh nutzer@server "cat > / | ||
| + | |||
| + | === Wiederherstellen === | ||
| + | ssh nutzer@server 'cat / | ||
| + | |||
| + | === Dokumentation === | ||
| + | * [[tar|Übersicht tar]] | ||
| + | * man tar | ||
| + | |||
| + | ==== cpio über ssh ==== | ||
| + | === Sicherung === | ||
| + | ((Vermeidet die Probleme von tar und gzip bei Datenfehlern)) | ||
| + | |||
| + | cd /mnt/system | ||
| + | find -xdev -depth -print0 | cpio -o0 --sparse --format=crc | bzip2 | ssh nutzer@server 'cat > / | ||
| + | |||
| + | === Wiederherstellen === | ||
| + | cd /tmp/system | ||
| + | ssh nutzer@server 'cat / | ||
| + | |||
| + | ==== rsync ==== | ||
| + | Auf lokale Platte: | ||
| + | rsync -a --hard-links --sparse --acls --xattrs --numeric-ids --del / / | ||
| + | |||
| + | Übers Netz via ssh: | ||
| + | rsync -a --hard-links --sparse --acls --xattrs --numeric-ids --del / server:/ | ||
| + | |||
| + | Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// )) | ||
| + | rsync -a --hard-links --sparse --acls --xattrs --numeric-ids --del / server::/ | ||
| + | |||
| ==== Platzsparende Hardlink Backups mit rsnapshot ==== | ==== Platzsparende Hardlink Backups mit rsnapshot ==== | ||
| Zeile 229: | Zeile 626: | ||
| rsnapshot -t daily | rsnapshot -t daily | ||
| - | ==== Sicherung mit tar über ssh ==== | + | ===== Problem: udev ===== |
| - | tar cz --numeric-owner --directory | + | Seit Kernel 2.6 und der Einführung von [[udev]] haben Linux Distributionen das Verzeichnis '' |
| - | Fedora 7, Centos 5: | + | Lösungswege: |
| - | tar cz --numeric-owner --xattrs --directory /mnt/system . | ssh nutzer@server "cat > / | + | |
| - | === Dokumentation === | + | - Beim Backup das Verzeichnis ''/ |
| - | | + | |
| - | * man tar | + | |
| - | === Sicherung mit tar über ssh und anschließendem entpacken === | + | FRAGE: das müsste doch durch die bind-mounts nach /mnt/system gelöst sein, oder?! |
| - | cd / | + | Antwort: richtig |
| - | ==== Sicherung mit cpio über ssh ==== | + | ====== |
| - | ((Vermeidet die Probleme von tar und gzip bei Datenfehlern)) | + | * [[http:// |
| + | ====== Software ====== | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| - | cd /mnt/system | + | ====== Backup |
| - | find -mount -depth -print0 | cpio -o0 --format=crc | bzip2 | ssh nutzer@server 'cat > / | + | |
| - | ==== Wiederherstellen | + | Diese Anleitung beschreibt die Sicherung und Wiederherstellung eines Suse Linux Systems |
| - | ssh nutzer@server 'cat / | + | |
| - | ==== Wiederherstellen mit cpio über ssh ==== | + | Getestet wurde diese Anleitung auf einem Suse Leap 15.x im Dezember 2022 auf einem Tuxedo Laptop mit NVME Speicher. |
| - | cd / | + | |
| - | ssh nutzer@server 'cat / | + | |
| - | ==== rsync ==== | + | ===== Sicherung (aka Backup) ===== |
| - | Auf lokale Platte: | + | |
| - | rsync -ax --numeric-ids --delete / / | + | |
| - | Übers Netz via ssh: | + | * Für die Sicherung des BTRFS benutzen wir die nur-lese (read-only) Snapshot Funktion des BTRFS zusammen mit dem '' |
| - | | + | |
| + | btrfs subvol create .backup | ||
| + | </code> | ||
| - | Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem | + | * Schritt 2: von jedem Subvolume des Root-Dateisystems ein read-only Snapshot unterhalb des Backup-Subvolumes erstellen. Am Ende prüfen das auch alle Subvolumes |
| - | | + | btrfs subvol list / |
| + | btrfs subvol snap -r / .backup/root-fs | ||
| + | btrfs subvol snap -r /usr/local .backup/usr-local | ||
| + | btrfs subvol snap -r /tmp .backup/tmp | ||
| + | ... | ||
| + | ls -l /.backup | ||
| + | </code> | ||
| - | ===== Problem: udev ===== | + | * Subvolumes welche gesichert werden:<code example> |
| - | Auf modernen Linux-Installationen wird wegen [[udev]] das Verzeichnis | + | / |
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | * Schritt 3: die Read-Only Snapshot-Volumes mittels | ||
| - | Lösungswege: | + | <code example> |
| + | ls -1 -d /.backup/* | xargs btrfs send | ssh -C nutzerXX@192.168.1.2XX "cat > notebookXX.btrfs" | ||
| + | </ | ||
| - | | + | |
| - | - Auf das Orginalsystem kann man mit '' | + | btrfs subvol delete |
| + | btrfs subvol delete | ||
| + | btrfs subvol delete | ||
| + | ... | ||
| + | btrfs subvol delete /.backup | ||
| + | </ | ||
| - | FRAGE: das müsste doch durch die bind-mounts nach /mnt/system gelöst sein, oder?! | ||
| - | ====== | + | ===== System-Verlust simulieren (der spassige Teil) ===== |
| - | * [[http://www.linux-magazin.de/Artikel/ausgabe/2002/04/rsync/rsync.html]] | + | |
| - | ====== | + | * System " |
| - | | + | rm -rf /usr |
| - | * [[http://www.mondorescue.org/ | + | </ |
| - | * [[http://www.partimage.org/Main_Page]] | + | |
| + | * Reboot testen -> das System sollte nicht mehr starten | ||
| + | |||
| + | ===== Bare-Metal System-Wiederherstellung | ||
| + | |||
| + | * Diese Anleitung geht davon aus, das die EFI-Bootpartition, | ||
| + | * Ist das Ziel-System mit einer anderen Speicher-Lösung als NVME ausgestattet müssen im weiteren die Üfade der Grätedatei entsprechend angepasst werden (z.B. '' | ||
| + | |||
| + | ==== Rettungs-Linux starten ==== | ||
| + | |||
| + | * Mit einem Rettungs-Linux starten | ||
| + | * Tuxedo F7 beim UEFI Bootbildschirm | ||
| + | * Thinkpad F12 beim UEFI Bootbildschirm | ||
| + | * Netzwerk-Boot auswählen | ||
| + | * F4 -> Live-Linux-Systeme | ||
| + | * sysrcd starten | ||
| + | * Neues BTRFS Dateisystem erzeugen (ggf. Gerätedatei anpassen!!)< | ||
| + | mkfs.btrfs | ||
| + | </ | ||
| + | |||
| + | * Neues Dateisystem unter '' | ||
| + | mount / | ||
| + | </ | ||
| + | |||
| + | * Subvolume für das Zurückspielen der Backups erstellen< | ||
| + | btrfs subvol create /mnt/.restore | ||
| + | </code> | ||
| + | |||
| + | * BTRFS Dateisysteme von Backup-System via SSH zurückspielen< | ||
| + | ssh nutzerXX@192.168.1.2XX "cat notebookXX.btrfs" | ||
| + | </code> | ||
| + | |||
| + | * Neue schreibbare Snapshots aus dem Read-Only Snapshots erstellen. Die Namen der Subvolumes müssen nicht den original Namen entsprechen< | ||
| + | btrfs subvol snap /mnt/.restore/tmp /mnt/tmp | ||
| + | btrfs subvol snap / | ||
| + | btrfs subvol snap / | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | * Subvolume für automatische Snapshots erstellen (wenn dieses nicht gesichert und zurückgespielt wurde)< | ||
| + | btrfs subvol create / | ||
| + | </ | ||
| + | |||
| + | * Subvolumes auflisten, Volume-ID des neuen Root-Filesystems notieren< | ||
| + | btrfs subvol list /mnt | ||
| + | </ | ||
| + | |||
| + | * Root-Filesystem-ID als neues Default-Volume des BTRFS Dateisystems eintragen< | ||
| + | btrfs subvol set-default <id> /mnt | ||
| + | </ | ||
| + | |||
| + | * BTRFS Dateisystem '' | ||
| + | umount /mnt | ||
| + | </ | ||
| + | |||
| + | * Neues BTRFS Dateisystem mit neuem (default) Root-Filesystem einhängen< | ||
| + | mount / | ||
| + | </ | ||
| + | |||
| + | * Pseudo-Dateisysteme aus dem Rettungs-System in das neue Root-Filesystem mounten (wird von der " | ||
| + | mount --rbind /dev /mnt/dev | ||
| + | mount --rbind /sys /mnt/sys | ||
| + | mount --rbind /proc /mnt/proc | ||
| + | </ | ||
| + | |||
| + | * In die " | ||
| + | chroot /mnt | ||
| + | </ | ||
| + | |||
| + | * Datei '' | ||
| + | * UUID durch Geräte-Pfad ersetzen | ||
| + | * Namen der Snapshots anpassen (aus '' | ||
| + | * Kurze Namen der Snapshots oder Subvol-IDs benutzen | ||
| + | * Mount testen mit '' | ||
| + | |||
| + | * Beispiel Datei /etc/fstab nach Wiederherstellung< | ||
| + | |||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | * Init-Ramdisk '' | ||
| + | mkinitrd | ||
| + | </code> | ||
| + | |||
| + | * Bootloader Grub2 neu installieren< | ||
| + | grub2-install | ||
| + | </code> | ||
| + | |||
| + | * Grub2 Konfiguration neu erstellen< | ||
| + | grub2-mkconfig -o /boot/grub2/grub.cfg | ||
| + | </code> | ||
| + | |||
| + | * chroot verlassen mit '' | ||
| + | * System neu booten, Daumen drücken …<code example> | ||
| + | reboot | ||
| + | </ | ||
| + | |||
| + | * Nach erfolgreichem Boot die Restore-Subvolumes löschen | ||
admin_grundlagen/systemsicherung.1340284122.txt.gz · Zuletzt geändert: 2012/06/21 13:08 von ingo_wichmann
