====== Script für Backup von Disk unter macOS ====== Um ein Image auf eine Micro SD Karte oder einen USB Stick zu schreiben, gibt es zahlreiche Tools wie zum Beispiel **balenaEtcher** oder **Raspberry Pi Imager**. Für den Weg in die andere Richtung gibt es leider nichts brauchbares. Mit diesem Script kann somit jeder ein Backup von einer Micro SD Karte oder einen USB Stick anlegen. ===== Terminal öffnen und editor starten ===== nano DiskBackup.sh ===== Diesen Inhalt kopieren ===== #!/bin/bash # Prüfen ob Script auf macOS läuft if [[ "$(uname)" != "Darwin" ]]; then echo "❌ Dieses Script funktioniert nur unter macOS." exit 1 fi echo "======================================" echo " Disk Backup Script für macOS" echo "======================================" echo "" # Laufwerke anzeigen echo "📦 Verfügbare externe Laufwerke:" echo "" diskutil list | awk ' /^\/dev\/disk[0-9]+/ { show = 1 if ($0 ~ /\(internal, physical\)/) show = 0 if ($0 ~ /\(synthesized\)/) show = 0 if ($0 ~ /\(disk image\)/) show = 0 } show { print } ' echo "" # Disknummer abfragen read -p "👉 Bitte DiskNumber eingeben (z.B. 4 für /dev/disk4): " DISK_NUMBER # Validierung if ! [[ "$DISK_NUMBER" =~ ^[0-9]+$ ]]; then echo "❌ Ungültige DiskNumber." exit 1 fi DISK="/dev/disk${DISK_NUMBER}" RDISK="/dev/rdisk${DISK_NUMBER}" # Prüfen ob Device existiert if [[ ! -e "$DISK" ]]; then echo "❌ Laufwerk $DISK existiert nicht." exit 1 fi # Backup-Name abfragen read -p "💾 Backup-Name eingeben (ohne Endung): " BACKUP_NAME # Leerzeichen ersetzen BACKUP_NAME=$(echo "$BACKUP_NAME" | tr ' ' '_') if [[ -z "$BACKUP_NAME" ]]; then echo "❌ Backup-Name darf nicht leer sein." exit 1 fi # Aktuellen Benutzer automatisch ermitteln CURRENT_USER=$(whoami) # Zielpfad OUTPUT_FILE="/Users/${CURRENT_USER}/Downloads/${BACKUP_NAME}.img.gz" echo "" echo "======================================" echo "📋 Zusammenfassung" echo "Laufwerk: $DISK" echo "Backup-Datei: $OUTPUT_FILE" echo "======================================" echo "" read -p "▶️ Backup starten? (j/n): " CONFIRM if [[ ! "$CONFIRM" =~ ^[JjYy]$ ]]; then echo "❌ Abgebrochen." exit 0 fi echo "" echo "🔓 Unmounting $DISK ..." diskutil unmountDisk "$DISK" if [[ $? -ne 0 ]]; then echo "❌ Fehler beim Unmount." exit 1 fi echo "" echo "📀 Erstelle Image..." echo "⚠️ Du wirst ggf. nach deinem Passwort gefragt." sudo dd if="$RDISK" bs=4m status=progress | gzip > "$OUTPUT_FILE" # Prüfen ob dd erfolgreich war if [[ ${PIPESTATUS[0]} -ne 0 ]]; then echo "❌ Fehler beim Erstellen des Images." exit 1 fi echo "" echo "⏏️ Werfe Laufwerk aus..." diskutil eject "$DISK" echo "" echo "✅ Backup abgeschlossen!" echo "📁 Datei gespeichert unter:" echo "$OUTPUT_FILE" Mit Control+X speichern und verlassen. ===== Script ausführbar machen ===== chmod +x DiskBackup.sh ===== Ausführen ===== ./DiskBackup.sh Abbruch ist jederzeit mit Control+C möglich.