Wir sind unabhängig, neutral und finanzieren uns teilweise über Werbung und Partnerprovisionen.
Danke wenn du uns unterstützt. Weitere Infos zum Bedanken findest Du hier. Diese Seite verwendet hierzu Cookies & Tracking-Cookies, weitere Informationen findest du hier. Wenn du diese Seite weiterhin besuchst, erklärst du dich damit einverstanden.

Diese seite ist neutral und unabhängig. Die Finanzierung erfolgt teilweise über Werbung und Partnerprovisionen. Danke wenn Du mich unterstützt.
Diese Seite verwendet Cookies & Tracking-Cookies, weitere Informationen findest Du hier. Wenn du diese Seite weiterhin besuchst, erklärst du dich damit einverstanden.

(x) Hinweise ausblenden/einblenden.
Diese Seite ist neutral und unabhängig.
Alle Anleitungen stehen zu 100 %
kostenlos zur Verfügung.
Die Finanzierung erfolgt teilweise
über Werbung und Partnerprovisionen.
Danke wenn Du mich dabei unterstützt.

Alle Infos zum Bedanken findest Du hier.

Besuche Amazon vor Deinem nächsten
Einkauf über diesen Danke Affiliate Link.


Hier kannst Du mir mit PayPal Danken.
Du kannst den Betrag auch anpassen.

Gefällt Dir meine Anleitung?
Hier kannst Du mich Bewerten.
5-Stars



