- /etc/ssh/sshd_config
PermitRootLogin yes
Dies ist eine alte Version des Dokuments!
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 /dev
gemountete Ramdisk für udev
werden dabei gemeistert. Dienste wie Mailserver oder Datenbanken ( offene Dateien ) sollten vorher angehalten werden.
Abschätzen, wie viel Platz benötigt wird:
df -hlx tmpfs -x devtmpfs
→ Summe der Daten auf persistenten, lokalen Dateisystemen
evtl. Platz schaffen wie in Plattenplatz, Partitionierung und lvm beschrieben
mkdir -p /mnt/backup/dateien
Zielverzeichnis /mnt/backup
muss dem Ubuntu-Nutzer gehören:
chown nutzerXX /mnt/backup
Entweder
oder
Diese Schritte werden auf dem zu sichernden System ausgeführt.
Mehr zur Vorgehensweise siehe partitionierung. Wenn die Wiederherstellung nicht automatisiert erfolgen muss, reicht auch die Ausgabe von 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
pvdisplay > sicherung.pvdisplay vgdisplay > sicherung.vgdisplay lvdisplay > sicherung.lvdisplay
alternativ mit
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
lsblk -f
→ alle persistenten, lokalen Dateisysteme müssen gesichert werden, mit Ausnahme von loop-Devices
tune2fs -l /dev/sdaX > sicherung.ext.sdaX
xfs_admin -l -u /dev/sdaX > sicherung.xfs.sdaX xfs_info /dev/sdaX >> sicherung.xfs.sdaX
blkid /dev/sdaX > sicherung.vfat.sdaX
blkid /dev/sdaX > sicherung.swap.sdaX
Ubuntu:
scp sicherung.* nutzer@server:/mnt/backup
andere Distributionen (bei denen root ein Passwort hat):
scp sicherung.* root@server:/mnt/backup
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 mount --bind / /mnt/system mount --bind /boot /mnt/system/boot ...
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:
sudo visudo
und diese Zeile ergänzen:
%sudo ALL=(ALL) NOPASSWD: ALL
Der Benutzer muss in der Gruppe sudo sein
Und dann lautet der Befehl zum Backup:
rsync -aH --xattrs --acls --numeric-ids --del --rsync-path="sudo rsync" /mnt/system/ user@zielsystem:/mnt/backup/dateien
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.
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.
Die wichtigsten Fragen sind:
ls
stichprobenartig nachschauenfind
und wc
Dateien zählenls -l
stichprobenartig nachschauenEinfache Lösung:
-nv
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
Berechtigungen vergleichen
diff ~/getfacl.orig /run/getfacl.backup
nur nötig, wenn tar
oder rsync
das nicht kann
cd /mnt/system getfacl --skip-base -P -n -R . > sicherung.acl scp sicherung.acl root@server:/mnt/backup
nur nötig, wenn tar oder rsync das nicht kann
cd /mnt/system getfattr -Rh -m . -d . > sicherung.attr scp sicherung.attr root@server:/mnt/backup
wipefs -af /dev/sda
Oder bei SSDs:
blkdiscard /dev/sda
dd if=/dev/zero of=/dev/sda
… und nach ein paar Sekunden ist das System zumindest unbrauchbar. Oder bei SSDs:
blkdiscard -s /dev/sda
dd if=/dev/urandom of=/dev/sda
… und laaaange warten
rm -rf ... /
Das hat früher mal Spass gemacht. Heutzutage (Kernel < 3.0 und EFI) kann
es leider passieren, dass die EFIVARS gelöscht werden. Danach ist kein
Zugriff auf Wechselmedien mehr möglich.
Rettungssystem ( z.B. sysrcd, knoppix ) booten
Partitionierung anhand der Informationen aus der gesicherten Datei sicherung.parted
und/oder gemäß etc/fstab
aus dem Backup wie in Partitionierung 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 10)
In Knoppix muss dazu zuerst lvm2 gestartet werden:
service lvm2 start
Dateisysteme mit mkfs.*
gemäß etc/fstab
aus dem Backup anlegen. Dabei wenn nötig die Dateisystem-Einstellungen aus der Sicherung berücksichtigen (UUID, …)
11)
mkfs.ext4 -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX
oder
mkfs.xfs -m uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX
oder
mkfs.vfat -i xxxxxxxx /dev/sdaX
14) …
mkswap -U xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdaX
In /mnt/backup/dateien/etc/fstab
aufgeführte Mountpoints mit mkdir -p
anlegen und Dateisysteme mit mount
einhängen: 16)
17)
mkdir -p /tmp/system mount /dev/sdaX /tmp/system
mkdir -p /tmp/system/boot mount /dev/sdaY /tmp/system/boot
…
rsync -aH --acls --xattrs --numeric-ids --del -e ssh root@server:/mnt/backup/dateien/ /tmp/system
evtl. ACLs und erweiterte Dateisystemattribute berücksichtigen 19)
rsync -aH --acls --xattrs --numeric-ids --del -e ssh --rsync-path="sudo rsync" user@server:/mnt/backup/dateien/ /tmp/system
nur nötig, wenn rsync
bzw. tar
das nicht kann
mount -o remount,acl /tmp/system/ cd /tmp/system setfacl --restore sicherung.acl
nur nötig, wenn rsync
bzw. tar
das nicht kann
( nicht erfolgreich getestet … )
mount -o remount,user_xattrs /tmp/system cd /tmp/system setfattr -h --restore sicherung.attr
oder
touch /tmp/system/.autorelabel
mount --rbind /dev /tmp/system/dev mount --rbind /proc /tmp/system/proc mount --rbind /sys /tmp/system/sys
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
chroot /tmp/system /bin/bash
Bootloader wiederherstellen: entweder grub2 oder grub
grub-install /dev/sda update-grub2
grub2-install /dev/sda update-bootloader --refresh
grub2-install /dev/sda grub2-mkconfig > /boot/grub2/grub.cfg
grub2-install /dev/sda grub-mkconfig > /boot/grub/grub.cfg
Grub in den MBR schreiben:
grub > root (hd0,0) > setup (hd0) > quit
oder mit
grub-install --recheck --no-floppy hd0
chroot-Umgebung (z.B. mit Strg+d
) verlassen und
reboot
Je nach dem wie sich die Hardware geändert hat, sind folgende Bereiche anzupassen:
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 BIOS Boot Partition z.B. von Block 34 bis Block 2047 vor Veränderungen schützen.
/boot/grub/menu.lst
:
Neue Partitionsnummern beachten, wichtig sind z.B.
root
) in Grub-Terminologie/boot/vmlinuz*
oder /vmlinuz*
)root= …
)
/boot/grub/grub.cfg
: (sollte automatisch über update-grub2
erstellt werden)
Neue Partitionsnummern beachten, wichtig sind z.B.
root
) in Grub-Terminologie/boot/vmlinuz*
oder /vmlinuz*
)root= …
)Um ein (ehemaliges) BIOS System auf einer UEFI Hardware wieder herzustellen braucht man
/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?). grub-efi
, grub-efi-amd64-bin
und efibootmgr
installieren. Dann grub-install
+ update-grub
ausführen. grub2-efi
, grub2-efi-x64-modules
und efibootmgr
installieren. Dann grub-install
+ update-grub
grub2-x86_64-efi
und efibootmgr
installieren. Dann grub-install
+ update-bootloader
ausführen.
/etc/fstab
:
Neue Partitionsnummern, Software-RAID und Logical Volumes beachten
/etc/mtab
:
Neue Partitionsnummern, Software-RAID und Logical Volumes beachten
23)
Je nach Änderung muß eine neue initrd erzeugt werden und/oder die bei Booten geladenen Module müssen überarbeitet werden
in der chroot-Umgebung
dracut --force /boot/initrd-4.4.87-18.29-default 4.4.87-18.29-default
in der chroot-Umgebung
mkinitrd --force /boot/initramfs-2.6.32-220.el6.x86_64.img 2.6.32-220.el6.x86_64
Gerätenamen in /etc/udev/rules.d
anpassen
tar cz --numeric-owner --xattrs --acls --directory /mnt/system . | ssh nutzer@server "cat > /mnt/backup/sicherung.tgz"
Bei älteren Distributionen (SuSE bis SLES 11, Debian bis 7 und sehr alten RedHat)
tar cz --numeric-owner --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
cd /mnt/system find -xdev -depth -print0 | cpio -o0 --format=crc | bzip2 | ssh nutzer@server 'cat > /mnt/backup/sicherung.cpio.bz2'
cd /tmp/system ssh nutzer@server 'cat /mnt/backup/sicherung.cpio.bz2' | bunzip2 | cpio -dumin
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: 25)
rsync -ax --numeric-ids --del / server::/backup/dateien/
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
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:
/dev
explizit angeben. Die wichtigsten Gerätedateien sollten auch darin enthalten sein.mkdir /tmp/system && mount –bind / /tmp/system
zugreifen. Die Sicherung muss man dann mit tar czpf /dev/st0 –numeric-owner –directory /tmp/system .
starten. FRAGE: das müsste doch durch die bind-mounts nach /mnt/system gelöst sein, oder?!
Antwort: richtig
PermitRootLogin yes
sfdisk -d /dev/sda > sicherung.sfdisk scp sicherung.sfdisk 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 ähnlichrsync
die Option -x
bzw. –one-file-system
nutzen und die entsprechenden Mountpoints einzeln angeben progress
installieren und progress -wm
ausführen während rsync läuft. less ~/sicherung.vgPhysical 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.vgVolume Group und Logical Volumes wiederherstellen:
vgcfgrestore -f ~/sicherung.vg centos_notebook17
blkid
im Format UUID="066B-5CE0"
ausgegeben wurde muss mkfs.vfat
mit 066B-5CE0
(also ohne Minus) übergeben werden/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 ähnlichrpm -qa | xargs rpm --setpermsTodo: debian?
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:mv /tmp/system/etc/mtab /tmp/system/etc/mtab.bak cp -a /proc/mounts /tmp/system/etc/mtabNach dem chroot nicht vergessen, die
/etc/mtab
wiederherzustellen:mv /tmp/system/etc/mtab.bak /tmp/system/etc/mtab
parted /dev/disk set partition-number bios_grub onIf 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’.
/etc/mtab
auch einfach löschen