Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi1:systemsicherung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
lpi1:systemsicherung [2014/06/05 15:29]
127.0.0.1 Externe Bearbeitung
lpi1:systemsicherung [2019/11/09 12:42] (aktuell)
Zeile 3: Zeile 3:
  
 Abschätzen,​ wie viel Platz benötigt wird: Abschätzen,​ wie viel Platz benötigt wird:
-  df -h+  df -hlx tmpfs -x devtmpfs 
 +-> Summe der Daten auf persistenten,​ lokalen Dateisystemen
  
 ===== Vorbereitung Zielsystem ===== ===== Vorbereitung Zielsystem =====
Zeile 14: Zeile 15:
   chown nutzerXX /mnt/backup   chown nutzerXX /mnt/backup
  
 +=== Debian (ab 8) ===
 +Entweder ​
 +  * [[sudo]] einrichten und wie unter Ubuntu beschrieben vorgehen. ​
 +  * einen [[ssh]]-Schlüssel beim Benutzer root hinterlegen
 +oder
 +  * root das Anmelden mit Passwort erlauben ((
 +<file txt /​etc/​ssh/​sshd_config>​
 +PermitRootLogin yes
 +</​file>​
 +))
 ===== Sicherung ===== ===== Sicherung =====
 Diese Schritte werden auf dem zu sichernden System ausgeführt. ​ Diese Schritte werden auf dem zu sichernden System ausgeführt. ​
  
 ==== Sicherung der Partitionierung ==== ==== Sicherung der Partitionierung ====
-Mehr zur Vorgehensweise siehe [[partitionierung]]. Wenn die Wiederherstellung nicht automatisiert erfolgen muss, reicht auch die Ausgabe von ''​parted''​ oder ''​df''​+Mehr zur Vorgehensweise siehe [[partitionierung]]. Wenn die Wiederherstellung nicht automatisiert erfolgen muss, reicht auch die Ausgabe von ''​parted''​
   parted /dev/sda print > sicherung.parted   parted /dev/sda print > sicherung.parted
 +
 +Ubuntu:
 +  scp sicherung.parted nutzer@server:/​mnt/​backup
 +
 +andere Distributionen (bei denen root ein Passwort hat):
   scp sicherung.parted root@server:/​mnt/​backup   scp sicherung.parted root@server:/​mnt/​backup
 (( ((
-alternativ+alternativ ​für MSDOS-Partitionstabellen:​
  
   sfdisk -d /dev/sda > sicherung.sfdisk   sfdisk -d /dev/sda > sicherung.sfdisk
   scp sicherung.sfdisk root@server:/​mnt/​backup   scp sicherung.sfdisk root@server:/​mnt/​backup
 +
 +bei GPT-Partitionstabellen eine Warnung der Entwickler vorweg: //As of March 2014 (version 0.8.10), sgdisk should be  considered ​ beta  software.//
 +  ​
 )) ))
 +
 ==== Sicherung LVM Informationen ==== ==== Sicherung LVM Informationen ====
   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:/​mnt/​backup +  ​
 alternativ mit  alternativ mit 
   vgcfgbackup -f sicherung.vg   vgcfgbackup -f sicherung.vg
 +
 +Ubuntu:
 +  scp sicherung.pvdisplay sicherung.vgdisplay sicherung.lvdisplay nutzer@server:/​mnt/​backup
 +
 +andere Distributionen (bei denen root ein Passwort hat):
 +  scp sicherung.pvdisplay sicherung.vgdisplay sicherung.lvdisplay root@server:/​mnt/​backup
 +
 +
 +==== Sicherung anderer Storage Informationen ====
 +  * [[admin_grundlagen:​raid|Software RAID]]
 +  * drbd
 +  * [[lpi2:​iscsi|iSCSI]]
 +  * ...
  
 ==== Sicherung der Dateisystem-Einstellungen ==== ==== Sicherung der Dateisystem-Einstellungen ====
