Sicheres Backup von Raspberry Pi SD-Karten auf einem Server

Einführung SD-Karten, die in Raspberry Pi-Geräten verwendet werden, sind oft ein kritischer Bestandteil der Systemkonfiguration. Aufgrund ihrer Anfälligkeit für Datenverlust, sei es durch Verschleiß oder plötzliche Ausfälle, ist es essenziell, regelmäßig Backups anzulegen. In diesem

Einführung

SD-Karten, die in Raspberry Pi-Geräten verwendet werden, sind oft ein kritischer Bestandteil der Systemkonfiguration. Aufgrund ihrer Anfälligkeit für Datenverlust, sei es durch Verschleiß oder plötzliche Ausfälle, ist es essenziell, regelmäßig Backups anzulegen. In diesem Beitrag ist beschrieben, wie Sie ein benutzerfreundliches Bash-Skript verwenden können, um Ihre SD-Karten-Daten sicher auf einem Server zu speichern. Dies gewährleistet, dass Sie im Falle eines Datenverlusts eine funktionierende Sicherung zur Verfügung haben.


Warum Backups für SD-Karten wichtig sind

SD-Karten sind nicht nur begrenzt in ihrer Lebensdauer, sondern auch anfällig für physische Schäden und Dateisystemfehler. Ein regelmäßiges Backup schützt vor:

  • Verlust wichtiger Konfigurationen und Daten.
  • Unerwarteten Systemausfällen.
  • Aufwendiger Neukonfiguration nach einem SD-Kartenausfall.

Ein automatisiertes Skript, wie das hier vorgestellte, erleichtert den Backup-Prozess erheblich.


Funktionsweise des Backup-Skripts

Das vorgestellte Skript erfüllt mehrere wichtige Aufgaben:

  1. Identifikation der SD-Karte: Listet alle verfügbaren Laufwerke auf, sodass Sie die SD-Karte gezielt auswählen können.
  2. Benutzerabfragen: Ermöglicht eine interaktive Eingabe von Backup-Namen und Zielverzeichnissen.
  3. Backup-Erstellung mit Fortschrittsanzeige: Nutzt das leistungsfähige dd-Tool, um ein komprimiertes Abbild Ihrer SD-Karte zu erstellen.
  4. Logdateien: Protokolliert wichtige Details des Backup-Vorgangs, um Transparenz und Nachvollziehbarkeit zu gewährleisten.

Skript im Detail erklärt

Hier ist das vollständige 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 SD-Karte ein (z. B. sdb): " sd_card
device="/dev/$sd_card"

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

# SD-Kartengröße anzeigen
size=$(blockdev --getsize64 "$device")
size_mb=$(($size / 1048576))
echo "SD-Kartengröße: $size_mb MB"

# Benutzer nach einem Backup-Namen fragen
read -p "Geben Sie einen Namen für das Backup ein (z. B. zero1): " backup_name
if [ -z "$backup_name" ]; then
    echo "Fehler: Kein Backup-Name angegeben!"
    exit 1
fi

# Benutzer nach einem Zielverzeichnis fragen
read -p "Geben Sie ein Zielverzeichnis für das Backup ein (Standard: ./backups): " backup_dir
backup_dir=${backup_dir:-./backups}

# Zielverzeichnis erstellen, falls nicht vorhanden
mkdir -p "$backup_dir"

# Dateiname des Backups
backup_start=$(date "+%Y%m%d_%H%M%S")
backup_file="$backup_dir/${backup_name}_backup_${backup_start}.img.gz"
log_file="$backup_dir/backup_${backup_start}.log"

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

# Backup starten
echo "Backup gestartet: $backup_start"
start_time=$(date +%s)

# Backup mit Fortschrittsanzeige
sudo dd if="$device" bs=1M status=progress conv=sparse | gzip > "$backup_file"

# Warte, bis der dd-Prozess abgeschlossen ist
wait

# Backup-Ergebnis prüfen
end_time=$(date +%s)
duration=$((end_time - start_time))
echo "Backup erfolgreich abgeschlossen in $duration Sekunden: $backup_file"

# Logdatei erstellen
echo "Backup erfolgreich abgeschlossen" > "$log_file"
echo "Backup-Name: $backup_name" >> "$log_file"
echo "Startzeit: $backup_start" >> "$log_file"
echo "Dauer: $duration Sekunden" >> "$log_file"
echo "Backup-Datei: $backup_file" >> "$log_file"
echo "Größe: $size_mb MB" >> "$log_file"


Wichtige Skriptbestandteile

  1. Identifikation der SD-Karten
    Der Befehl lsblk listet alle verfügbaren Laufwerke, ihre Größen und Bezeichnungen auf. Dies hilft, die SD-Karte eindeutig zu identifizieren.bashCode kopierenlsblk -d -o NAME,SIZE,MODEL | grep -E "sd|mmc"
  2. Benutzerinteraktion
    Das Skript fragt interaktiv nach dem Gerätenamen, einem Backup-Namen und dem Zielverzeichnis. Falls keine Eingabe erfolgt, wird ein Standardwert verwendet:bashCode kopierenread -p "Geben Sie ein Zielverzeichnis für das Backup ein (Standard: ./backups): " backup_dir backup_dir=${backup_dir:-./backups}
  3. Backup-Prozess mit dd und gzip
    dd erstellt ein Abbild der SD-Karte, während gzip die Datei komprimiert, um Speicherplatz zu sparen. Die Fortschrittsanzeige (status=progress) ermöglicht eine transparente Überwachung:bashCode kopierensudo dd if="$device" bs=1M status=progress conv=sparse | gzip > "$backup_file"
  4. Protokollierung
    Ein detailliertes Logfile speichert wichtige Informationen wie Backup-Dauer, Name und Größe, um den Prozess nachvollziehbar zu machen:bashCode kopierenecho "Backup erfolgreich abgeschlossen" > "$log_file"

Einrichtung und Verwendung

Voraussetzungen

  • Ein Server mit genügend Speicherplatz für das Backup.
  • Ein Raspberry Pi mit SSH-Zugang.
  • Basiskenntnisse in Bash-Skripting und der Linux-Kommandozeile.

Schritte zur Nutzung

  1. Kopieren Sie das Skript auf Ihren Server.
  2. Stellen Sie sicher, dass Sie Schreibrechte für das Zielverzeichnis besitzen.
  3. Führen Sie das Skript aus:bashCode kopierenchmod +x backup_script.sh ./backup_script.sh
  4. Folgen Sie den interaktiven Anweisungen, um die SD-Karte zu sichern.

Vorteile dieses Ansatzes

  • Zeitersparnis: Automatische Erkennung und einfache Bedienung.
  • Platzsparend: Verwendung von gzip zur Komprimierung.
  • Sicherheit: Alle Schritte werden protokolliert, um Fehler schnell zu diagnostizieren.

Fazit

Ein regelmäßiges Backup Ihrer Raspberry Pi SD-Karte ist entscheidend, um Datenverluste zu vermeiden. Mit dem vorgestellten Skript sichern Sie Ihre SD-Karten-Daten einfach und zuverlässig auf einem Server. Die Protokollierung und die Fortschrittsanzeige machen den Prozess transparent und anwenderfreundlich.

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.