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 [2014/07/01 10:10] – Externe Bearbeitung 127.0.0.1 | admin_grundlagen:systemsicherung [2025/11/28 11:53] (aktuell) – [Sicherung der Dateisystem-Einstellungen] ingo_wichmann | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| Abschätzen, | Abschätzen, | ||
| - | df -h | + | df -Thlx tmpfs -x devtmpfs |
| + | -> Summe der Daten auf persistenten, | ||
| ===== Vorbereitung Zielsystem ===== | ===== Vorbereitung Zielsystem ===== | ||
| + | ==== Platz schaffen ==== | ||
| evtl. Platz schaffen wie in [[Plattenplatz]], | evtl. Platz schaffen wie in [[Plattenplatz]], | ||
| mkdir -p / | mkdir -p / | ||
| - | === Ubuntu | + | ==== SSH Zugriff als root ==== |
| - | Zielverzeichnis ''/ | + | Root Passwort setzen, sofern nicht bekannt/ |
| + | passwd root | ||
| + | |||
| + | <file txt / | ||
| + | PermitRootLogin yes | ||
| + | </ | ||
| + | |||
| + | systemctl restart ssh.service | ||
| + | |||
| + | ++++ Alternativ: sudo und ssh-Schlüssel | | ||
| + | Zielverzeichnis ''/ | ||
| chown nutzerXX /mnt/backup | chown nutzerXX /mnt/backup | ||
| + | * [[sudo]] einrichten, falls noch nicht passiert | ||
| + | * einen [[ssh]]-Schlüssel beim Benutzer root hinterlegen | ||
| + | ++++ | ||
| ===== Sicherung ===== | ===== Sicherung ===== | ||
| Diese Schritte werden auf dem zu sichernden System ausgeführt. | 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 ==== | ||
| - | Mehr zur Vorgehensweise siehe [[partitionierung]]. Wenn die Wiederherstellung nicht automatisiert erfolgen muss, reicht | + | 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 | ||
| - | sfdisk -d /dev/sda > sicherung.sfdisk | + | Mehr zur Vorgehensweise siehe [[Partitionierung]]. )) |
| - | 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:/ | ||
| - | alternativ mit | + | ==== Sicherung anderer Storage Informationen ==== |
| - | | + | |
| + | * drbd | ||
| + | * [[lpi2: | ||
| + | * ... | ||
| ==== Sicherung der Dateisystem-Einstellungen ==== | ==== Sicherung der Dateisystem-Einstellungen ==== | ||
| - | === Welche Dateisysteme | + | === Von welchen Dateisystemen |
| - | lsblk | + | lsblk -f |
| oder | oder | ||
| - | df -h | + | df -Thlx tmpfs -x devtmpfs -x efivarfs |
| - | === ext3 / ext4 === | + | -> alle persistenten, |
| - | tune2fs -l /dev/sdaX > sicherung.tune2fs.sdaX | + | |
| - | scp sicherung.tune2fs.sdaX root@server:/ | + | == ext2 / ext3 / ext4 == |
| + | tune2fs -l /dev/sdaX > sicherung.ext.sdaX | ||
| ((''/ | ((''/ | ||
| - | === xfs === | + | == xfs == |
| - | xfs_admin -l / | + | 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 auf Zielsystem kopieren ==== | ||
| + | |||
| + | scp sicherung.* root@server:/ | ||
| ==== Sicherung der Dateien ==== | ==== Sicherung der Dateien ==== | ||
| === Einhängen der Dateisysteme unter /mnt/system === | === Einhängen der Dateisysteme unter /mnt/system === | ||
| - | |||
| mkdir /mnt/system | mkdir /mnt/system | ||
| mount --bind / /mnt/system | mount --bind / /mnt/system | ||
| - | mount --bind /boot / | ||
| - | evtl. weitere Verzeichnisse/ | ||
| - | ((ab RedHat 6 und openSuSE 13.1 kann man auf diesen Schritt verzichten, und statt dessen bei '' | + | In der Ausgabe von '' |
| - | === mit rsync über ssh === | + | mount --bind /boot / |
| - | rsync -a --numeric-ids --del -e ssh / | + | und/oder |
| - | (( mehr zu [[rsync]] )) | + | mount --bind / |
| - | (( mehr zu [[ssh]] )) | + | und möglicherweise weitere: |
| - | (( | + | mount --bind /… |
| - | Zweiter Aufruf, um zu sehen ob alle Dateien kopiert wurden: | + | |
| - | rsync -anv --numeric-ids --del -e ssh /mnt/system/ root@server:/ | + | ((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: | ||
| - | | + | <file txt / |
| + | %sudo ALL=(ALL) NOPASSWD: ALL | ||
| + | </ | ||
| Der Benutzer muss in der Gruppe //sudo// sein | 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' | + | Btrfs snapshot subvolumes können nicht sinnvoll mit rsync oder tar gesichert und wieder hergestellt werden, da die Deduplizierung |
| + | ++++ | ||
| + | |||
| + | rsync -azSH --acls --xattrs --numeric-ids --del / | ||
| + | (( mehr zu [[rsync]], u.a. wie man hier '' | ||
| === Plausibilitätsprüfung === | === Plausibilitätsprüfung === | ||
| - | //die gezeigten Verfahren | + | Die wichtigsten Fragen |
| + | * 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? | ||
| - | (( //Das funktioniert nicht, | + | == Sind alle Dateien angekommen? == |
| - | Datenmenge auf dem Quellsystem: | + | * einfach mal mit '' |
| - | | + | * mit Hilfe von '' |
| - | Datenmenge auf dem Zielsystem: | + | |
| - | | + | == 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: | ||
| + | | ||
| + | find . -xdev -type f -print0 | ||
| + | find . -xdev -print0 | ||
| + | |||
| + | Auf dem Original-System Checksummen für Dateien erzeugen: (hier müssen neben '' | ||
| + | | ||
| + | find . ./boot -xdev -type f -print0 | sort -z | xargs -0 cksum > /run/cksum.orig | ||
| + | find . ./boot -xdev -print0 | ||
| + | |||
| + | ''/ | ||
| + | scp /run/*.orig root@server: | ||
| - | Anzahl Dateien auf dem Quellsystem: | + | Checksummen vergleichen |
| - | | + | |
| - | Anzahl Dateien auf dem Zielsystem: | + | |
| - | find /mnt/backup/dateien 2>/ | + | |
| - | ==== Sicherung der ACL-Dateirechte | + | Berechtigungen vergleichen |
| - | nur nötig, wenn '' | + | diff ~/ |
| + | ++++ | ||
| + | ++++ ACLs und erweiterte Attribute | | ||
| + | === Sicherung der ACL-Dateirechte === | ||
| + | aktuelle Versionen von '' | ||
| cd /mnt/system | cd /mnt/system | ||
| getfacl --skip-base -P -n -R . > sicherung.acl | getfacl --skip-base -P -n -R . > sicherung.acl | ||
| scp sicherung.acl root@server:/ | scp sicherung.acl root@server:/ | ||
| - | ==== Sicherung der erweiterten Dateiattribute ( z.B. SELINUX, capabilities ) ==== | + | === Sicherung der erweiterten Dateiattribute ( z.B. SELINUX, capabilities ) === |
| - | nur nötig, wenn '' | + | nur nötig, wenn [[tar]] oder [[rsync]] das nicht kann |
| cd /mnt/system | cd /mnt/system | ||
| getfattr -Rh -m . -d . > sicherung.attr | getfattr -Rh -m . -d . > sicherung.attr | ||
| scp sicherung.attr root@server:/ | 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 ( z.B. knoppix, pmagic | + | Rettungssystem |
| + | |||
| + | (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 /dev/sda < sicherung.sfdisk | ||
| + | |||
| + | (( Alternativ: | ||
| + | Typ der Partitionstabelle ('' | ||
| ==== Wiederherstellung LVM ==== | ==== Wiederherstellung LVM ==== | ||
| - | Partitionierung | + | === mit vgcfgrestore === |
| + | IDs der Physical Volumes herausfinden: | ||
| + | less sicherung.vg | ||
| + | Physical Volumes anlegen: | ||
| + | pvcreate -ff --zero y --restorefile ~/ | ||
| + | ... | ||
| + | Name der Volume Group herausfinden: | ||
| + | less sicherung.vg | ||
| + | Volume Group und Logical Volumes wiederherstellen: | ||
| + | vgcfgrestore -f ~/ | ||
| + | vgchange -a y | ||
| + | |||
| + | === von Hand === | ||
| + | LVM anhand der Informationen aus der gesicherten Datei '' | ||
| ==== Dateisysteme anlegen==== | ==== Dateisysteme anlegen==== | ||
| - | Dateisysteme mit '' | + | Dateisysteme mit '' |
| ((''/ | ((''/ | ||
| - | | + | === ext4 === |
| - | ... | + | |
| + | (('' | ||
| + | === 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/sdaX | + | 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 … | ||
| - | ==== Wiederherstellen mit rsync über ssh ==== | + | Bei btrfs-Subvolumes: |
| - | ((mehr siehe [[rsync]])) | + | |
| - | 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:/ | ||
| - | === Ubuntu === | + | ((mehr siehe [[rsync]])) (( Notlösung: Berechtigungen (teilweise) wiederherstellen, |
| - | | + | |
| - | + | ||
| - | (( Notlösung: Berechtigungen (teilweise) wiederherstellen, | + | |
| rpm -qa | xargs rpm --setperms | rpm -qa | xargs rpm --setperms | ||
| + | Todo: debian? | ||
| )) | )) | ||
| - | ==== Wiederherstellen der ACL-Dateirechte | + | |
| - | nur nötig, wenn '' | + | ++++ ACLs und erweiterte Attribute | |
| + | === Wiederherstellen der ACL-Dateirechte === | ||
| + | nur nötig, wenn '' | ||
| mount -o remount,acl / | 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, | mount -o remount, | ||
| Zeile 180: | Zeile 337: | ||
| oder | oder | ||
| touch / | touch / | ||
| - | + | ++++ | |
| - | ==== Wiederherstellung der Dateisystem-Einstellungen | + | ===== Bootfähig machen |
| - | Mir ist kein automatischer Weg bekannt ... daher: | + | |
| - | tune2fs .... ( UUID, Dateisystem-Label, | + | |
| - | tune2fs -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sda5 | + | |
| - | mkswap -U yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy /dev/sda6 | + | |
| - | + | ||
| - | ===== Bootloader wiederherstellen | + | |
| ==== chroot vorbereiten ==== | ==== chroot vorbereiten ==== | ||
| mount --rbind /dev / | mount --rbind /dev / | ||
| + | mount --rbind /proc / | ||
| + | mount --rbind /sys / | ||
| + | mount --bind /run / | ||
| + | ((/run ist sinnvoll bei der Verwendung von lvm oder raid)) (( nicht alle diese Befehle sind in allen Fällen notwendig! grub braucht hauptsächlich /dev, und das ist, wenn man zuvor beim Sichern mit '' | ||
| + | === 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 '' | ||
| - | 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 | ||
| - | ==== Schritte im chroot Zielsystem ==== | + | * Partition unique GUID: muss zur ESP Partition passen |
| - | | + | |
| - | === System wieder startfähig machen | + | ==== BIOS: Bootloader in mbr schreiben ==== |
| - | == grub == | + | (nur bei BIOS-Systemen) |
| + | |||
| + | === Schritte im chroot Zielsystem === | ||
| + | chroot /tmp/system /bin/bash | ||
| + | |||
| + | === grub2 wiederherstellen === | ||
| + | == Debian (ab 6.0), Ubuntu (ab 16.04) == | ||
| + | | ||
| + | update-grub2 | ||
| + | |||
| + | == openSuSE 12.2 == | ||
| + | grub2-install /dev/sda | ||
| + | update-bootloader --refresh | ||
| + | |||
| + | == CentOS (ab 7) == | ||
| + | grub2-install /dev/sda | ||
| + | grub2-mkconfig > / | ||
| + | |||
| + | == andere == | ||
| + | grub2-install /dev/sda | ||
| + | grub-mkconfig > / | ||
| + | |||
| + | === grub1 / grub legacy wiederherstellen === | ||
| Grub in den MBR schreiben: | Grub in den MBR schreiben: | ||
| grub | grub | ||
| Zeile 215: | Zeile 479: | ||
| grub-install --recheck --no-floppy hd0 | grub-install --recheck --no-floppy hd0 | ||
| - | == grub2 == | ||
| - | == Debian 6.0 == | + | ==== reboot |
| - | grub-install /dev/sda | + | chroot-Umgebung (z.B. mit '' |
| - | update-grub2 | + | |
| - | + | ||
| - | == openSuSE 12.2 == | + | |
| - | grub2-install /dev/sda | + | |
| - | | + | |
| ===== 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 236: | 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 246: | Zeile 547: | ||
| ==== Kernel-Module und initrd ==== | ==== Kernel-Module und initrd ==== | ||
| Je nach Änderung muß eine neue [[admin_grundlagen: | 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 254: | 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 279: | Zeile 625: | ||
| rsnapshot -t daily | rsnapshot -t daily | ||
| - | |||
| - | ==== Sicherung mit tar über ssh ==== | ||
| - | tar cz --numeric-owner --directory /mnt/system . | ssh nutzer@server "cat > / | ||
| - | |||
| - | Fedora 7, Centos 5: | ||
| - | tar cz --numeric-owner --xattrs --directory /mnt/system . | ssh nutzer@server "cat > / | ||
| - | |||
| - | === Dokumentation === | ||
| - | * [[tar|Übersicht tar]] | ||
| - | * man tar | ||
| - | |||
| - | === Sicherung mit tar über ssh und anschließendem entpacken === | ||
| - | |||
| - | cd / | ||
| - | |||
| - | ==== Sicherung mit cpio über ssh ==== | ||
| - | ((Vermeidet die Probleme von tar und gzip bei Datenfehlern)) | ||
| - | |||
| - | cd /mnt/system | ||
| - | find -xdev -depth -print0 | cpio -o0 --format=crc | bzip2 | ssh nutzer@server 'cat > / | ||
| - | |||
| - | ==== Wiederherstellen mit tar über ssh ==== | ||
| - | ssh nutzer@server 'cat / | ||
| - | |||
| - | ==== Wiederherstellen mit cpio über ssh ==== | ||
| - | cd /tmp/system | ||
| - | ssh nutzer@server 'cat / | ||
| - | |||
| - | ==== rsync ==== | ||
| - | Auf lokale Platte: | ||
| - | rsync -ax --numeric-ids --del / / | ||
| - | |||
| - | Übers Netz via ssh: | ||
| - | rsync -ax --numeric-ids --del -e ssh / server:/ | ||
| - | |||
| - | Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// )) | ||
| - | rsync -ax --numeric-ids --del / server::/ | ||
| ===== Problem: udev ===== | ===== Problem: udev ===== | ||
| - | Auf modernen Linux-Installationen wird wegen [[udev]] das Verzeichnis ''/ | + | Seit Kernel 2.6 und der Einführung von [[udev]] |
| Lösungswege: | Lösungswege: | ||
| Zeile 335: | Zeile 644: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | |||
| + | ====== Backup / Bare-Metal Restore Suse Linux ====== | ||
| + | |||
| + | Diese Anleitung beschreibt die Sicherung und Wiederherstellung eines Suse Linux Systems mit BTRFS Dateisystem. | ||
| + | |||
| + | Getestet wurde diese Anleitung auf einem Suse Leap 15.x im Dezember 2022 auf einem Tuxedo Laptop mit NVME Speicher. | ||
| + | |||
| + | ===== Sicherung (aka Backup) ===== | ||
| + | |||
| + | * Für die Sicherung des BTRFS benutzen wir die nur-lese (read-only) Snapshot Funktion des BTRFS zusammen mit dem '' | ||
| + | * Schritt 1: Erstellen eines Subvolumes, welches die zu sichernden Snapshots aufnimmt< | ||
| + | btrfs subvol create .backup | ||
| + | </ | ||
| + | |||
| + | * 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 (ggf. mit Aussnahme von '' | ||
| + | btrfs subvol list / | ||
| + | btrfs subvol snap -r / .backup/ | ||
| + | btrfs subvol snap -r /usr/local .backup/ | ||
| + | btrfs subvol snap -r /tmp .backup/tmp | ||
| + | ... | ||
| + | ls -l /.backup | ||
| + | </ | ||
| + | |||
| + | * Subvolumes welche gesichert werden:< | ||
| + | / | ||
| + | /home | ||
| + | /opt | ||
| + | /srv | ||
| + | /var | ||
| + | /root | ||
| + | / | ||
| + | /tmp | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | * Schritt 3: die Read-Only Snapshot-Volumes mittels '' | ||
| + | |||
| + | <code example> | ||
| + | ls -1 -d /.backup/* | xargs btrfs send | ssh -C nutzerXX@192.168.1.2XX "cat > notebookXX.btrfs" | ||
| + | </ | ||
| + | |||
| + | * Hiermit ist die Sicherung abgeschlossen. Die Backup-Snapshots können nun wieder entfernt werden< | ||
| + | btrfs subvol delete / | ||
| + | btrfs subvol delete / | ||
| + | btrfs subvol delete / | ||
| + | ... | ||
| + | btrfs subvol delete /.backup | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== System-Verlust simulieren (der spassige Teil) ===== | ||
| + | |||
| + | * System " | ||
| + | rm -rf /usr | ||
| + | </ | ||
| + | |||
| + | * 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 -f / | ||
| + | </ | ||
| + | |||
| + | * Neues Dateisystem unter '' | ||
| + | mount / | ||
| + | </ | ||
| + | |||
| + | * Subvolume für das Zurückspielen der Backups erstellen< | ||
| + | btrfs subvol create / | ||
| + | </ | ||
| + | |||
| + | * BTRFS Dateisysteme von Backup-System via SSH zurückspielen< | ||
| + | ssh nutzerXX@192.168.1.2XX "cat notebookXX.btrfs" | ||
| + | </ | ||
| + | |||
| + | * Neue schreibbare Snapshots aus dem Read-Only Snapshots erstellen. Die Namen der Subvolumes müssen nicht den original Namen entsprechen< | ||
| + | btrfs subvol snap / | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | * Bootloader Grub2 neu installieren< | ||
| + | grub2-install | ||
| + | </ | ||
| + | |||
| + | * Grub2 Konfiguration neu erstellen< | ||
| + | grub2-mkconfig -o / | ||
| + | </ | ||
| + | |||
| + | * chroot verlassen mit '' | ||
| + | * System neu booten, Daumen drücken …<code example> | ||
| + | reboot | ||
| + | </ | ||
| + | |||
| + | * Nach erfolgreichem Boot die Restore-Subvolumes löschen | ||
admin_grundlagen/systemsicherung.1404209401.txt.gz · Zuletzt geändert: 2014/07/10 13:45 (Externe Bearbeitung)