-=== Welche Dateisysteme ​müssen gesichert werden? === +=== Von welchen Dateisystemen ​müssen ​Einstellungen ​gesichert werden? === 
-  lsblk +  lsblk -f 
-oder +-> alle persistenten,​ lokalen Dateisysteme müssen gesichert werden, mit Ausnahme von loop-Devices 
-  df -h + 
-=== ext3 / ext4 === +== ext3 / ext4 == 
-  tune2fs -l /dev/sdaX > sicherung.tune2fs.sdaX +  tune2fs -l /dev/sdaX > sicherung.ext.sdaX
-  scp sicherung.tune2fs.sdaX root@server:/​mnt/​backup+
 ((''/​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 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 Device ''/​dev/​mapper/​xxx''​ oder ähnlich))
  
-=== xfs === +== xfs == 
-  xfs_admin -l /​dev/​sdaX ​ > sicherung.xfs_admin.sdaX+  xfs_admin -l -u /​dev/​sdaX ​ > sicherung.xfs.sdaX 
 +  xfs_info /​dev/​sdaX ​ >> sicherung.xfs.sdaX 
 +((''/​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 Device ''/​dev/​mapper/​xxx''​ oder ähnlich)) 
 + 
 +== vfat == 
 +  blkid /dev/sdaX > sicherung.vfat.sdaX 
 + 
 +== swap == 
 +  blkid /dev/sdaX > sicherung.swap.sdaX 
 + 
 +=== Einstellungs-Dateien auf Zielsystem kopieren === 
 +Ubuntu: 
 +  scp sicherung.* nutzer@server:/​mnt/​backup 
 + 
 +andere Distributionen (bei denen root ein Passwort hat): 
 +  scp sicherung.* root@server:/​mnt/​backup
 ((''/​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 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 Device ''/​dev/​mapper/​xxx''​ oder ähnlich))
  
 ==== Sicherung der Dateien ==== ==== Sicherung der Dateien ====
 === Einhängen der Dateisysteme unter /mnt/system === === Einhängen der Dateisysteme unter /mnt/system ===
 +In der Ausgabe von ''​df -hT -x tmpfs -x devtmpfs''​ die Mountpoints aller persistenten,​ lokalen Dateisysteme ​ (mit Ausnahme von loop-Devices) identifizieren und unterhalb von ''/​mnt/​system''​ bind-mounten:​
  
   mkdir /mnt/system   mkdir /mnt/system
   mount --bind / /mnt/system   mount --bind / /mnt/system
   mount --bind /boot /​mnt/​system/​boot   mount --bind /boot /​mnt/​system/​boot
-evtlweitere Verzeichnisse/​Partitionen entsprechend der Ausgabe von ''​df''​ bzw''​lsblk''​+  ...
  
-((ab RedHat 6 und openSuSE 13.1 kann man auf diesen Schritt verzichten, und statt dessen bei ''​rsync''​ die Option ''​-x''​ bzw. ''​--one-file-system''​ nutzen und die entsprechenden Mountpoints einzeln angeben ))+((ab RedHat 6openSuSE 13.1, Debian 8 und Ubuntu 16.04 könnte ​man auf diesen Schritt verzichten, und statt dessen bei ''​rsync''​ die Option ''​-x''​ bzw. ''​--one-file-system''​ nutzen und die entsprechenden Mountpoints einzeln angeben )) 
 + 
 +=== mit rsync über ssh Dateien kopieren === 
 + 
 +== Debian (ab 8) == 
 +Wie oben unter "​[[#​debian_ab_8|Vorbereitung Zielsystem]]"​ beschrieben kann man entweder so vorgehen 
 +  * wie bei anderen Distributionen,​ bei denen root ein Passwort hat 
 +oder 
 +  * wie bei Ubuntu
  
-=== mit rsync über ssh === 
-  rsync -a --numeric-ids --del -e ssh /​mnt/​system/​ root@server:/​mnt/​backup/​dateien 
-(( mehr zu [[rsync]] )) 
-(( mehr zu [[ssh]] )) 
-(( 
-Zweiter Aufruf, um zu sehen ob alle Dateien kopiert wurden: 
-  rsync -anv --numeric-ids --del -e ssh /​mnt/​system/​ root@server:/​mnt/​backup/​dateien 
-)) 
 == Ubuntu == == Ubuntu ==
