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.shin 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
DOTFILESundHOME_DIRS -
Passen Sie
SYSTEM_CONFIGSundSYSTEM_CONFIG_DIRSan -
Ü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-pwDies 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.gzArchiv - Spart Speicherplatz, Dateien müssen zum Zugriff entpackt werden
sudo ./backup.sh -pw- Erstellt ein verschlüsseltes
.tar.gz.gpgArchiv - 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.txtGNOME:
# 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.