Restore-Script für Raspberry Pi SD-Karten mit Sicherheitsabfragen und Benutzerführung

Nach dem erfolgreichen Backup Ihrer Raspberry Pi SD-Karte ist es wichtig, auch ein Wiederherstellungsskript (Restore) zur Hand zu haben, falls Sie das System auf eine neue SD-Karte kopieren oder einen vorherigen Zustand wiederherstellen möchten. In

Nach dem erfolgreichen Backup Ihrer Raspberry Pi SD-Karte ist es wichtig, auch ein Wiederherstellungsskript (Restore) zur Hand zu haben, falls Sie das System auf eine neue SD-Karte kopieren oder einen vorherigen Zustand wiederherstellen möchten. In diesem Beitrag erstellen wir ein Restore-Skript, das ähnlich wie das Backup-Skript interaktiv und sicher arbeitet.


Funktionen des Restore-Skripts

Das Restore-Skript bietet folgende Funktionen:

  1. Identifikation der SD-Karten: Listet verfügbare Laufwerke zur Auswahl auf.
  2. Benutzerabfragen und Sicherheitschecks: Warnt vor dem Löschen aller Daten auf der ausgewählten SD-Karte.
  3. Restore mit Fortschrittsanzeige: Entpackt und schreibt das Image auf die Karte.
  4. Protokollierung: Erstellt eine Logdatei des Wiederherstellungsvorgangs.

Restore-Skript

Hier ist das vollständige Restore-Skript:

#!/bin/bash

# Funktion, um verfügbare SD-Karten aufzulisten
list_sd_cards() {
    echo "Verfügbare SD-Karten:"
    lsblk -d -o NAME,SIZE,MODEL | grep -E "sd|mmc"
}

# Funktion zur Bestätigung vom Benutzer
confirm() {
    while true; do
        read -p "$1 [j/N]: " response
        case "$response" in
            [jJ]) return 0 ;;
            *) return 1 ;;
        esac
    done
}

# SD-Karten auflisten
list_sd_cards

# Benutzer nach der SD-Karte fragen
read -p "Geben Sie den Gerätenamen der Ziel-SD-Karte ein (z. B. sdb): " sd_card
device="/dev/$sd_card"

# Überprüfen, ob das Gerät existiert
if [ ! -b "$device" ]; then
    echo "Fehler: $device ist kein gültiges Gerät!"
    exit 1
fi

# Benutzer warnen
echo "WARNUNG: Alle Daten auf $device werden gelöscht!"
if ! confirm "Sind Sie sicher, dass Sie fortfahren möchten?"; then
    echo "Wiederherstellung abgebrochen."
    exit 0
fi

# Benutzer nach der Backup-Datei fragen
read -p "Geben Sie den Pfad zur Backup-Datei ein (z. B. ./backups/zero1_backup_20240101_120000.img.gz): " backup_file

# Überprüfen, ob die Backup-Datei existiert
if [ ! -f "$backup_file" ]; then
    echo "Fehler: Die Datei $backup_file existiert nicht!"
    exit 1
fi

# Zielkarte auswerfen, um Schreibprobleme zu vermeiden
echo "Auswerfen von $device..."
sudo umount "${device}"* 2>/dev/null

# Benutzer um Bestätigung bitten
echo "Backup-Datei: $backup_file"
echo "Zielgerät: $device"
if ! confirm "Möchten Sie die Wiederherstellung starten?"; then
    echo "Wiederherstellung abgebrochen."
    exit 0
fi

# Wiederherstellung starten
restore_start=$(date "+%Y%m%d_%H%M%S")
log_file="./restore_${restore_start}.log"
echo "Wiederherstellung gestartet: $restore_start"
start_time=$(date +%s)

# Backup-Datei entpacken und auf SD-Karte schreiben
gunzip -c "$backup_file" | sudo dd of="$device" bs=1M status=progress conv=sparse

# Warte, bis der dd-Prozess abgeschlossen ist
wait

# Wiederherstellung prüfen
end_time=$(date +%s)
duration=$((end_time - start_time))
echo "Wiederherstellung erfolgreich abgeschlossen in $duration Sekunden!"

# Logdatei erstellen
echo "Wiederherstellung erfolgreich abgeschlossen" > "$log_file"
echo "Backup-Datei: $backup_file" >> "$log_file"
echo "Zielgerät: $device" >> "$log_file"
echo "Startzeit: $restore_start" >> "$log_file"
echo "Dauer: $duration Sekunden" >> "$log_file"

Wichtige Schritte im Skript

  1. Identifikation der SD-Karten
    Mit lsblk werden verfügbare Laufwerke angezeigt, um sicherzustellen, dass die richtige Karte ausgewählt wird:
    lsblk -d -o NAME,SIZE,MODEL | grep -E "sd|mmc"
  2. Sicherheitswarnung
    Eine Sicherheitsabfrage verhindert das versehentliche Löschen von Daten auf der falschen SD-Karte:
    echo "WARNUNG: Alle Daten auf $device werden gelöscht!" if ! confirm "Sind Sie sicher, dass Sie fortfahren möchten?"; then exit 0 fi
  3. Backup entpacken und schreiben
    Das komprimierte Backup wird entpackt und mit dd auf die SD-Karte geschrieben. Die Option status=progress zeigt den Fortschritt an:
    gunzip -c "$backup_file" | sudo dd of="$device" bs=1M status=progress conv=sparse
  4. Logdatei
    Eine Logdatei dokumentiert den Wiederherstellungsvorgang:
    echo "Wiederherstellung erfolgreich abgeschlossen" > "$log_file"

SD-Karten-Wiederherstellung leicht gemacht

Regelmäßige Backups sind essenziell, aber ebenso wichtig ist die Möglichkeit, diese Backups bei Bedarf schnell und sicher wiederherzustellen. In diesem Beitrag zeigen wir Ihnen, wie Sie mit einem einfachen Bash-Skript Ihre Raspberry Pi SD-Karten zuverlässig wiederherstellen können.


Warum ein Restore-Skript?

Ein automatisiertes Restore-Skript sorgt für:

  • Sicherheit: Es warnt vor potenziellen Datenverlusten.
  • Effizienz: Mit Fortschrittsanzeigen und automatisierten Abläufen spart es Zeit.
  • Protokollierung: Eine Logdatei dokumentiert den Vorgang, was besonders in produktiven Umgebungen hilfreich ist.

Einrichtung und Nutzung

  1. Skript vorbereiten
    Kopieren Sie das oben angegebene Skript auf Ihren Server und machen Sie es ausführbar:
    chmod +x restore_script.sh
  2. Restore starten
    Führen Sie das Skript aus:
    ./restore_script.sh Folgen Sie den interaktiven Anweisungen, um die Ziel-SD-Karte und die Backup-Datei auszuwählen.
  3. Wiederherstellung überwachen
    Das Skript zeigt während der Wiederherstellung den Fortschritt an. Nach Abschluss wird eine Logdatei erstellt.

Mit diesem Restore-Skript können Sie Ihre Raspberry Pi SD-Karten schnell und sicher wiederherstellen. Die interaktive Benutzerführung und die Sicherheitsabfragen machen den Prozess benutzerfreundlich und verhindern versehentliche Datenverluste. Zusammen mit dem zuvor vorgestellten Backup-Skript haben Sie ein zuverlässiges Toolkit für Ihre Raspberry Pi-Projekte.

Leave a Reply

Your email address will not be published. Required fields are marked *

wetransco.de
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.