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/01/19 16:39] – [rsync] sven_froebus | 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 |
| + | |||
| + | ==== SSH Zugriff als root ==== | ||
| + | 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 / | ||
| + | |||
| + | * [[sudo]] einrichten, falls noch nicht passiert | ||
| + | * einen [[ssh]]-Schlüssel beim Benutzer root hinterlegen | ||
| + | ++++ | ||
| + | ===== 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 ==== | ||
| + | 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 | ||
| + | |||
| + | Mehr zur Vorgehensweise siehe [[Partitionierung]]. )) | ||
| + | |||
| + | ==== Sicherung LVM Informationen ==== | ||
| + | vgcfgbackup -f sicherung.vg.%s | ||
| + | pvdisplay > sicherung.pvdisplay | ||
| + | vgdisplay > sicherung.vgdisplay | ||
| + | lvdisplay > sicherung.lvdisplay | ||
| + | |||
| + | ==== Sicherung anderer Storage Informationen ==== | ||
| + | * [[admin_grundlagen: | ||
| + | * drbd | ||
| + | * [[lpi2: | ||
| + | * ... | ||
| + | |||
| + | ==== Sicherung der Dateisystem-Einstellungen ==== | ||
| + | === Von welchen Dateisystemen müssen Einstellungen gesichert werden? === | ||
| + | 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 auf Zielsystem kopieren ==== | ||
| + | |||
| + | scp sicherung.* root@server:/ | ||
| - | ===== Vorbereitung ( auf dem zu sichernden System )===== | + | ==== Sicherung der Dateien |
| - | df -h | + | === Einhängen der Dateisysteme unter / |
| mkdir /mnt/system | mkdir /mnt/system | ||
| mount --bind / /mnt/system | mount --bind / /mnt/system | ||
| + | |||
| + | In der Ausgabe von '' | ||
| + | |||
| mount --bind /boot / | mount --bind /boot / | ||
| - | evtl. weitere | + | und/oder |
| + | mount --bind /boot/efi / | ||
| + | und möglicherweise | ||
| + | mount --bind | ||
| - | ==== Sicherung mit rsync über ssh ==== | + | ((ab RedHat 6, openSuSE 13.1, Debian 8 und Ubuntu 16.04 könnte man auf diesen Schritt verzichten, und statt dessen bei '' |
| - | rsync -a --numeric-ids --del -e ssh /mnt/system/ root@server:/ | + | rsync -axzRSHAX |
| + | )) | ||
| - | === Ubuntu | + | === mit rsync über ssh Dateien kopieren |
| - | Unter **Ubuntu** gibt es defaultmäßig kein root Passwort! | + | Auf Quell- und Zielsystem |
| - | 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: | + | |
| - | | + | ++++ 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' | + | Btrfs snapshot subvolumes |
| + | ++++ | ||
| - | ==== Sicherung der ACL-Dateirechte ==== | + | |
| - | nur nötig, wenn '' | + | (( mehr zu [[rsync]], u.a. wie man hier '' |
| - | cd / | + | |
| - | getfacl | + | |
| - | scp sicherung.acl | + | |
| - | ==== Sicherung der erweiterten Dateiattribute ( z.B. SELINUX ) ==== | + | === Plausibilitätsprüfung |
| - | nur nötig, wenn '' | + | Die wichtigsten Fragen sind: |
| - | | + | |
| - | | + | |
| - | | + | |
| + | == Sind alle Dateien angekommen? == | ||
| + | * einfach mal mit '' | ||
| + | * mit Hilfe von '' | ||
| - | ==== Sicherung der Dateisystem-Einstellungen ==== | + | == Sind die Berechtigungen korrekt? |
| - | Beispiel ext3: | + | |
| - | | + | |
| - | scp sicherung.tune2fs.sdaX root@server:/ | + | |
| + | == 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 | | ||
| - | ==== Sicherung der Partitionierung ==== | + | Auf dem Zielsystem Checksummen für Backup-Dateien erzeugen: |
| - | Exakte Vorgehensweise siehe [[partitionierung]], | + | |
| - | | + | find . -xdev -type f -print0 |
| - | | + | |
| + | Auf dem Original-System Checksummen für Dateien erzeugen: (hier müssen neben '' | ||
| + | cd /mnt/system | ||
| + | find . ./boot -xdev -type f -print0 | sort -z | xargs -0 cksum > / | ||
| + | find . ./boot -xdev -print0 | sort -z | xargs -0 getfacl -P -n > / | ||
| - | alternativ | + | ''/ |
| + | scp /run/*.orig root@server: | ||
| + | Checksummen vergleichen | ||
| + | diff ~/ | ||
| - | sfdisk | + | Berechtigungen vergleichen |
| - | scp sicherung.sfdisk | + | diff ~/ |
| + | ++++ | ||
| + | ++++ ACLs und erweiterte Attribute | | ||
| + | === Sicherung der ACL-Dateirechte === | ||
| + | aktuelle Versionen von '' | ||
| + | cd /mnt/system | ||
| + | getfacl --skip-base -P -n -R . > sicherung.acl | ||
| + | scp sicherung.acl root@server:/ | ||
| - | ==== Sicherung | + | === Sicherung |
| - | | + | nur nötig, wenn [[tar]] oder [[rsync]] das nicht kann |
| - | | + | |
| - | lvdisplay | + | |
| - | scp sicherung.pvdisplay sicherung.vgdisplay sicherung.lvdisplay | + | 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, | + | |
| - | + | ||
| - | ===== 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 /run / | ||
| + | )) | ||
| + | |||
| + | ==== UEFI ==== | ||
| + | (nur bei UEFI-Systemen) | ||
| + | |||
| + | === efivars schreibbar machen === | ||
| + | mount -o rw,remount / | ||
| + | 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 | ||
| + | |||
| + | )) | ||
| + | === 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 | ||
| - | (( nicht unbedingt notwendig! grub braucht hauptsächlich | + | == CentOS |
| + | grub2-install | ||
| + | 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 159: | Zeile 479: | ||
| grub-install --recheck --no-floppy hd0 | grub-install --recheck --no-floppy hd0 | ||
| - | == grub2 == | + | |
| - | grub-install /dev/sda | + | ==== reboot |
| + | chroot-Umgebung (z.B. mit '' | ||
| + | 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 173: | 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 ==== | ||
| ''/ | ''/ | ||
| Neue Partitionsnummern, | Neue Partitionsnummern, | ||
| + | ==== /etc/mtab ==== | ||
| + | ''/ | ||
| + | Neue Partitionsnummern, | ||
| + | (( 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 === | ||
| + | in der chroot-Umgebung | ||
| + | mkinitrd --force / | ||
| ==== udev ==== | ==== udev ==== | ||
| Zeile 184: | 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 210: | 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.1326991189.txt.gz · Zuletzt geändert: 2012/01/19 16:39 von sven_froebus
