Wir sind unabhĂ€ngig, neutral und finanzieren uns teilweise ĂŒber Werbung und Partnerprovisionen.
Danke wenn sie uns unterstĂŒtzen. Diese Seite verwendet hierzu Cookies & Tracking-Cookies, weitere Informationen finden sie hier. Wenn sie diese Seite weiterhin besuchen, erklĂ€ren sie sich damit einverstanden. (Danke!)

Wir sind unabhĂ€ngig, neutral und finanzieren uns teilweise ĂŒber Werbung und Partnerprovisionen. Danke wenn sie uns unterstĂŒtzen.
Diese Seite verwendet hierzu Cookies & Tracking-Cookies, weitere Informationen finden sie hier. Wenn sie diese Seite weiterhin besuchen, erklÀren sie sich damit einverstanden.

ext4 backup & restore

Debian/Ubuntu Linux mit einem Live-System
im Netzwerk als Image sichern.

2018-03-02 © ctaas.de, A. Schröder [Impressum]


Nr. ext4 Backup Handbuch Inhalt:
1 Linux System sichern (ext4, ext3, ext2, xfs, btrfs)
2 Linux System Wiederherstellen
3 wichtige Kurztipps (einzelne Dateien wieder herstellen)

FĂŒr aktuelle Systeme mit dem ext4-Dateisystem gibt es wenige gute Sicherungsmöglichkeiten, so das ich folgende Sicherungs- und Wiederherstellungs-Scripte geschrieben habe.
Es wird dabei der Bootsektor, die Partitionierungstabelle und der komplette Inhalt der ersten Partition [/dev/sda1] gesichert bzw. wieder hergestellt.
WÀhrend der Sicherung wird ein mittels LZMA stark komprimiertes Image erstellt, welches nur die tatsÀchlich belegten Sektoren enthÀlt. Erzeugte Sicherungen belegen so nur wenig Speicherplatz.
Hat man nur eine Partition "fĂŒr alles", (also [/boot], [/home] und [/] root auf einer Partition), so wird hiermit das komplette System gesichert.
Die Sicherung weiterer Partitionen ist problemlos möglich.
Das Script startet man von einer beliebigen Live-CD/DVD (empfohlen wird Xubuntu). 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) wieder herstellen.
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):


nano backup.sh

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.
## Eine ausfĂŒhrliche Parameterbeschreibung findet man unter: https://ctaas.de/linux-install.htm
## 2018 © 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).

bck_name=$(hostname)   # Computername des zu sichernden PCs (Ă€ndern).

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

## Netzwerk verbinden:
# Verzeichnis zum einhÀngen anlegen:
mkdir /mnt/netzwerk
# 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/netzwerk/ -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/netzwerk; if [ $? = 0 ]; then echo "mount: OK"; else echo "mount error: Zugangsdaten oder Netzwerkverbindung fehlerhaft"; exit 13; fi

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

## Die eigentliche Sicherung starten:
# 1. Sichert nur den MBR (GRUB 2 Bootloader):
dd if=/dev/sda of=/mnt/netzwerk/Backup/$bck_name/$datum.mbr_grub_only.img bs=446 count=1

# 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/netzwerk/Backup/$bck_name/$datum.mbr-part-table.mpt # Alternative Variante.
 dd if=/dev/sda of=/mnt/netzwerk/Backup/$bck_name/$datum.full_mbrgrub_2048.img bs=512 count=2048

 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/netzwerk/Backup/$bck_name/$datum.gpt-table.gpt /dev/sda
fi

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

# 4a. 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)

# 4b. Inhalt des Dateisystems (alle Programme, Daten, usw.) in einem Multivolume-Archiv gepackt sichern.
time fsarchiver savefs -j$threads -s4300 -v -z7 /mnt/netzwerk/Backup/$bck_name/$datum.sda1_archiv.fsa /dev/sda1

# 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 4a 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.
#            Bei Stufe 8 verdoppelt sich die Packdauer, bei Stufe 9 (maximale LZMA-Komprimierung) verdreifacht sich diese, immer im Bezug auf Stufe 7.
#            In der Stufe 8 oder 9 erstellte Archive sind immer kleiner als mit dem ZStandard erstellte Archive (LZMA packt also langsamer und besser).

# optionale Parameter:
# [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).
# [-Z22]   = (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 Parameter [-z7], die Sicherungsdauer ist in etwa gleich.
#            Im produktiven Betrieb kann man also [-z7] problemlos weiterverwenden (ist bereits so angegeben), alternativ wĂŒrde ich nur [-Z22] empfehlen.

# 5. optional: SHA256-PrĂŒfsummen zur aktuellen Sicherung erzeugen, um spĂ€ter die IntegritĂ€t der Archive zu testen zu können:
echo ✱✱✱ Backup abgeschlossen. Erzeuge nur noch SHA-256 Checksummen.; cd /mnt/netzwerk/Backup/$bck_name; sha256sum $datum.* >$datum.checksum.txt.sha

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

2. Wiederherstellung (restore):


nano restore.sh

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 % wieder hergestellt werden kann.
## Eine ausfĂŒhrliche Parameterbeschreibung findet man unter: https://ctaas.de/linux-install.htm
## 2018 © 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).

bck_name=BackupName    # Computername der Sicherung, was wird wiederhergestellt.
bck_date=2018-03-02    # Die Sicherung von welchem Datum wird wiederhergestellt.

## Netzwerk verbinden:
# Verzeichnis zum einhÀngen anlegen:
mkdir /mnt/netzwerk
# 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/netzwerk/ -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/netzwerk; if [ $? = 0 ]; then echo "mount: OK"; else echo "mount error: Zugangsdaten oder Netzwerkverbindung fehlerhaft"; 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) wieder herstellen:
dd if=/mnt/netzwerk/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/netzwerk/Backup/$bck_name/$bck_date.mbr-part-table.mpt 2>/dev/null # Alternative Variante.
dd if=/mnt/netzwerk/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 wieder herstellen (wenn vorhanden):
sgdisk -l /mnt/netzwerk/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 aushÀngen:
umount /dev/sd* # /dev/sda1 ...

# 4a. 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)

# 4b. Erstes Dateisystem (id=0) vom Archiv auf /dev/sda1 wieder herstellen.
# id = bestimmt die Nummer vom Dateisystem falls man mehrere Dateisysteme
# in einem Archiv gesichert hat (begonnen wird bei 0).
fsarchiver restfs -j$threads -v /mnt/netzwerk/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).
# fsarchiver restfs -v /mnt/netzwerk/Backup/$bck_name/$bck_date.sda1_archiv.fsa id=0,dest=/dev/sda1,mkfs=ext4

echo ✱✱✱ Restore abgeschlossen.

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:


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 mit NTFS bzw. FAT32 empfehle ich folgendes Skript.
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.

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, 16.04, 16.10, 17.04, 17.10 und 18.04, unter Debian 8 und 9, 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.

Design:
© 2018 ctaas.de, Arno Schröder, Kahla (Impressum)