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

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
lpi1:systemsicherung [2014/07/01 10:10]
ingo_wichmann
lpi1:systemsicherung [2019/02/07 16:26] (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
 (( ((
Zeile 31: Zeile 46:
   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 ===
  
-=== 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
Zeile 81: Zeile 117:
  
 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 -aH --xattrs --acls ​--numeric-ids --del --rsync-path="​sudo rsync" /​mnt/​system/​ user@zielsystem:/​mnt/​backup/​dateien
  
-== RedHat ​CentOS ​== +== Debian == 
-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.+[[#​debian_ab_8|siehe oben]] 
 + 
 +== andere Distributionen (bei denen root ein Passwort hat) == 
 +  rsync -aH --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 176:
   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 184:
 ====== 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
  
 ====== 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 209:
  
 ==== 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 ''​066B-5CE0''​ (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 -aH --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
- 
-=== Ubuntu === 
-  rsync -a --numeric-ids --del -e ssh --rsync-path="​sudo rsync" user@server:/​mnt/​backup/​dateien/​ /​tmp/​system ​ 
- 
 (( 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?
 +))
 +=== Ubuntu ===
 +  rsync -aH --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 ''​rsync''​ bzw. ''​tar''​ das nicht kann
-nur nötig, wenn ''​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 180: Zeile 279:
 oder oder
   touch /​tmp/​system/​.autorelabel   touch /​tmp/​system/​.autorelabel
- 
-==== Wiederherstellung der Dateisystem-Einstellungen ==== 
-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 ===== ===== 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 200: Zeile 293:
   mv /​tmp/​system/​etc/​mtab.bak /​tmp/​system/​etc/​mtab   mv /​tmp/​system/​etc/​mtab.bak /​tmp/​system/​etc/​mtab
 )) ))
 +
 +bei UEFI-Systemen:​
 +  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 ==== ==== Schritte im chroot Zielsystem ====
-  chroot /tmp/system+  chroot /​tmp/​system ​/bin/bash
  
-=== System wieder startfähig machen ​=== +Bootloader wiederherstellen:​ entweder grub2 oder grub 
-== grub ==+ 
 +=== grub2 wiederherstellen ​=== 
 +== Debian 6.0, Ubuntu 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 215: Zeile 331:
   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’. //))
  
 ==== Bootloader grub ==== ==== Bootloader grub ====
Zeile 236: Zeile 361:
   * 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 246: Zeile 389:
 ==== 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 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 254: Zeile 402:
  
 ====== Alternative Sicherungswege ====== ====== Alternative Sicherungswege ======
-==== Platzsparende Hardlink Backups mit rsnapshot ​==== +==== tar über ssh ==== 
- +=== Sicherung === 
-Installation mit +  ​tar cz --numeric-owner --xattrs --acls --directory ​/mnt/system . | ssh nutzer@server "cat > /mnt/backup/​sicherung.tgz"​
- +
-  ​apt-get install rsnapshot +
- +
-Konfiguration unter: +
- +
-  /​etc/​rsnapshot.conf +
- +
-Dabei wichtig: +
- +
-  snapshot_root ​                         ​ wohin soll gesichert werden +
-  interval daily 7                        ​Wieviele Versionen vom täglichen Backup sollen behalten werden? +
-  interval weekly 4                      ​ ​Wieviele Versionen vom wöchentlichen Backup sollen behalten werden? +
-  interval monthly 6                      ​Wieviele Versionen vom monatlichen Backup sollen behalten werden? +
-  backup ​   ​/quelle ​    ​zielrechner    -  Zb localhostoder im Zusammenhang mit SSH gebrauchen +
- +
-Testen der Config +
- +
-  rsnapshot configtest +
- +
-Danach kann man das Ganze erst einmal im Probedurchlauf testen ohne wirklich Dateien zu schreiben:+
  
-  rsnapshot -t daily +Bei älteren Distributionen (SuSE bis SLES 11, Debian bis 7 und sehr alten RedHat)
- +
-==== Sicherung mit tar über ssh ====+
   tar cz --numeric-owner --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​   tar cz --numeric-owner --directory /mnt/system . | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​
  
-Fedora 7, Centos 5: +=== Wiederherstellen === 
-  tar cz --numeric-owner --xattrs --directory /mnt/​system ​. | ssh nutzer@server "cat > /​mnt/​backup/​sicherung.tgz"​+  ​ssh nutzer@server 'cat /​mnt/​backup/​sicherung.tgz'​ | tar xz --numeric-owner --xattrs ​--acls --xattrs-include='​*' ​--directory /tmp/system
  
 === Dokumentation === === Dokumentation ===
Zeile 290: Zeile 416:
   * man tar   * man tar
  
-=== Sicherung mit tar über ssh und anschließendem entpacken ​=== +==== cpio über ssh === 
- +=== Sicherung === 
-  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)) ((Vermeidet die Probleme von tar und gzip bei Datenfehlern))
  
Zeile 300: Zeile 423:
   find -xdev -depth -print0 | cpio -o0 --format=crc | bzip2 | ssh nutzer@server 'cat > /​mnt/​backup/​sicherung.cpio.bz2'​   find -xdev -depth -print0 | cpio -o0 --format=crc | bzip2 | ssh nutzer@server 'cat > /​mnt/​backup/​sicherung.cpio.bz2'​
  
-==== Wiederherstellen ​mit tar über ssh ==== +=== Wiederherstellen === 
-  ssh nutzer@server 'cat /​mnt/​backup/​sicherung.tgz'​ | tar xz --numeric-owner --directory /​tmp/​system +
- +
-==== Wiederherstellen mit cpio über ssh ==== +
   cd /tmp/system   cd /tmp/system
   ssh nutzer@server 'cat /​mnt/​backup/​sicherung.cpio.bz2'​ | bunzip2 | cpio -dumin   ssh nutzer@server 'cat /​mnt/​backup/​sicherung.cpio.bz2'​ | bunzip2 | cpio -dumin
Zeile 316: Zeile 436:
 Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// )) Übers Netz via rsyncd: (( erfordert laufenden rsyncd auf dem Zielsystem //server// ))
   rsync -ax --numeric-ids --del / server::/​backup/​dateien/​   rsync -ax --numeric-ids --del / server::/​backup/​dateien/​
 +
 +==== Platzsparende Hardlink Backups mit rsnapshot ====
 +
 +Installation mit
 +
 +  apt-get install rsnapshot
 +
 +Konfiguration unter:
 +
 +  /​etc/​rsnapshot.conf
 +
 +Dabei wichtig:
 +
 +  snapshot_root ​                         -  wohin soll gesichert werden
 +  interval daily 7                       ​- ​ Wieviele Versionen vom täglichen Backup sollen behalten werden?
 +  interval weekly 4                      -  Wieviele Versionen vom wöchentlichen Backup sollen behalten werden?
 +  interval monthly 6                     ​- ​ Wieviele Versionen vom monatlichen Backup sollen behalten werden?
 +  backup ​   /​quelle ​    ​zielrechner/ ​    ​- ​ Zb localhost/ oder im Zusammenhang mit SSH gebrauchen
 +
 +Testen der Config
 +
 +  rsnapshot configtest
 +
 +Danach kann man das Ganze erst einmal im Probedurchlauf testen ohne wirklich Dateien zu schreiben:
 +
 +  rsnapshot -t daily
  
 ===== 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.1404209401.txt.gz · Zuletzt geändert: 2014/07/01 10:10 von ingo_wichmann