Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste Überarbeitung Beide Seiten, nächste Überarbeitung | ||
admin_grundlagen:systemsicherung [2023/11/09 17:44] patryk_seiler [UEFI] |
admin_grundlagen:systemsicherung [2024/02/23 17:08] ingo_wichmann [UEFI] |
||
---|---|---|---|
Zeile 33: | Zeile 33: | ||
==== Sicherung der Partitionierung ==== | ==== Sicherung der Partitionierung ==== | ||
- | Mehr zur Vorgehensweise siehe [[partitionierung]]. Wenn die Wiederherstellung nicht automatisiert erfolgen muss, reicht auch die Ausgabe von ''parted'' | + | 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,size,type,uuid /dev/sda > sicherung.fdisk | fdisk -l -o device,size,type,uuid /dev/sda > sicherung.fdisk | ||
oder | oder | ||
parted /dev/sda print > sicherung.parted | parted /dev/sda print > sicherung.parted | ||
- | Ubuntu: | + | Mehr zur Vorgehensweise siehe [[Partitionierung]]. )) |
- | scp sicherung.parted nutzer@server:/mnt/backup | + | |
- | + | ||
- | andere Distributionen (bei denen root ein Passwort hat): | + | |
- | scp sicherung.parted root@server:/mnt/backup | + | |
- | (( | + | |
- | alternativ für MSDOS-Partitionstabellen: | + | |
- | + | ||
- | sfdisk -d /dev/sda > sicherung.sfdisk | + | |
- | scp sicherung.sfdisk root@server:/mnt/backup | + | |
- | + | ||
- | bei GPT-Partitionstabellen eine inzwischen veraltete Warnung der Entwickler vorweg: //As of March 2014 (version 0.8.10), sgdisk should be considered beta software.// | + | |
- | )) | + | |
==== Sicherung LVM Informationen ==== | ==== Sicherung LVM Informationen ==== | ||
Zeile 118: | Zeile 110: | ||
== Debian (ab 8) == | == Debian (ab 8) == | ||
Wie oben unter "[[#debian_ab_8|Vorbereitung Zielsystem]]" beschrieben kann man entweder so vorgehen | Wie oben unter "[[#debian_ab_8|Vorbereitung Zielsystem]]" beschrieben kann man entweder so vorgehen | ||
- | * wie bei anderen Distributionen, bei denen root ein Passwort hat | + | * wie bei [[#andere_distributionen_bei_denen_root_ein_passwort_hat|anderen Distributionen, bei denen root ein Passwort hat]] |
oder | oder | ||
* wie bei Ubuntu | * wie bei Ubuntu | ||
Zeile 148: | Zeile 140: | ||
== andere Distributionen (bei denen root ein Passwort hat) == | == andere Distributionen (bei denen root ein Passwort hat) == | ||
rsync -aSH --acls --xattrs --numeric-ids --del /mnt/system/ root@server:/mnt/backup/dateien | rsync -aSH --acls --xattrs --numeric-ids --del /mnt/system/ root@server:/mnt/backup/dateien | ||
- | (( mehr zu [[rsync]], u.a. wie man hier ''rsync'' auch ohne root-Rechte benutzen kann )) | + | (( mehr zu [[rsync]], u.a. wie man hier ''rsync'' auch ohne root-Rechte benutzen kann )) (( mehr zu [[ssh]] )) (( wenn man ein Art Fortschrittsbalken haben will: ''progress'' installieren und ''progress -wm'' ausführen während rsync läuft. )) |
- | (( mehr zu [[ssh]] )) | + | |
- | (( wenn man ein Art Fortschrittsbalken haben will: ''progress'' installieren und ''progress -wm'' ausführen während rsync läuft. )) | + | |
- | + | ||
- | == erweiterte Attribute und ACLs mit tar und rsync == | + | |
- | RedHat's Versionen von ''[[tar]]'' und ''[[rsync]]'' können mit ACLs und erweiterten Dateiattributen umgehen, bei Debian ab Version 8. Dazu die Optionen ''--xattrs'' ( ''tar'' ) oder ''--xattrs --acls'' ( ''rsync'' ) angeben. | + | |
=== Plausibilitätsprüfung === | === Plausibilitätsprüfung === | ||
Zeile 173: | Zeile 160: | ||
* Größenvergleich mit ''du -sh'' -> Achtung: die Größen sind nie exakt gleich, die Größenordnung pro Dateisystem sollte passen. | * Größenvergleich mit ''du -sh'' -> Achtung: die Größen sind nie exakt gleich, die Größenordnung pro Dateisystem sollte passen. | ||
- | Optional, für Freude der Unix-Kommandozeile: | + | ++++ Optionale, genauere Prüfung für Freude der Unix-Kommandozeile | |
Auf dem Zielsystem Checksummen für Backup-Dateien erzeugen: | Auf dem Zielsystem Checksummen für Backup-Dateien erzeugen: | ||
Zeile 193: | Zeile 180: | ||
Berechtigungen vergleichen | Berechtigungen vergleichen | ||
diff ~/getfacl.orig /run/getfacl.backup | diff ~/getfacl.orig /run/getfacl.backup | ||
+ | ++++ | ||
+ | ++++ ACLs und erweiterte Attribute | | ||
=== Sicherung der ACL-Dateirechte === | === Sicherung der ACL-Dateirechte === | ||
- | nur nötig, wenn ''tar'' oder ''rsync'' das nicht kann | + | aktuelle Versionen von ''tar'' und ''rsync'' erledigen das mit, bei älteren Systemen: |
cd /mnt/system | cd /mnt/system | ||
getfacl --skip-base -P -n -R . > sicherung.acl | getfacl --skip-base -P -n -R . > sicherung.acl | ||
Zeile 205: | Zeile 193: | ||
getfattr -Rh -m . -d . > sicherung.attr | getfattr -Rh -m . -d . > sicherung.attr | ||
scp sicherung.attr root@server:/mnt/backup | scp sicherung.attr root@server:/mnt/backup | ||
+ | ++++ | ||
====== Löschen des Systems ====== | ====== Löschen des Systems ====== | ||
Zeile 244: | Zeile 233: | ||
====== Wiederherstellung des Systems ====== | ====== Wiederherstellung des Systems ====== | ||
- | Rettungssystem ( z.B. sysrcd, knoppix ) booten | + | Rettungssystem booten (im Linuxhotel-Netz: PXE-Boot und ''debian11live'' eingeben) |
===== Schritte im Rettungs-System ===== | ===== Schritte im Rettungs-System ===== | ||
==== Wiederherstellung der Partitionierung ==== | ==== Wiederherstellung der Partitionierung ==== | ||
- | Partitionierung anhand der Informationen aus der gesicherten Datei ''sicherung.parted'' und/oder gemäß ''etc/fstab'' aus dem Backup wie in [[Partitionierung]] beschrieben anlegen | + | Partitionstabelle wiederherstellen: |
+ | sfdisk /dev/sda < sicherung.sfdisk | ||
- | Bitte Typ der Partitionstabelle (''gpt'' oder ''msdos'') beachten. | + | (( Alternativ: Partitionierung manuell anhand der Informationen aus der gesicherten Datei ''sicherung.parted'' und/oder gemäß ''etc/fstab'' aus dem Backup wie in [[Partitionierung]] beschrieben anlegen |
+ | |||
+ | Typ der Partitionstabelle (''gpt'' oder ''msdos'') beachten. )) | ||
==== Wiederherstellung LVM ==== | ==== Wiederherstellung LVM ==== | ||
In Knoppix muss dazu zuerst lvm2 gestartet werden: | In Knoppix muss dazu zuerst lvm2 gestartet werden: | ||
Zeile 256: | Zeile 248: | ||
=== mit vgcfgrestore === | === mit vgcfgrestore === | ||
IDs der Physical Volumes herausfinden: | IDs der Physical Volumes herausfinden: | ||
- | less ~/sicherung.vg | + | less sicherung.vg |
Physical Volumes anlegen: | Physical Volumes anlegen: | ||
pvcreate -ff --zero y --restorefile ~/sicherung.vg --uuid xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx /dev/sdaX | pvcreate -ff --zero y --restorefile ~/sicherung.vg --uuid xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx /dev/sdaX | ||
... | ... | ||
Name der Volume Group herausfinden: | Name der Volume Group herausfinden: | ||
- | less ~/sicherung.vg | + | less sicherung.vg |
Volume Group und Logical Volumes wiederherstellen: | Volume Group und Logical Volumes wiederherstellen: | ||
vgcfgrestore -f ~/sicherung.vg centos_notebook17 | vgcfgrestore -f ~/sicherung.vg centos_notebook17 | ||
Zeile 291: | Zeile 283: | ||
==== Mounten der Zielpartitionen ==== | ==== Mounten der Zielpartitionen ==== | ||
- | In ''/mnt/backup/dateien/etc/fstab'' aufgeführte Mountpoints mit ''mkdir -p'' anlegen und Dateisysteme mit ''mount'' einhängen: (( evtl. mount-optionen ( z.B. acl ) beachten )) | + | In ''/mnt/backup/dateien/etc/fstab'' aufgeführte Mountpoints mit ''mkdir'' anlegen und Dateisysteme mit ''mount'' einhängen: (( evtl. mount-optionen ( z.B. acl ) beachten )) |
((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das root-Device ''/dev/mapper/xxx'' oder ähnlich)) | ((''/dev/sdaX'' ist hier nur ein Beispiel für ein Speichergerät ( Partition, LVM, ...). Liegt das Dateisystem auf einem Logical Volume, dann heißt das root-Device ''/dev/mapper/xxx'' oder ähnlich)) | ||
- | mkdir -p /tmp/system | + | mkdir /tmp/system |
mount /dev/sdaX /tmp/system | mount /dev/sdaX /tmp/system | ||
- | mkdir -p /tmp/system/boot | + | mkdir /tmp/system/boot |
mount /dev/sdaY /tmp/system/boot | mount /dev/sdaY /tmp/system/boot | ||
und/oder | und/oder | ||
- | mkdir -p /tmp/system/boot/efi | + | mkdir /tmp/system/boot/efi |
mount /dev/sdaZ /tmp/system/boot/efi | mount /dev/sdaZ /tmp/system/boot/efi | ||
und möglicherweise weitere: | und möglicherweise weitere: | ||
- | mkdir -p /tmp/system/… | + | mkdir /tmp/system/… |
mount … | mount … | ||
==== Wiederherstellen der Dateien mit rsync über ssh ==== | ==== Wiederherstellen der Dateien mit rsync über ssh ==== | ||
- | ((mehr siehe [[rsync]])) | ||
rsync -aSH --acls --xattrs --numeric-ids --del root@server:/mnt/backup/dateien/ /tmp/system | rsync -aSH --acls --xattrs --numeric-ids --del root@server:/mnt/backup/dateien/ /tmp/system | ||
- | evtl. ACLs und erweiterte Dateisystemattribute berücksichtigen | + | ((mehr siehe [[rsync]])) (( Notlösung: Berechtigungen (teilweise) wiederherstellen, wenn sie nicht richtig gesichert wurden |
- | (( Notlösung: Berechtigungen (teilweise) wiederherstellen, wenn sie nicht richtig gesichert wurden | + | |
rpm -qa | xargs rpm --setperms | rpm -qa | xargs rpm --setperms | ||
Todo: debian? | Todo: debian? | ||
Zeile 317: | Zeile 307: | ||
rsync -aSH --acls --xattrs --numeric-ids --del --rsync-path="sudo rsync" user@server:/mnt/backup/dateien/ /tmp/system | rsync -aSH --acls --xattrs --numeric-ids --del --rsync-path="sudo rsync" user@server:/mnt/backup/dateien/ /tmp/system | ||
+ | ++++ ACLs und erweiterte Attribute | | ||
=== Wiederherstellen der ACL-Dateirechte === | === Wiederherstellen der ACL-Dateirechte === | ||
nur nötig, wenn ''rsync'' bzw. ''tar'' das nicht kann | nur nötig, wenn ''rsync'' bzw. ''tar'' das nicht kann | ||
Zeile 331: | Zeile 322: | ||
oder | oder | ||
touch /tmp/system/.autorelabel | touch /tmp/system/.autorelabel | ||
+ | ++++ | ||
===== Bootfähig machen ===== | ===== Bootfähig machen ===== | ||
==== chroot vorbereiten ==== | ==== chroot vorbereiten ==== | ||
Zeile 337: | Zeile 328: | ||
mount --rbind /proc /tmp/system/proc | mount --rbind /proc /tmp/system/proc | ||
mount --rbind /sys /tmp/system/sys | mount --rbind /sys /tmp/system/sys | ||
- | + | mount --rbind /run /tmp/system/run | |
- | (( nicht alle diese Befehle sind in allen Fällen notwendig! grub braucht hauptsächlich /dev, und das ist, wenn man zuvor beim Sichern mit ''mount --bind'' gearbeitet hat, schon minimal befüllt. Kann man also weglassen, aber wenn grub meckert, sollte man das versuchen! | + | ((/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 ''mount --bind'' 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 ''/etc/mtab'' falsche Informationen enthält. Falls das so ist, kann man sie so ersetzen: | + | === Alternativ mit bind statt rbind === |
- | mv /tmp/system/etc/mtab /tmp/system/etc/mtab.bak | + | |
- | cp -a /proc/mounts /tmp/system/etc/mtab | + | |
- | Nach dem chroot nicht vergessen, die ''/etc/mtab'' wiederherzustellen: | + | |
- | mv /tmp/system/etc/mtab.bak /tmp/system/etc/mtab | + | |
- | )) | + | |
- | + | ||
- | (( | + | |
- | === Alternativ ohne rbind === | + | |
mount --bind /dev /tmp/system/dev | mount --bind /dev /tmp/system/dev | ||
mount --bind /dev/pts /tmp/system/dev/pts | mount --bind /dev/pts /tmp/system/dev/pts | ||
mount --bind /proc /tmp/system/proc | mount --bind /proc /tmp/system/proc | ||
mount --bind /sys /tmp/system/sys | mount --bind /sys /tmp/system/sys | ||
+ | mount --bind /run /tmp/system/run | ||
)) | )) | ||
- | /run ist sinnvoll bei der Verwendung von lvm oder raid | ||
- | mount --bind /run /tmp/system/run | ||
- | | ||
==== UEFI ==== | ==== UEFI ==== | ||
(nur bei UEFI-Systemen) | (nur bei UEFI-Systemen) | ||
Zeile 368: | Zeile 349: | ||
chroot /tmp/system /bin/bash | chroot /tmp/system /bin/bash | ||
- | === grub-efi wiederherstellen === | + | === grub-efi bzw. efivars wiederherstellen === |
Debian: | Debian: | ||
Zeile 377: | Zeile 358: | ||
shim-install | shim-install | ||
- | CentOS8 / Rocky (ab 8): | + | CentOS / Rocky (ab 8): |
''grub-install'' funktioniert nicht, also müssen die EFI-Einträge manuell gesetzt werden | ''grub-install'' funktioniert nicht, also müssen die EFI-Einträge manuell gesetzt werden | ||
efibootmgr -v | efibootmgr -v | ||
- | da wird wahrscheinlich nur noch der PXE-Eintrag sein | + | -> alle alten Einträge löschen: |
+ | efibootmgr -B -b 000f | ||
+ | (( ''000f'' ist hier nur ein Beispiel für einen veralteten Eintrag )) | ||
- | EFI SP merken | + | EFI ESP Partition merken |
- | blkid | + | grub2-probe -t device /boot/efi/EFI/ |
- | gdisk -l /dev/sda | + | |
- | Achtung: Je nach Umgebung, sind efivars gar nicht gemountet oder RO | + | EFI-Eintrag anlegen (-p = ordinale Nummer der ESP Partition) |
- | mount -oremount,rw /sys/firmware/efi/efivars | + | |
- | + | efi_label='Name der Distribution' # z.B. ''CentOS Linux'' oder ''Rocky Linux'' | |
- | EFI-Eintrag machen (-p = ordinale Nummer der ESP) | + | distro='DISTRIBUTION' # ''centos'' oder ''rocky'' |
- | efibootmgr -c -L "CentOS Linux" -l /EFI/centos/shimx64.efi -p 1 | + | boot_device='/dev/sda' # ''/dev/sda'' oder ''/dev/nvme0n1'' |
+ | esp_partition_id=2 | ||
+ | efibootmgr --create --disk "$boot_device" --part "$esp_partition_id" --label "$efi_label" --loader "/EFI/$distro/shimx64.efi" | ||
- | nochmal kontrollieren | ||
- | blkid | ||
- | efibootmgr -v | ||
- | | ||
grub-config neu erzeugen | grub-config neu erzeugen | ||
- | grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg | + | grub2-mkconfig -o /boot/grub2/grub.cfg |
+ | oder | ||
+ | grub2-mkconfig -o /boot/efi/EFI/$distro/grub.cfg | ||
+ | |||
+ | Ab RHEL/CentOS/Rocky 8 werden zusätzlich Einträge für BLS (''/boot/loader/entries/'') benötigt, da grub.cfg keinen direkten Eintrag für Kernel und initrd enthält: | ||
- | Fallen | + | dnf -y reinstall kernel-core |
- | * /etc/default/grub # resume devices und Parameter | + | oder mit grubby von Hand: |
+ | source /etc/default/grub | ||
+ | grubby --add-kernel=/boot/vmlinuz-5.14.0-284.30.1.el9_2.x86_64 --args="$GRUB_CMDLINE_LINUX" --initrd=/boot/initramfs-5.14.0-284.30.1.el9_2.x86_64.img --title="Rocky Linux" | ||
(( | (( | ||
Zeile 439: | Zeile 426: | ||
)) | )) | ||
=== EFI Variablen prüfen === | === EFI Variablen prüfen === | ||
+ | blkid | ||
efibootmgr -v | efibootmgr -v | ||
Zeile 483: | Zeile 471: | ||
===== 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/Restore ist snap kaputt | ||
+ | |||
+ | |||
==== Rebuild Red Hat / Rocky / Alma 8 ==== | ==== Rebuild Red Hat / Rocky / Alma 8 ==== | ||
**[[Rebuild Red Hat 8|komplettes Rebuild Bootmanager UEFI+Rocky/Alma/Red Hat 8]]** | **[[Rebuild Red Hat 8|komplettes Rebuild Bootmanager UEFI+Rocky/Alma/Red Hat 8]]** |