____ _ _ _____ __ _ _ _____ ____ ____ _____ ____ ______ ____ |: __)(.\/.)(_ .__)/:/_ (.\/.)|:____)/.___) |: _ \(_ .__)|: _ \|: ____)/.___) |: _) )::( |:| (_ :_| )::( |:__) \___.\ |: _ ( |:| |: /|: __) \___.\ |____)(_/\_) |_| |_| (_/\_)|_| (____/ |____/ |_| |_|\_\|_| (____/
____ _ _ _____ __ _ _ _____ ____ ____ _____ ____ ______ ____ |: __)(.\/.)(_ .__)/:/_ (.\/.)|:____)/.___) |: _ \(_ .__)|: _ \|: ____)/.___) |: _) )::( |:| (_ :_| )::( |:__) \___.\ |: _ ( |:| |: /|: __) \___.\ |____)(_/\_) |_| |_| (_/\_)|_| (____/ |____/ |_| |_|\_\|_| (____/

ext4/XFS/Btrfs Image Backup & Restore.
Ubuntu/Debian/Linux Partitionen mit einem Live-System
im Netzwerk sichern bzw. wiederherstellen.
Kostenloses OpenSource Script.


2022-01-19 © ctaas.de, Arno Schröder § Impressum


Nr. ext4 Backup Handbuch:
1 Linux System sichern
(ext4, ext3, ext2, XFS, Btrfs)
2 Linux System wiederherstellen
3 wichtige Kurztipps (einzelne Dateien wiederherstellen)



Für aktuelle Systeme mit dem ext4-Dateisystem gibt es nur wenige gute Sicherungsmöglichkeiten, daher habe ich die folgenden Scripte zur Sicherung und Wiederherstellung geschrieben.
Mit Hilfe des Scriptes wird der Bootsektor, die Partitionierungstabelle und der komplette Inhalt der Partition [/dev/sda1] gesichert bzw. wiederhergestellt.
Während der Sicherung wird ein mittels LZMA/Zstandard stark komprimiertes Image erstellt, welches nur die tatsächlich belegten Sektoren enthält. Die erzeugten Sicherungen belegen so nur wenig Speicherplatz.
Hat man nur eine Partition "für alles", also [/boot], [/home] und [/] root auf einer Partition, so wird damit das komplette System gesichert.
Die Sicherung von weiteren Partitionen ist problemlos möglich.
Das Script startet man am besten unter einer beliebigen Live-CD/DVD (empfohlen wird Xubuntu [1]). Fehlende Programme werden aus dem Internet nachgeladen.
Benötigt man ein Live-System auf einem USB-Stick, so sollte man sich das Programm Rufus mal ansehen.

Zur Sicherung wird dd und fsarchiver [1] verwendet. In dem fsarchiver-Archiv sind alle Daten durch Checksummen geschützt. Wurde ein Archiv beschädigt, so sind nur die Daten verloren die beschädigt wurden.
fsarchiver unterstützt derzeit nur Linux Dateisysteme unter anderem ext2, ext3, ext4, XFS, Btrfs. Das Script kann man auch für diese Dateisysteme 1:1 verwenden.
Archive kann man auch auf kleineren Festplatten und anderen Dateisystemen (diese kann fsarchiver erzeugen) wiederherstellen.
Des Weiteren kann man Multivolume-Archive erstellen, um diese z. B. auf DVD zu sichern.
Dual-Boot-Systeme und weitere Datenträger werden hier nicht beachtet. Man kann das hier vorgestellte Script leicht für eigene Zwecke anpassen.

1. Sicherung (backup):


Script direkt Download Links für '/dev/sda' und '/dev/nvme0n1' (es ist hier kein Copy & Paste des Scripts mehr notwendig):
wget https://ctaas.de/data/ext4_backup_sda.sh.txt -O backup.sh          # Für alte SATA Festplatten/SSDs - backup /dev/sda1 (ext4/Linux-Filesystem).
wget https://ctaas.de/data/ext4_backup_nvme_legacy.sh.txt -O backup.sh  # Für neue NVM Express/NVMe SSDs - backup /dev/nvme0n1p1 (ext4/Linux-Filesystem) im Legacy-/Kompatibilitätsmodus (ohne UEFI).
wget https://ctaas.de/data/ext4_backup_bootefi_nvme.sh.txt -O backup.sh # Für neue NVM Express/NVMe SSDs - backup /dev/nvme0n1p1 (BIOS boot/EFI-System) und /dev/nvme0n1p2 (ext4/Linux-Filesystem).

Alternative Variante: Bei separater 'grub2 core.img' '1.00 MiB' 'bios_grub' 'BIOS boot' bzw. 'EFI System Partition':
wget https://ctaas.de/data/ext4_backup_grubcore_sda.sh.txt -O backup.sh      # Für alte SATA Festplatten/SSDs - backup /dev/sda1 (BIOS boot) und /dev/sda2 (ext4/Linux-Filesystem).
wget https://ctaas.de/data/ext4_backup_grubcore_efi_nvme.sh.txt -O backup.sh # Für neue NVM Express/NVMe SSDs - backup /dev/nvme0n1p1 (BIOS boot) und /dev/nvme0n1p2 (EFI-System) und /dev/nvme0n1p3 (ext4/Linux-Filesystem).

mousepad backup.sh # Grafischer Text Editor mit Syntaxhervorhebung (unter Xfce empfohlen).
nano backup.sh     # Alternativer Editor (im TTY Terminal/Console).

Hier folgendes einfügen (Copy & Paste):
#!/bin/sh
## Debian/Ubuntu Linux - von einem Live-System aus in einer Netzwerkfreigabe - sichern:
##
## Das ext4-Dateisystem wird voll unterstützt. Die Sicherung muss von einem
## Live-System (USB/CD/DVD) aus erfolgen, da nur so alles 100 % gesichert werden kann.
## Das Script ist auch für: ext2, ext3, XFS, Btrfs Dateisysteme geeignet.
## Eine ausführliche Parameterbeschreibung findet man unter: https://ctaas.de/linux-install.htm
## 2021 © Computertechnik Schröder, Arno Schröder, Kahla

## BACKUP - Die folgenden Angaben muss man anpassen:
serverip='192.168.0.100' # IP-Adresse des Servers auf den gesichert wird.
freigabe='post'          # Freigabe auf dem Sicherungsserver.
username='admin'         # Benutzername für den Login auf dem Sicherungsserver.
passwort='Qbttxpsu'      # Passwort zum Login auf dem Sicherungsserver.
srv_name='ServerName'    # Sicherungsserver PC-Name (Hostname) oder Windows-Domänenname (optional).

# Den Backupname automatisch anhand der MAC-Adresse festlegen (empfohlen):
bck_name=bck_up_$(cat /sys/class/net/$(ip route show default|awk '/default/ {print $5}')/address|sed -e 's/://g')
# Parameterbeschreibung:
# [ip route show default]           = Ermittelt die Standard Netzwerkverbindung.
# [awk '/default/ {print $5}']      = Ermittelt über den 5-ten String den Namen der Netzwerkverbindung, also z. B. 'eth0', 'enp0s3' usw.
# [cat /sys/class/net/ethX/address] = Ermittelt die zur Standard-Netzwerkverbindung dazugehörige MAC-Adresse.
# [sed -e 's/://g']                 = Entfernt alle Doppelpunkte aus der MAC-Adresse (da Dateinamen mit Doppelpunkt unter Windows nicht möglich sind).
# Warum das ganze? Ganz einfach: Der Sicherungsname für jeden PC ist somit immer eindeutig. Beispielsweise: 'bck_up_080027321a3b'.
# Sollte die Ermittlung nicht klappen, dann kann man den Backupname/Computername hier selbst eingeben (ggf. ändern und die Raute entfernen):
# bck_name='bck_up_xxxxxxxx.BackupName'

# Sicherungsdatum automatisch ermitteln:
datum=$(date +"%Y-%m-%d")

## Netzwerk verbinden:
# Verzeichnis zum einhängen anlegen:
mkdir /mnt/LAN
# Paketquellen aktualisieren und notwendige Pakete installieren: [cifs] zum mounten, [fsarchiver] (filesystem archiver) das Sicherungsprogramm.
apt-get update; apt-get install cifs-utils fsarchiver -y
# Die Netzwerkfreigabe einhängen (mounten):
mount -v -t cifs //$serverip/$freigabe /mnt/LAN/ -o rw,username=$username,password=$passwort,domain=$srv_name,vers=2.1
# Mit [vers=...] legt man die zu verwendende SMB-Protokoll Version für den Backup Server fest (1, 2, 3).
# vers=1.0   = für Windows XP, Windows Server 2003 (R2), FritzBox.
# vers=2.0   = für Windows Vista ab SP1, Windows Server 2008 (bzw. vers=2.0.2).
# vers=2.1   = für Windows 7, Windows Server 2008 R2.
# vers=3.0   = für Windows 8, Windows Server 2012.
# vers=3.02  = für Windows 8.1, Windows Server 2012 R2.
# vers=3.1.1 = für Windows 10, Windows Server 2016.
# Hat man eine falsche Version angegeben, so erhält man ggf. den Fehler: [mount error(112): Host is down] und das mounten der Netzwerkfreigabe schlägt fehl.

# Überprüfen ob die Netzwerkfeigabe korrekt gemountet wurde: [$?] enthält den ErrorLevel/exit code vom Befehl mountpoint:
mountpoint /mnt/LAN; if [ $? = 0 ]; then echo "mount: OK"; else echo "mount error: Zugangsdaten oder Netzwerkverbindung fehlerhaft"; exit 13; fi

# Sicherungsverzeichnis anlegen:
mkdir /mnt/LAN/Backup/$bck_name/ -p

## Die eigentliche Sicherung starten:
# 1. Sichert nur den MBR (GRUB 2 Bootloader):
dd if=/dev/sda of=/mnt/LAN/Backup/$bck_name/$datum.mbr_grub_only.img bs=446 count=1 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt
# Alle Standardausgaben und ggf. auftretende Fehler in der Logdatei "YYYY-MM-TT.log.txt" speichern. Die Umleitung erfolgt mittels '2>&1' und 'tee' (optional).

# if Abfrage ob GPT oder MBR Laufwerk:
if sgdisk -p /dev/sda | grep "Found invalid GPT and valid MBR"
 then
 # 2. wenn kein GPT gefunden wurde, dann MBR-Partitionstabellen sichern.
 # sfdisk -d /dev/sda > /mnt/LAN/Backup/$bck_name/$datum.mbr-part-table.mpt # Alternative Variante.
 dd if=/dev/sda of=/mnt/LAN/Backup/$bck_name/$datum.full_mbrgrub_2048.img bs=512 count=2048 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt

 else
 # 2. sonst GPT-Partitionstabellen (GUID-Partition-Table) sichern,
 # (neue Datenträger gemäß der EFI-Spezifikation - insbesondere alle Datenträger über 2 TB):
 sgdisk -b /mnt/LAN/Backup/$bck_name/$datum.gpt-table.gpt /dev/sda 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt
fi

# 3. zu sichernde Laufwerke aushängen (/dev/sda1 ...) & Bildschirm-Energiesparmodus ausschalten:
umount /dev/sd*; xset s off -dpms

# 4. die Anzahl der CPU threads/cores ermitteln, um das Erstellen des Archives zu beschleunigen. [siblings] (Geschwister), die Anzahl der CPU threads.
threads=$(egrep -c siblings /proc/cpuinfo)

# 5a. Inhalt des Dateisystems (alle Programme, Daten, usw.) in einem Multivolume-Archiv gepackt sichern (ab FSArchiver Version 0.8.4 statt '-z7' besser '-Z14').
time fsarchiver savefs -j$threads -s4300 -v -z7 /mnt/LAN/Backup/$bck_name/$datum.sda1_archiv.fsa /dev/sda1 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt

# 5b. Alternative Variante: Bei separater '/dev/sda1' 'grub2 core.img' '1.00 MiB' 'bios_grub' 'BIOS boot' 'EFI System Partition'.
## time dd if=/dev/sda1 of=/mnt/LAN/Backup/$bck_name/$datum.sda1.full_dd.img 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt
## time fsarchiver savefs -j$threads -s4300 -v -Z14 /mnt/LAN/Backup/$bck_name/$datum.sda2_archiv.fsa /dev/sda2 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt
# Hinweis: Diese Variante verwendet den neuen (↑hier) Datenkomprimierungsalgorithmus Zstandard ab XUbuntu 18.04 (siehe Parameterbeschreibung).

# Parameterbeschreibung:
# [savefs] = (save device filesystem), Dateisystem sichern, der Typ (ob ext2, ext3, ext4, XFS oder Btrfs) wird automatisch erkannt.
# [-j]     = (jobs), bestimmt die Anzahl der threads zum packen/entpacken (z. B. -j2). Die optimale Anzahl wird unter dem Punkt 4 automatisch ermittelt.
# [-s4300] = (split), das Archiv in mehrere MB große Teile zerlegen. Die 4300 MB entsprechen hierbei einer Standard-DVD.
#            Bei Sicherungen auf FAT32 formatierten NAS-Laufwerken/Freigaben, muss man hier eine kleinere Dateigröße eingegeben (maximal 4096 MB).
# [-v]     = (verbose), ausführliche Anzeige.
# [-z9]    = (kleines 'z'), bestimmt den Level der Komprimierung, Werte von 0-9 sind möglich. Im täglichen produktiven Betrieb wird Stufe 7 empfohlen.
#            Kompressionsstandard nach Stufe: 0 = lz4, 1 = lz0 -3, 2 = gzip -3, 3 = gzip -6, 4 = gzip -9, 5 = bzip2 -2, 6 = bzip2 -5, 7 = lzma -1, 8 = lzma -6, 9 = lzma -9
#            Bei Stufe 8 verdoppelt sich die Packdauer, bei Stufe 9 (maximale LZMA-Komprimierung) verdreifacht sich diese, immer in Bezug auf die Stufe 7.
#            In der Stufe 8 oder 9 erstellte Archive sind immer kleiner als mit dem ZStandard erstellte Archive (LZMA packt langsam und besser).

# optionale/neue Parameter:
# [tee]    = leitet Ausgaben der Standardausgabe und ggf. auftretende Fehler (mittels '2>&1') in eine Datei um. Wird hier fürs Logging verwendet.
# [time]   = (Zeit), misst Dauer, wie lange die Sicherung gedauert hat.
# [-o]     = (overwrite), eine bereits bestehende Sicherung überschreiben.
# [-cP@sSw0Rd]   = (cryptpass), Sicherungsimage mit einem Passwort verschlüsseln (ohne Leerzeichen).
# [-a] bzw. [-A] = (allow), eingehängte (gemountete) Partitionen sichern (nicht empfohlen).
# [-e 'Datei/Joker*?'] = (exclude) Verzeichnisse und Dateien die dem angegebenen Muster entsprechen werden nicht mit gesichert. Die Wildcards * und ? sind ebenso zulässig.
# Beispielsweise: -e '/swap.img' oder -e '*.log'. Pfade sind relativ zum zu sichernden Laufwerk einzugeben. Zur korrekten Interpretierung muss die Angabe zwingend in Hochkommas vorhanden sein.
# Achtung: Das hier im Beispiel angegebene swapfile wird vom Linux-System nicht neu angelegt. Man sollte das swapfile die 'swap.img' Datei daher immer einfach mit sichern (das ist auch standardmäßig so).
# [-Z14]   = (großes 'Z'), bestimmt den Level der Komprimierung vom neuen Komprimierungsstandard Zstandard 'zsdt', Werte von 1-22 sind möglich.
#            Der neue Standard ist erst ab der FSArchiver Version 0.8.4 oder höher verfügbar (ab Xubuntu 18.04/bionic bzw. Debian 10/buster).
#            Verwendet man [-Z22], so wird das Archiv meist geringfügig kleiner als bei dem alten LZMA-Standard [-z7], wobei die Sicherungsdauer deutlich ansteigt.
#            Sicherungen mit dem Zstandard [-Z14] werden in der Regel kleiner und dreimal so schnell erstellt - im Vergleich mit dem alten LZMA-Standard [-z7].
#            Im produktiven Betrieb wird daher [-Z14] empfohlen (wenn möglich), alternativ kann man auch [-z7] problemlos weiterverwenden (ist bereits so angegeben).

# 6. optional: Das verwendete Software Release dokumentieren:
echo "\nBackup erstellt mit folgenden Software-Versionen:\n" | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt
lsb_release -a     | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt
echo ""                  >> /mnt/LAN/Backup/$bck_name/$datum.log.txt
fsarchiver -V 2>&1 | tee -a /mnt/LAN/Backup/$bck_name/$datum.log.txt


# 7. optional: SHA256-Prüfsummen zur aktuellen Sicherung erzeugen, um später die Integrität der Archive zu testen zu können:
echo "\033[93m✱✱✱ Backup abgeschlossen. Erzeuge nur noch SHA-256 Checksummen.\033[0m"; cd /mnt/LAN/Backup/$bck_name; sha256sum $datum.* >$datum.checksum.txt.sha
echo "\033[32m✱✱✱ Alles fertig. Die Sicherung wurde komplett abgeschlossen.\033[0m"

Das Script ausführbar machen und starten:
chmod +x backup.sh
sudo ./backup.sh

2. Wiederherstellung (restore):


Script direkt Download Link für '/dev/sda' und '/dev/nvme0n1' (es ist hier kein Copy & Paste des Scripts mehr notwendig):
wget https://ctaas.de/data/ext4_restore_sda.sh.txt -O restore.sh          # Für alte SATA Festplatten/SSDs - restore /dev/sda1 (ext4/Linux-Filesystem).
wget https://ctaas.de/data/ext4_restore_nvme_legacy.sh.txt -O restore.sh  # Für neue NVM Express/NVMe SSDs - restore /dev/nvme0n1p1 (ext4/Linux-Filesystem) im Legacy-/Kompatibilitätsmodus (ohne UEFI).
wget https://ctaas.de/data/ext4_restore_bootefi_nvme.sh.txt -O restore.sh # Für neue NVM Express/NVMe SSDs - restore /dev/nvme0n1p1 (BIOS boot/EFI-System) und /dev/nvme0n1p2 (ext4/Linux-Filesystem).

Alternative Variante: Bei separater 'grub2 core.img' '1.00 MiB' 'bios_grub' 'BIOS boot' bzw. 'EFI System Partition':
wget https://ctaas.de/data/ext4_restore_grubcore_sda.sh.txt -O restore.sh      # Für alte SATA Festplatten/SSDs - restore /dev/sda1 (BIOS boot) und /dev/sda2 (ext4/Linux-Filesystem).
wget https://ctaas.de/data/ext4_restore_grubcore_efi_nvme.sh.txt -O restore.sh # Für neue NVM Express/NVMe SSDs - restore /dev/nvme0n1p1 (BIOS boot) und /dev/nvme0n1p2 (EFI-System) und /dev/nvme0n1p3 (ext4/Linux-Filesystem).

mousepad restore.sh # Grafischer Text Editor mit Syntaxhervorhebung (unter Xfce empfohlen).
nano restore.sh     # Alternativer Editor (im TTY Terminal/Console).

Hier folgendes einfügen (Copy & Paste):
#!/bin/sh
## Debian/Ubuntu Linux - von einem Live-System aus einer Netzwerkfreigabe - wiederherstellen:
##
## Das ext4-Dateisystem wird voll unterstützt. Die Rücksicherung muss von einem
## Live-System (USB/CD/DVD) aus erfolgen, da nur so alles zu 100 % wiederhergestellt werden kann.
## Eine ausführliche Parameterbeschreibung findet man unter: https://ctaas.de/linux-install.htm
## © Computertechnik Schröder, Arno Schröder, Kahla

## RESTORE - Die folgenden Angaben muss man anpassen:
serverip='192.168.0.100' # IP-Adresse, des Servers, wo liegen die Sicherungen.
freigabe='post'          # Freigabe auf dem Sicherungsserver.
username='admin'         # Benutzername für den Login auf dem Sicherungsserver.
passwort='Qbttxpsu'      # Passwort zum Login auf dem Sicherungsserver.
srv_name='ServerName'    # Sicherungsserver PC-Name (Hostname) oder Windows-Domänenname (optional).

# Den Backupname automatisch anhand der MAC-Adresse festlegen (empfohlen):
  bck_name=bck_up_$(cat /sys/class/net/$(ip route show default|awk '/default/ {print $5}')/address|sed -e 's/://g')
# Beachtet hier: Wenn man ein Backup auf einem neuen System wiederherstellt, dann ändert sich die MAC Adresse.
# bck_name='bck_up_xxxxxxxx.BackupName'  # Alternativ die manuelle Eingabe vom Computername der Sicherung. Welcher PC wird wiederhergestellt?

bck_date='2022-01-17'    # Die Sicherung von welchem Datum wird wiederhergestellt?

## Netzwerk verbinden:
# Verzeichnis zum einhängen anlegen:
mkdir /mnt/LAN
# Paketquellen aktualisieren und notwendige Pakete installieren: [cifs] zum mounten, [fsarchiver] (filesystem archiver) das Sicherungsprogramm.
apt-get update; apt-get install cifs-utils fsarchiver -y
# Die Netzwerkfreigabe einhängen (mounten):
mount -v -t cifs //$serverip/$freigabe /mnt/LAN/ -o rw,username=$username,password=$passwort,domain=$srv_name,vers=2.1
# Mit [vers=...] legt man die zu verwendende SMB-Protokoll Version für den Backup Server fest.
# vers=1.0 (XP, Srv 2003, FritzBox), vers=2.0 (Vista ab SP1, Srv 2008), vers=2.1 (Win 7, Srv 2008 R2),
#
vers=3.0 (Win 8, Srv 2012), vers=3.02 (Win 8.1, Srv 2012 R2), vers=3.1.1 (Win 10, Srv 2016).

# Überprüfen ob die Netzwerkfeigabe korrekt gemountet wurde:
mountpoint /mnt/LAN; if [ $? = 0 ]; then echo "mount: OK"; else echo "mount error: Zugangsdaten oder Netzwerkverbindung fehlerhaft"; exit 13; fi

# Überprüfen ob das entsprechende Backup Verzeichnis existiert (bck_name):
if [ -d /mnt/LAN/Backup/$bck_name ]; then echo "Backup Verzeichnis gefunden: OK"; else echo "backup name error: bck_name fehlerhaft"; exit 13; fi

# Überprüfen ob eine Sicherung vom angegebenen Sicherungsdatum vorhanden ist (bck_date):
if [ -f /mnt/LAN/Backup/$bck_name/$bck_date.checksum.txt.sha ]; then echo "Sicherungsdatum: OK"; else echo "date error: bck_date falsches Sicherungsdatum $bck_date"; exit 13; fi

# swapping deaktivieren - es kann sonst passieren das, das Live-System die swap-Partition verwendet und so ein Rücksichern verhindert.
swapoff -a

## Die eigentliche Wiederherstellung starten:
# 1. Den MBR (GRUB 2 Bootloader) wiederherstellen:
dd if=/mnt/LAN/Backup/$bck_name/$bck_date.mbr_grub_only.img of=/dev/sda bs=446 count=1

# 2a. Die MBR-Partitionstabelle zurücksichern (wenn vorhanden) ...
# sfdisk /dev/sda < /mnt/LAN/Backup/$bck_name/$bck_date.mbr-part-table.mpt 2>/dev/null # Alternative Variante.
dd if=/mnt/LAN/Backup/$bck_name/$bck_date.full_mbrgrub_2048.img of=/dev/sda bs=512 count=2048 2>/dev/null

# 2b. ... oder (load backup) die GPT Partitionstabelle wiederherstellen (wenn vorhanden):
sgdisk -l /mnt/LAN/Backup/$bck_name/$bck_date.gpt-table.gpt /dev/sda 2>/dev/null

# 2c. die geänderte Partitionstabelle neu einlesen (dem System bekannt machen):
sleep 15; hdparm -z /dev/sda 2>/dev/null; sfdisk -R /dev/sda 2>/dev/null # 1. für Ubuntu, 2. für Debian:

# Kurz warten und eventuell durchs automount geöffnete Fenster wieder schließen & Bildschirm-Energiesparmodus ausschalten:
echo 30 Sekunden warten ...; sleep 30; killall Thunar; xset s off -dpms

# 3. ggf. gemountete Laufwerke (/dev/sda1 ...) aushängen:
umount /dev/sd*

# 4. die Anzahl der CPU threads/cores ermitteln, um das Wiederherstellen des Archives zu beschleunigen. siblings = Anzahl der CPU threads.
threads=$(egrep -c siblings /proc/cpuinfo)

# 5a. Erstes Dateisystem (id=0) vom Archiv auf /dev/sda1 wiederherstellen.
# id = bestimmt die Nummer vom Dateisystem falls man mehrere Dateisysteme in einem Archiv gesichert hat (begonnen wird bei 0).
time fsarchiver restfs -j$threads -v /mnt/LAN/Backup/$bck_name/$bck_date.sda1_archiv.fsa id=0,dest=/dev/sda1
# Optional: Rücksicherung und Dateisystem konvertieren z. B. in ext4, XFS ... (anpassbar).
# time fsarchiver restfs -v /mnt/LAN/Backup/$bck_name/$bck_date.sda1_archiv.fsa id=0,dest=/dev/sda1,mkfs=ext4

# 5b. Alternative Variante: Bei separater '/dev/sda1' 'grub2 core.img' '1.00 MiB' 'bios_grub' 'BIOS boot' 'EFI System Partition'.
## dd if=/mnt/LAN/Backup/$bck_name/$bck_date.sda1.full_dd.img of=/dev/sda1
## fsarchiver restfs -j$threads -v /mnt/LAN/Backup/$bck_name/$bck_date.sda2_archiv.fsa id=0,dest=/dev/sda2

echo "\033[32m✱✱✱ Restore abgeschlossen.\033[0m"

Das Script ausführbar machen und starten:
chmod +x restore.sh
./restore.sh

3. Sonstiges:


fsarchiver archinfo Archiv.fsa
# Informationen zum Archiv anzeigen.
fsarchiver restdir Archiv.fsa /tmp/extract
# entpackt die Daten ins angegebene Verzeichnis (einzelne Dateien wiederherstellen).
fsarchiver -v
# kurze Hilfe anzeígen.
man fsarchiver
# (manpages) ausführliche Hilfe anzeigen.

❑  Abschließende Hinweise:


Verwendet man einen neueren PC bei dem die SSD nicht mehr über SATA sondern mittels NVM Express/PCI Express direkt angeschlossen ist, dann ändert sich der Interfacename.
Beispielsweise wird:
'/dev/sda1' zu '/dev/nvme0n1p1' bzw.
'/dev/sda'  zu '/dev/nvme0n1'.
Der Namensaufbau ist dabei wie folgt:
[/dev/nvme] = device NVM Express +
[0] = Controllernummer +
[n1] = Namespace +
[p1] = Partitionsnummer.
Die entsprechenden Einträge im Script muss man dann entsprechend anpassen.
Angepasste NVMe Scripte für Backup und Restore stehen oben zum Download mittels wget bereit.
Beachtet hier insbesondere die rot (= änderbare Einstellungen) hervorgehobenen Textstellen.

Die Wiederherstellung klappt auch auf einer neuen leeren Festplatte oder einem neuem kompatiblen System, da sowohl der Bootsektor, die Partitionstabelle sowie alle Daten wieder restauriert werden.
Achtung: Bei einer Wiederherstellung werden alle zuvor vorhandene Daten überschrieben, also gelöscht.
Man kann mit diesen Skripten neben Debian & Ubuntu problemlos auch andere fremde Systeme wie z. B. Xubuntu, Ubuntu Mate, Kubuntu, Lubuntu, Linux Mint, Manjaro, Fedora, openSuse, Arch Linux, FreeBSD usw. sichern & wiederherstellen.
Setzt man noch zusätzlich andere Dateisysteme wie z. B. NTFS, FAT32, exFAT usw. ein, so muss man das Skript hier entsprechend selbst ergänzen.
Für Windows Partitionen empfehle ich folgendes Skript.

Die Nutzung der Anleitung erfolgt auf eigene Gefahr, für jegliche Schäden wird keine Garantie/Haftung übernommen.
IP-Adressen, E-Mailadressen, Namen u. ä. wurden für die Dokumentation geändert, hacken ist also zwecklos.
Die Dokumentation entstand aus verschiedenen Tests unter: Ubuntu 14.04 bis 21.10 und unter Debian 8, 9 und 10, sowie produktiven Installationen.
Bevor sie eventuell Fragen stellen bitte ich sie die Dokumentation komplett zu lesen. Hinweise auf Fehler, Anregungen, Danksagungen oder ähnliches sind immer willkommen.
Danke für deine Unterstützung!
Affiliate/Partner-Link: Amazon.de

Design:
© ctaas.de, Arno Schröder, Kahla [Impressum]