Skip to content

root9191/BackupLinux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

Linux System Backup Script

Ein Bash-Script zum Backup wichtiger System- und Benutzerdaten unter Linux. Das Script wurde primär für Arch Linux und dessen Derivate entwickelt und getestet.

🚀 Features

  • Backup von Systemkonfigurationen (/etc)
  • Backup von Benutzer-Dotfiles
  • Backup von wichtigen Home-Verzeichnissen
  • Sicherung von Paketlisten (Pacman/AUR/Flatpak)
  • Desktop-Environment spezifische Backups (GNOME/KDE/XFCE)
  • SSH-Konfiguration Backup (optional mit Schlüsseln)
  • Komprimierung der Backups (optional)
  • Verschlüsselung der Backups (optional)
  • Detailliertes Logging
  • Intelligente Fehlerbehandlung

📋 Voraussetzungen

  • Arch Linux oder Arch-basierte Distribution

  • sudo-Rechte

  • Folgende Basis-Abhängigkeiten:

    • rsync
    • pigz (parallele Komprimierung)
    • gnupg (für Verschlüsselung)
    • expac (für detaillierte Paketinformationen)

🔧 Ersteinrichtung

  1. Repository klonen:
git clone https://github.com/root9191/backuplinux.git
cd backuplinux
  1. Script ausführbar machen:
chmod +x backup.sh
  1. Konfiguration anpassen:

    • Öffnen Sie backup.sh in einem Texteditor

    • Passen Sie folgende Hauptvariablen an:

      BASE_BACKUP_DIR="/mnt/Daten/[username]/backup"  # Backup-Zielverzeichnis
      TEMP_BASE_DIR="/var/tmp/bkp"                    # Temporäres Verzeichnis
      LOG_DIR="/home/[username]/Dokumente"            # Log-Verzeichnis
  2. Zu sichernde Elemente prüfen/anpassen:

    • Überprüfen Sie die Arrays DOTFILES und HOME_DIRS

    • Passen Sie SYSTEM_CONFIGS und SYSTEM_CONFIG_DIRS an

    • Überprüfen Sie die Ausschlusslisten:

      CACHE_EXCLUDES=( "yay" ".cache/mozilla" ... )
      LOCAL_EXCLUDES=( "share/Steam" "share/Trash" ... )
  3. (Optional) Passwort für verschlüsselte Backups einrichten:

sudo ./backup.sh -create-pw

Dies erstellt zwei wichtige Dateien:

  • ~/.backup_password: Enthält das verschlüsselte Backup-Passwort
  • ~/.backup_key: Verschlüsselungsschlüssel für das Passwort

⚠️ Wichtig: Bewahren Sie beide Dateien sicher auf! Sie werden für die Wiederherstellung verschlüsselter Backups benötigt.

📦 Backup-Erstellung

1. Einfaches Backup (unverschlüsselt)

sudo ./backup.sh
  • Erstellt ein unkomprimiertes Backup im konfigurierten Backup-Verzeichnis
  • Alle Dateien bleiben im Klartext und sind direkt zugänglich

2. Komprimiertes Backup

sudo ./backup.sh -zip
  • Erstellt ein komprimiertes .tar.gz Archiv
  • Spart Speicherplatz, Dateien müssen zum Zugriff entpackt werden

3. Verschlüsseltes Backup

sudo ./backup.sh -pw
  • Erstellt ein verschlüsseltes .tar.gz.gpg Archiv
  • Maximale Sicherheit für sensitive Daten
  • Benötigt das eingerichtete Backup-Passwort zur Wiederherstellung

Backup-Protokollierung

  • Alle Backup-Vorgänge werden protokolliert in:

    • $LOG_DIR/backup.log: Hauptprotokoll
    • $LOG_DIR/backup_error.log: Fehlerprotokoll
  • Die letzten 5 Protokolldateien werden automatisch rotiert

🔄 Backup-Wiederherstellung

1. Unverschlüsselte Backups

A. Unkomprimiertes Backup

  • Dateien können direkt aus dem Backup-Verzeichnis kopiert werden
# Beispiel: Wiederherstellen von Dotfiles
cp -a /pfad/zum/backup/.zshrc ~/.zshrc
cp -a /pfad/zum/backup/.config ~/

B. Komprimiertes Backup

  1. Backup entpacken:
tar xzf backup.tar.gz
  1. Dateien wie gewünscht wiederherstellen

2. Verschlüsselte Backups

  1. Backup entschlüsseln:
# Wenn Passwortdateien vorhanden sind:
gpg --output backup.tar.gz --decrypt backup.tar.gz.gpg

# Wenn manuelles Passwort eingegeben werden soll:
gpg --decrypt backup.tar.gz.gpg > backup.tar.gz
  1. Entpacken:
tar xzf backup.tar.gz

3. Spezifische Wiederherstellungen

System-Konfigurationen

# fstab (Vorsicht!)
sudo cp backup/etc/fstab /etc/fstab
sudo mount -a  # Zum Testen

# NetworkManager-Verbindungen
sudo cp -r backup/etc/NetworkManager/system-connections/* /etc/NetworkManager/system-connections/
sudo chmod 600 /etc/NetworkManager/system-connections/*
sudo systemctl restart NetworkManager

Paketinstallation

# System-Pakete
sudo pacman -S --needed - < pacman_packages.txt

# AUR-Pakete
yay -S --needed - < aur_packages.txt

# Flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
while read -r app; do flatpak install -y flathub $app; done < flatpak_packages.txt

Desktop-Umgebung

GNOME:

# Komplette Einstellungen
dconf load / < backup/gnome/all-settings.dconf

# Tastenkürzel
dconf load /org/gnome/desktop/wm/keybindings/ < backup/gnome/keyboard-shortcuts.dconf
dconf load /org/gnome/settings-daemon/plugins/media-keys/ < backup/gnome/media-keys.dconf

# Extensions
cp -r backup/gnome/extensions/* ~/.local/share/gnome-shell/extensions/

KDE:

cp -r backup/kde/plasma* ~/.config/
cp -r backup/kde/kde* ~/.config/

Persönliche Daten

# Wichtige Verzeichnisse
cp -r backup/Documents ~/
cp -r backup/Pictures ~/
cp -r backup/.config ~/

# Browser-Profile
cp -r backup/.mozilla ~/
cp -r backup/.config/google-chrome ~/.config/

⚙️ Anpassung und Erweiterung

Eigene Verzeichnisse hinzufügen

Fügen Sie Ihre eigenen Verzeichnisse zum Backup hinzu, indem Sie die Arrays im Script erweitern:

# Für Home-Verzeichnisse
declare -a HOME_DIRS=(
    # Existierende Einträge...
    "MeineSpiele"
    "Entwicklung"
)

# Für System-Konfigurationen
declare -a SYSTEM_CONFIGS=(
    # Existierende Einträge...
    "meine-config"
)

Ausschlüsse hinzufügen

Fügen Sie Verzeichnisse hinzu, die vom Backup ausgeschlossen werden sollen:

declare -a CACHE_EXCLUDES=(
    # Existierende Einträge...
    "node_modules"
    "tmp"
)

⚠️ Bekannte Einschränkungen

  • Das Script wurde primär für Arch Linux und dessen Derivate entwickelt
  • Verschlüsselte Backups benötigen zusätzlichen Speicherplatz während der Erstellung
  • Bei großen Backup-Verzeichnissen kann der Prozess einige Zeit in Anspruch nehmen

⚖️ Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE Datei für Details.

🤝 Beitragen

Beiträge sind willkommen! Bitte lesen Sie CONTRIBUTING.md für Details zum Prozess für Pull Requests.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages