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.
- 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
-
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)
- Repository klonen:
git clone https://github.com/root9191/backuplinux.git
cd backuplinux
- Script ausführbar machen:
chmod +x backup.sh
-
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
-
-
Zu sichernde Elemente prüfen/anpassen:
-
Überprüfen Sie die Arrays
DOTFILES
undHOME_DIRS
-
Passen Sie
SYSTEM_CONFIGS
undSYSTEM_CONFIG_DIRS
an -
Überprüfen Sie die Ausschlusslisten:
CACHE_EXCLUDES=( "yay" ".cache/mozilla" ... ) LOCAL_EXCLUDES=( "share/Steam" "share/Trash" ... )
-
-
(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
sudo ./backup.sh
- Erstellt ein unkomprimiertes Backup im konfigurierten Backup-Verzeichnis
- Alle Dateien bleiben im Klartext und sind direkt zugänglich
sudo ./backup.sh -zip
- Erstellt ein komprimiertes
.tar.gz
Archiv - Spart Speicherplatz, Dateien müssen zum Zugriff entpackt werden
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
-
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
- 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 ~/
- Backup entpacken:
tar xzf backup.tar.gz
- Dateien wie gewünscht wiederherstellen
- 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
- Entpacken:
tar xzf backup.tar.gz
# 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
# 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
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/
# 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/
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"
)
Fügen Sie Verzeichnisse hinzu, die vom Backup ausgeschlossen werden sollen:
declare -a CACHE_EXCLUDES=(
# Existierende Einträge...
"node_modules"
"tmp"
)
- 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
Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE Datei für Details.
Beiträge sind willkommen! Bitte lesen Sie CONTRIBUTING.md für Details zum Prozess für Pull Requests.