-Unter **Ubuntu** gibt es defaultmäßig kein 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 rsync via sudo ohne Passwort erlaubt:+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:
  
-  sudo visudo+  sudo visudo ​-f /​etc/​sudoers.d/​backup
  
 und diese Zeile ergänzen: und diese Zeile ergänzen:
  
-  ​%sudo  ALL=(ALL) NOPASSWD: ALL+<file txt /​etc/​sudoers.d/​backup>​ 
 +%sudo  ALL=(ALL) NOPASSWD: ALL 
 +</​file>​ (( oder 
 +<file txt /​etc/​sudoers.d/​backup>​ 
 +%sudo  ALL=(ALL) NOPASSWD: /​usr/​bin/​rsync 
 +</​file>​ 
 +))
  
 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 ---numeric-ids --del -e ssh --rsync-path="​sudo rsync" /​mnt/​system/​ user@zielsystem:/​mnt/​backup/​dateien+  rsync -aSH --xattrs --acls ​--numeric-ids --del --rsync-path="​sudo rsync" /​mnt/​system/​ user@zielsystem:/​mnt/​backup/​dateien
  
-== RedHat ​CentOS ​== +== SuSE BTRFS == 
-RedHat'​s Versionen von ''​[[tar]]''​ und ''​[[rsync]]''​ können mit ACLs und erweiterten Dateiattributen umgehen. Dazu die Optionen ''​--xattrs''​ ( ''​tar''​ ) oder ''​--xattrs --acls''​ ( ''​rsync''​ ) angeben.+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.  
 + 
 +== andere Distributionen (bei denen root ein Passwort hat) == 
 +  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 [[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 ===
-//die gezeigten Verfahren ​sind nicht genau//+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,​ dabei die [[dateirechte#​beispielungewollter_eigentuemerwechsel_bei_backup_und_restore|Unterschiede in den Benutzer IDs]] auf Original- und Backupsystem beachten 
 +  * Sind die Dateien vollständig angekommen? ​
  
-(( //Das funktioniert nicht, ​und ich verstehe nicht warum://  --- //[[|Ingo Wichmann]] 2013/12/19 16:21// +== Sind alle Dateien angekommen? == 
-Datenmenge auf dem Quellsystem+  * einfach mal mit ''​ls''​ stichprobenartig nachschauen 
-  ​tar c --one-file-system ​/ /home /boot 2>/dev/null | dd of=/dev/null +  * mit Hilfe von ''​find'' ​und ''​wc''​ Dateien zählen 
-Datenmenge ​auf dem Zielsystem: + 
-  ​tar c /mnt/backup/dateien 2>/dev/null | dd of=/​dev/​null +== Sind die Berechtigungen korrekt? == 
-))+  * einfach mal mit ''​ls -l''​ stichprobenartig nachschauen 
 + 
 +== Sind die Dateien vollständig angekommen? == 
 +Einfache Lösung 
 +  * den selben rsync-Aufruf noch mal ergänzt durch die Schalter ''​-nv''​ 
 +  * 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:​ 
 + 
 +Auf dem Zielsystem Checksummen für Backup-Dateien erzeugen: 
 +  cd /mnt/backup/​dateien 
 +  find . -xdev -type f -print0 ​ | sort -z | xargs -0 cksum > /run/cksum.backup 
 +  find . -xdev -print0 ​sort -z | xargs -0 getfacl -P -n > /run/getfacl.backup 
 + 
 +Auf dem Original-System Checksummen für Dateien erzeugen(hier müssen neben ''​.''​ und ''​./​boot''​ möglicherweise weitere Dateisysteme angegeben werden) 
 +  ​cd /​mnt/​system 
 +  find . ./​boot ​-xdev -type f -print0 | sort -z | xargs -0 cksum > /run/cksum.orig 
 +  find . ./boot -xdev -print0 | sort -z | xargs -0 getfacl -P -n > /run/getfacl.orig 
 + 
 +''​/run/*.orig'' ​auf das Zielsystem ​kopieren 
 +  ​scp /run/*.orig root@server:​ 
 + 
 +Checksummen vergleichen 
 +  diff ~/cksum.orig ​/run/cksum.backup
  
-Anzahl Dateien auf dem Quellsystem:​ +Berechtigungen vergleichen 
-  ​find / /boot /home -xdev 2>/​dev/​null | sort | uniq | wc -l +  ​diff ~/getfacl.orig ​/run/getfacl.backup
-Anzahl Dateien auf dem Zielsystem:​ +
-  find /mnt/backup/dateien 2>/​dev/​null | wc -l+
  
-==== Sicherung der ACL-Dateirechte ​====+=== Sicherung der ACL-Dateirechte ===
 nur nötig, wenn ''​tar''​ oder ''​rsync''​ das nicht kann nur nötig, wenn ''​tar''​ oder ''​rsync''​ das nicht kann
   cd /mnt/system   cd /mnt/system
Zeile 107: Zeile 193:
   scp sicherung.acl root@server:/​mnt/​backup   scp sicherung.acl root@server:/​mnt/​backup
  
-==== Sicherung der erweiterten Dateiattribute ( z.B. SELINUX, capabilities ) ==== +=== Sicherung der erweiterten Dateiattribute ( z.B. SELINUX, capabilities ) === 
-nur nötig, wenn ''​tar'' ​oder ''​rsync'' ​das nicht kann+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
Zeile 115: Zeile 201:
 ====== Löschen des Systems ====== ====== Löschen des Systems ======
 === schnell === === schnell ===
 +  wipefs -af /dev/sda
 +
 +Oder bei SSDs:
 +  blkdiscard /dev/sda
 +
 +=== sicher ===
   dd if=/​dev/​zero of=/dev/sda   dd if=/​dev/​zero of=/dev/sda
  
 ... 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=/​dev/​urandom of=/dev/sda   dd if=/​dev/​urandom of=/dev/sda
  
-  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/​efi/​efivars die UEFI-Firmware beschädigt wird und der Rechner nicht mehr booten kann.  
 + 
 +Daher vorsichtig sein mit  
 +  rm -rf /… 
 + 
 +Mehr dazu bei [[https://​www.heise.de/​newsticker/​meldung/​Linux-rm-rf-soll-keine-UEFI-Systeme-mehr-kaputt-machen-3113433.html|heise]] und im entsprechenden [[https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​torvalds/​linux.git/​commit/?​id=0389075ecfb6231818de9b0225d3a5a21a661171|Kernel-Patch]] 
  
 ====== Wiederherstellung des Systems ====== ====== Wiederherstellung des Systems ======
-Rettungssystem ( z.B. knoppixpmagic ​) booten+Rettungssystem ( z.B. sysrcdknoppix ​) booten
  
 ===== Schritte im Rettungs-System ===== ===== Schritte im Rettungs-System =====
Zeile 131: Zeile 236:
  
 ==== Wiederherstellung LVM ==== ==== Wiederherstellung LVM ====
-Partitionierung anhand der Informationen aus der gesicherten Datei ''​sicherung.pvdisplay'',​ ''​sicherung.vgdisplay'',​ ''​sicherung.lvdisplay''​ und/oder gemäß ''​etc/​fstab''​ aus dem Backup wie in [[lvm]] beschrieben anlegen+Partitionierung anhand der Informationen aus der gesicherten Datei ''​sicherung.pvdisplay'',​ ''​sicherung.vgdisplay'',​ ''​sicherung.lvdisplay''​ und/oder gemäß ''​etc/​fstab''​ aus dem Backup wie in [[lvm]] beschrieben anlegen ​ (( 
 +IDs der Physical Volumes herausfinden:​ 
 +  less ~/​sicherung.vg 
 +Physical Volumes anlegen: 
 +  pvcreate -ff --zero y --restorefile ~/​sicherung.vg --uuid I6oYXy-pdNv-gXH3-Prf8-azlo-zwQr-Srm8wX /dev/sdaX 
 +  ... 
 +Name der Volume Group herausfinden:​ 
 +  less ~/​sicherung.vg 
 +Volume Group und Logical Volumes wiederherstellen:​ 
 +  vgcfgrestore -f ~/​sicherung.vg centos_notebook17 
 +)) 
 +In Knoppix muss dazu zuerst lvm2 gestartet werden: 
 +  service lvm2 start
  
 ==== Dateisysteme anlegen==== ==== Dateisysteme anlegen====
-Dateisysteme mit ''​mkfs.ext3'' ​o.ä. gemäß ''​etc/​fstab''​ aus dem Backup anlegen ​+Dateisysteme mit ''​mkfs.*''​ gemäß ''​etc/​fstab''​ aus dem Backup anlegen. Dabei wenn nötig die Dateisystem-Einstellungen aus der Sicherung berücksichtigen (UUID, ...)
 ((''/​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 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 Device ''/​dev/​mapper/​xxx''​ oder ähnlich))
-  mkfs.ext3 /dev/sdaX+  mkfs.ext4 -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ​/dev/sdaX 
 +((''​xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''​ steht hier für die UUID aus der Sicherung)) 
 + 
 +oder 
 +  mkfs.xfs -m uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX 
 +((''​xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''​ steht hier für die UUID aus der Sicherung)) 
 + 
 +oder 
 +  mkfs.vfat -i xxxxxxxx /dev/sdaX 
 +((Eine UUID die von ''​blkid''​ im Format ''​%%UUID="​066B-5CE0"​%%''​ ausgegeben wurde muss ''​mkfs.vfat''​ mit ''​066B5CE0''​ (also ohne Minus) übergeben werden))
 ... ...
  
 ==== Swap anlegen ==== ==== Swap anlegen ====
 ((''/​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 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 Device ''/​dev/​mapper/​xxx''​ oder ähnlich))
-  mkswap /dev/sdaX+  mkswap ​-U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ​/dev/sdaX 
  
 ==== Mounten der Zielpartitionen ==== ==== Mounten der Zielpartitionen ====
-Mountpoints mit ''​mkdir''​ 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 ​-p''​ 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 /tmp/system+  mkdir -p /tmp/system
   mount /dev/sdaX /tmp/system   mount /dev/sdaX /tmp/system
  
-  mkdir /​tmp/​system/​boot+  mkdir -p /​tmp/​system/​boot
   mount /dev/sdaY /​tmp/​system/​boot   mount /dev/sdaY /​tmp/​system/​boot
 ... ...
  
-==== Wiederherstellen mit rsync über ssh ====+==== Wiederherstellen ​der Dateien ​mit rsync über ssh ====
 ((mehr siehe [[rsync]])) ((mehr siehe [[rsync]]))
-  rsync ---numeric-ids --del -e ssh root@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​+  rsync -aSH --acls --xattrs  ​--numeric-ids --del -e ssh root@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​
  
 evtl. ACLs und erweiterte Dateisystemattribute berücksichtigen evtl. ACLs und erweiterte Dateisystemattribute berücksichtigen
 +(( Notlösung: Berechtigungen (teilweise) wiederherstellen,​ wenn sie nicht richtig gesichert wurden 
 +  rpm -qa | xargs rpm --setperms 
 +Todo: debian? 
 +))
 === Ubuntu === === Ubuntu ===
-  rsync ---numeric-ids --del -e ssh --rsync-path="​sudo rsync" user@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​+  rsync -aSH --acls --xattrs  ​--numeric-ids --del -e ssh --rsync-path="​sudo rsync" user@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​
  
-==== Wiederherstellen der ACL-Dateirechte ​==== +=== Wiederherstellen der ACL-Dateirechte === 
-nur nötig, wenn ''​tar''​ das nicht kann+nur nötig, wenn ''​rsync''​ bzw. ''​tar''​ das nicht kann
   mount -o remount,acl /​tmp/​system/​   mount -o remount,acl /​tmp/​system/​
   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 ''​tar''​ das nicht kann+nur nötig, wenn ''​rsync''​ bzw. ''​tar''​ das nicht kann
 ( nicht erfolgreich getestet ... ) ( nicht erfolgreich getestet ... )
   mount -o remount,​user_xattrs /tmp/system   mount -o remount,​user_xattrs /tmp/system
Zeile 177: Zeile 307:
   touch /​tmp/​system/​.autorelabel   touch /​tmp/​system/​.autorelabel
  
-==== Wiederherstellung der Dateisystem-Einstellungen ​==== +===== Bootfähig machen ​=====
-Mir ist kein automatischer Weg bekannt ... daher: +
-tune2fs .... ( UUID, Dateisystem-Label,​ Mountoptionen,​ ... ) +
-  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  /​tmp/​system/​dev   mount --rbind /dev  /​tmp/​system/​dev
-  mount --bind /proc /​tmp/​system/​proc +  mount --rbind /proc /​tmp/​system/​proc 
-  mount --bind /sys  /​tmp/​system/​sys+  mount --rbind /sys  /​tmp/​system/​sys
  
 (( 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! ​ (( 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! ​
Zeile 197: Zeile 321:
 )) ))
  
-==== Schritte im chroot Zielsystem ​==== +==== UEFI Einträge wiederherstellen ​==== 
-  ​chroot /tmp/system+(nur bei UEFI-Systemen)
  
-=== System wieder startfähig ​machen === +=== efivars schreibbar ​machen === 
-== grub ==+  mount -o rw,remount /​tmp/​system/​sys/​firmware/​efi/​efivars 
 +oder (falls ''/​tmp/​system/​sys/​firmware/​efi/​efivars''​ kein mountpoint ist) 
 +  mount -t efivarfs efivarfs /​tmp/​system/​sys/​firmware/​efi/​efivars 
 + 
 +=== Schritte im chroot Zielsystem === 
 +  chroot /tmp/system /bin/bash 
 + 
 +=== EFI Variablen schreiben === 
 +  efi_label='​Name der Distribution'​ 
 +  distro='​DISTRIBUTION'​ 
 +  efibootmgr --create --disk "​$BOOT_DEVICE"​ --part "​$esp_partition_id"​ --label 'UEFI OS' --loader '​\EFI\BOOT\BOOTX64.EFI'​ 
 +  efibootmgr --create --disk "​$BOOT_DEVICE"​ --part "​$esp_partition_id"​ --label "​$efi_label"​ --loader '​\EFI\$distro\SHIMX64.EFI'​ 
 + 
 +=== Grub2 konfigurieren === 
 + 
 +In CentOS 8 BLSCFG abschalten:​ 
 +<file txt /​etc/​default/​grub
 +… 
 +GRUB_ENABLE_BLSCFG=false 
 +… 
 +</​file>​ 
 +TODO: Lösung mit BLSCFG finden 
 + 
 +== CentOS == 
 +  grub2-mkconfig -o /​boot/​efi/​EFI/​$distro/​grub.cfg 
 + 
 +== Debian, Ubuntu == 
 +  dpkg-reconfigure grub-efi-amd64 
 +oder 
 +  update-grub2 
 + 
 +=== EFI Variablen prüfen === 
 +  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. 
 + 
 +==== Bootloader in mbr schreiben ==== 
 +(nur bei BIOS-Systemen) 
 + 
 +=== 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 7 == 
 +  grub2-install /dev/sda 
 +  grub2-mkconfig > /​boot/​grub2/​grub.cfg 
 + 
 +== andere == 
 +  grub2-install /dev/sda 
 +  grub-mkconfig > /​boot/​grub/​grub.cfg 
 + 
 +=== grub1 / grub legacy wiederherstellen ===
 Grub in den MBR schreiben: Grub in den MBR schreiben:
   grub   grub
Zeile 211: Zeile 392:
   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 ''​Strg+d''​) verlassen und 
-  update-grub2 +  ​reboot
- +
-== openSuSE 12.2 == +
-  grub2-install /dev/sda +
-  ​update-bootloader --refresh+
  
 ===== Anpassungen bei geänderter Hardware oder geänderten Partitionen ===== ===== Anpassungen bei geänderter Hardware oder geänderten Partitionen =====
 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. Statt ''​fdisk''​ also ''​gdisk''​ oder ''​parted''​ benutzen.
 +
 +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>​BIOS boot partition|BIOS Boot Partition]] z.B. von Block 34 bis Block 2047 vor Veränderungen schützen. ​
 +
 +((aus dem [[https://​wiki.archlinux.org/​index.php/​GUID_Partition_Table#​Convert_from_MBR_to_GPT|archlinux-Wiki]]:​ //Keep in mind that if your Boot-Manager is GRUB, it needs a BIOS Boot Partition. If your MBR Partitioning Layout isn't too old, there is a good chance that the first partition starts at sector 2048 for alignment reasons. That means at the beginning will be 1007 KiB of empty space where this bios-boot partition can be created. To do this, first do the mbr->gpt conversion with gdisk as described above. Afterwards, create a new partition with gdisk and manually specify its position to be sectors 34 - 2047, and set the EF02 partition type.// ​
 +))
 +((
 +aus der [[http://​www.gnu.org/​software/​grub/​manual/​html_node/​BIOS-installation.html|GRUB Doku]]: //When creating a BIOS Boot Partition on a GPT system, you should make sure that it is at least 31 KiB in size. (GPT-formatted disks are not usually particularly small, so we recommend that you make it larger than the bare minimum, such as 1 MiB, to allow plenty of room for growth.) You must also make sure that it has the proper partition type. Using GNU Parted, you can set this using a command such as the following://​
 +
 +  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: ''/​boot/​efi/​EFI/​debian/​grub.cfg''​
 ==== Bootloader grub ==== ==== Bootloader grub ====
 ''/​boot/​grub/​menu.lst''​ : ''/​boot/​grub/​menu.lst''​ :
Zeile 232: Zeile 424:
   * Kernel-Parameter zum root-Dateisystem ( ''​root= ...''​ )   * Kernel-Parameter zum root-Dateisystem ( ''​root= ...''​ )
  
 +==== Bootloader grub2 ====
 +''/​boot/​grub/​grub.cfg''​ : (sollte automatisch über ''​update-grub2''​ erstellt werden)
 +
 +Neue Partitionsnummern beachten, wichtig sind z.B. 
 +  * die Einstellungen zur Boot-Partition ( ''​root''​ ) in Grub-Terminologie
 +  * die Lage des Kernels ( ''/​boot/​vmlinuz*''​ oder ''/​vmlinuz*''​ )
 +  * Kernel-Parameter zum root-Dateisystem ( ''​root= ...''​ )
 +
 +==== 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 ''/​boot/​efi'',​ für den Linux Bootloader Grub allein reicht eine Größe von wenigen MByte. Wenn auch der Linux Kernel und/oder Windows auch drauf soll deutlich größer (500MB?​). ​
 +  * GRUB2:
 +    * Debian: die Pakete ''​grub-efi'', ​ ''​grub-efi-amd64-bin''​ und ''​efibootmgr''​ installieren. Dann ''​grub-install''​ + ''​update-grub''​ ausführen. ​
 +    * Ubuntu: wie bei Debian, zusätzlich optional noch shim bzw. shim-signed
 +    * CentOS: Pakete ''​grub2-efi'',​ ''​grub2-efi-x64-modules''​ und ''​efibootmgr''​ installieren. Dann ''​grub-install''​ + ''​update-grub''​
 +    * SuSE: ''​grub2-x86_64-efi''​ und ''​efibootmgr''​ installieren. Dann ''​grub-install''​ + ''​update-bootloader''​ ausführen.
 ==== /etc/fstab ==== ==== /etc/fstab ====
 ''/​etc/​fstab''​ : ''/​etc/​fstab''​ :
Zeile 242: Zeile 452:
 ==== Kernel-Module und initrd ==== ==== Kernel-Module und initrd ====
 Je nach Änderung muß eine neue [[admin_grundlagen:​initrd|initrd]] erzeugt werden und/oder die bei Booten geladenen Module müssen überarbeitet werden Je nach Änderung muß eine neue [[admin_grundlagen:​initrd|initrd]] erzeugt werden und/oder die bei Booten geladenen Module müssen überarbeitet werden
 +
 +=== dracut (CentOS 8) ===
 +in der chroot-Umgebung
 +  dracut --hostonly --persistent-policy '​by-uuid'​ --force /​boot/​initramfs-4.18.0-80.11.2.el8_0.x86_64.img 4.18.0-80.11.2.el8_0.x86_64
 +
 +=== dracut (CentOS 7 / openSuSE 42.1) ===
 +in der chroot-Umgebung
 +  dracut --force /​boot/​initrd-4.4.87-18.29-default 4.4.87-18.29-default
 +
 === CentOS 6 === === CentOS 6 ===
 in der chroot-Umgebung in der chroot-Umgebung
Zeile 250: Zeile 469:
  
 ====== Alternative Sicherungswege ====== ====== Alternative Sicherungswege ======
 +==== tar über ssh ====
 +=== Sicherung ===
 +  tar cz --numeric-owner --sparse --xattrs --acls --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​
 +
 +=== Wiederherstellen ===
 +  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.tgz'​ | tar xz --numeric-owner --sparse --xattrs --acls --xattrs-include='​*'​ --directory /tmp/system
 +
 +=== 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 > /​mnt/​backup/​sicherung.cpio.bz2'​
 +
 +=== Wiederherstellen === 
 +  cd /tmp/system
 +  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.cpio.bz2'​ | bunzip2 | cpio -dumin --sparse ​
 +
 +==== rsync ====
 +Auf lokale Platte:
 +  rsync -a --hard-links --sparse --acls --xattrs --numeric-ids --del / /​mnt/​usbdisk/​root/ ​
 +
 +Übers Netz via ssh:
 +  rsync -a --hard-links --sparse --acls --xattrs --numeric-ids --del / server:/​mnt/​backup/​dateien
 +
 +Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// ))
 +  rsync -a --hard-links --sparse --acls --xattrs --numeric-ids --del / server::/​backup/​dateien/​
 +
 ==== Platzsparende Hardlink Backups mit rsnapshot ==== ==== Platzsparende Hardlink Backups mit rsnapshot ====
  
Zeile 275: Zeile 526:
  
   rsnapshot -t daily   rsnapshot -t daily
- 
-==== Sicherung mit tar über ssh ==== 
-  tar cz --numeric-owner --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​ 
- 
-Fedora 7, Centos 5: 
-  tar cz --numeric-owner --xattrs --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​ 
- 
-=== Dokumentation === 
-  * [[tar|Übersicht tar]] 
-  * man tar 
- 
-=== Sicherung mit tar über ssh und anschließendem entpacken === 
- 
-  cd /​pfad/​zur/​quelle && tar -cpP --atime-preserve -f - . | ssh user@server "( cd /​pfad/​zum/​ziel && tar -xpvP --atime-preserve -f - )" 
- 
-==== 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 > /​mnt/​backup/​sicherung.cpio.bz2'​ 
- 
-==== Wiederherstellen mit tar über ssh ==== 
-  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.tgz'​ | tar xz --numeric-owner --directory /tmp/system 
- 
-==== Wiederherstellen mit cpio über ssh ====  
-  cd /tmp/system 
-  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.cpio.bz2'​ | bunzip2 | cpio -dumin 
- 
-==== rsync ==== 
-Auf lokale Platte: 
-  rsync -ax --numeric-ids --del / /​mnt/​usbdisk/​root/ ​ 
- 
-Übers Netz via ssh: 
-  rsync -ax --numeric-ids --del -e ssh / server:/​mnt/​backup/​dateien 
- 
-Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// )) 
-  rsync -ax --numeric-ids --del / server::/​backup/​dateien/​ 
  
 ===== Problem: udev ===== ===== Problem: udev =====
-Auf modernen Linux-Installationen wird wegen [[udev]] das Verzeichnis ''/​dev''​ von einem temporären Dateisystem überdeckt. Linux benötigt ​ diese überdeckten Dateien aber beim Booten. ​+Seit Kernel 2.6 und der Einführung von [[udev]] ​haben Linux Distributionen ​das Verzeichnis ''/​dev''​ von einem temporären Dateisystem überdeckt. Linux benötigt ​ diese überdeckten Dateien aber beim Booten. Neuere Distributionen (RHEL / CentOS 6, ...) tun das nicht mehr.
  
 Lösungswege:​ Lösungswege:​
lpi1/systemsicherung.1401982165.txt.gz · Zuletzt geändert: 2014/07/01 10:10 (Externe Bearbeitung)