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. 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. Wenn Sie diese Seite weiterhin besuchen, erklären Sie sich damit einverstanden.

ext4 backup & restore

Debian/Ubuntu von einem Live-System aus
im Netzwerk als Image sichern.

2017-02-28 © ctaas.de, A. Schröder [Impressum]


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 (es werden dabei nur die belegten Sektoren gesichert). Hat man nur eine Partition "für alles", (also [/boot], [/home] und [/] root auf einer Partition), so wird hiermit das komplette System gesichert.
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 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 auch für diese Dateisysteme 1:1 verwendet werden). 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 aber 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: http://ctaas.de/linux-install.htm
## 2017 © 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).

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
# notwendige Pakete installieren:
apt-get install cifs-utils -y
# Die Netzwerkfreigabe einhängen (mounten):
mount -t cifs //$serverip/$freigabe /mnt/netzwerk/ -orw,user=$username,password=$passwort,domain=$srv_name

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

# zu sicherndes Laufwerk aushängen:
umount /dev/sda1

## 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
 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. fsarchiver (filesystem archiver) Sicherungsprogramm installieren:
apt-get install fsarchiver -y

# 4. Inhalt des Dateisystems (alle Programme, Daten, usw.) in einem Multivolume-Archiv gepackt sichern.
fsarchiver savefs -j2 -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.
# [-j2] = (jobs), bestimmt die Anzahl der threads zum packen/entpacken. Hier sollte man die Anzahl der CPU-Kerne angeben.
# [-s4300] = (split), das Archiv in mehrere MB große Teile zerlegen. Die 4300 MB entsprechen hierbei einer Standard-DVD.
# [-v] = (verbose), ausführliche Anzeige.
# [-z9] = maximale LZMA-Komprimierung (im täglichen produktiven Betrieb ist Stufe 7 völlig ausreichend).

# optionale Parameter:
# [-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).

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: http://ctaas.de/linux-install.htm
## 2017 © Computertechnik Schröder, Arno Schröder, Kahla

## RESTORE - Die folgenden Angaben muss man anpassen:
serverip=192.168.0.100 # IP-Adresse, des Servers (wo die Sicherungen liegen).
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).

bck_name=BackupName    # Computername der Sicherung die wieder hergestellt werden soll.
bck_date=2017-02-28    # Die Sicherung vom angegebenen Datum soll wieder hergestellt werden.

## Netzwerk verbinden:
# Verzeichnis zum einhängen anlegen:
mkdir /mnt/netzwerk
# notwendige Pakete installieren:
apt-get install cifs-utils -y
# Die Netzwerkfreigabe einhängen (mounten):
mount -t cifs //$serverip/$freigabe /mnt/netzwerk/ -orw,user=$username,password=$passwort,domain=$srv_name

# 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>>e
dd if=/mnt/netzwerk/Backup/$bck_name/$bck_date.full_mbrgrub_2048.img of=/dev/sda bs=512 count=2048 2>>e

# 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>>e

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

# 3. fsarchiver (filesystem archiver) Sicherungsprogramm installieren:
apt-get install fsarchiver -y

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

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.
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.

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 sowie Debian 8.7, sowie produktiven Installationen. Diese Anleitung stellt somit eine Zusammenfassung wichtiger und empfohlener Schritte dar.
Bevor Sie eventuell Fragen stellen bitte ich sie die Dokumentation komplett zu lesen. Hinweise auf Fehler, Anregungen, Danksagungen oder ähnliches sind immer willkommen.

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