Rsync – Systembackup – ohne /home

Ablauf erklärt:

Beim ersten Durchlauf:

  • Kopiert alle Dateien → dauert lange

Beim zweiten Durchlauf:

  • rsync prüft jede Datei (Größe + Zeitstempel)
  • Überträgt nur geänderte Dateien → geht schnell

Mit rsync (sehr zuverlässig, einfach rückspielbar)

Sichert alles außer temporäre Verzeichnisse und außer /home in ein Zielverzeichnis oder auf eine externe Platte. Meine Ziel-Platte ist in diesem Beispiel: sda, speziell das eingehängte Mount /mnt/exthdd1

Backup erstellen:

mkdir -p /mnt/exthdd1/Backup/Fedora-Systembackup/

Da ich mit mehreren Systemen arbeite und auch schnell Mal wechsle, verwende ich eindeutige Namen wie z.B.: /Fedora-Systembackup/ oder /Kubuntu-Systembackup/ oder /CachyOS-Systembackup/ oder /Bazzite-Systembackup/.

cd /home/knilix && sudo nano fedora-systembackup.sh

Folgendes trage ich ein:

#!/bin/bash
# System-Backup ohne /home
# Quelle und Ziel definieren

SRC="/"

## Unter Bazzite (Beispiel):
#DST="/run/media/system/Data/Backup/Bazzite-Systembackup/"

## Normale Distributionen:
DST="/mnt/exthdd1/Backup/Fedora-Systembackup/"

# Prüfen, ob Ziel existiert, sonst anlegen
mkdir -p "$DST"

# rsync Optionen:
# -a  : Archivmodus (Bewahrung von Rechten/Links/Owner usw.)
# -v  : Verbose
# -h  : Menschenlesbare Ausgabe
# --delete : Entfernt Dateien im Ziel, die in der Quelle nicht mehr existieren
# --numeric-ids : WICHTIG für System-Backups, bewahrt UID/GID 1:1
# --one-file-system : Verhindert das Kopieren anderer Dateisysteme (z. B. /proc, /sys, /run, /mnt, /media …)

rsync -avh --numeric-ids --delete --progress --one-file-system \
    --exclude="/home/*" \
    --exclude="/proc/" \
    --exclude="/sys/" \
    --exclude="/dev/" \
    --exclude="/run/" \
    --exclude="/tmp/" \
    --exclude="/mnt/" \
    --exclude="/media/" \
    --exclude="/lost+found/" \
    "$SRC" \
    "$DST"

echo "Fedora-Systembackup abgeschlossen!"
  • sichert mein komplettes System außer /home
  • Dateien, Berechtigungen, Symlinks und ACLs bleiben erhalten
  • Perfekt für Wiederherstellung per Live-Stick

Technische Erläuterung – speziell Bazzite: Bazzite basiert auf einem unveränderlichen (immutable) Systemlayout. Persistente Änderungen am Root-Dateisystem – wie das Anlegen eigener Mountpunkte unter /mnt oder /media – sind daher nicht ohne Weiteres möglich und überstehen in der Regel keinen Neustart. Bereits erkannte oder zuvor eingerichtete Datenträger werden während des Systemstarts jedoch automatisch eingebunden. Der automatische Mount erfolgt standardisiert unter /run/media/system/, weshalb dieser Pfad unter Bazzite als zuverlässiger Zielpfad für lokal angeschlossene Laufwerke genutzt werden kann.

Bei Verwendung von Bazzite müssen die Kommentarzeichen (#) einfach getauscht werden!

## Unter Bazzite (/run/media/system/):
DST="/run/media/system/Data/Backup/Bazzite-Systembackup/"

## Normale Distributionen (/mnt/):
#DST="/mnt/exthdd1/Backup/Fedora-Systembackup/"

Datei ausführbar machen:

cd /home/knilix && sudo chmod +x fedora-systembackup.sh

Ausführen:

sudo ./fedora-systembackup.sh

Das Script wird mit sudo ausgeführt, damit auch alle Systemdateien und /root gesichert werden. Ohne root würden viele Systemverzeichnisse nicht kopiert, und das Backup wäre unvollständig.

Sobald der Befehl einmal durchgelaufen ist, arbeitet er bei allen weiteren Durchläufen inkrementell – also übernimmt er nur noch die Änderungen in den Quellordnern. Genau dafür ist rsync da – eine der genialsten Erfindungen seit Unix!

Info zum Script:

rsync -avh --delete führt standardmäßig inkrementelle Synchronisation durch. Das bedeutet:

  • Nur geänderte oder neue Dateien werden übertragen.
  • Unveränderte Dateien werden nicht erneut kopiert.
  • Mit --delete werden Dateien, die im Quellverzeichnis gelöscht wurden, auch im Ziel gelöscht → Spiegelung. → Für mich ist das so ausreichend! Ich bin hierbei NICHT vor versehentlich gelöschten Dateien abgesichert, wenn das Rsync erneut gestartet wurde!



Das Restore

  1. Grundinstallation des Systems durchführen
    • Ein Live-Stick würde auch passen, aber ich installiere immer zuerst das Grundsystem, da ich häufig zwischen verschiedenen Distributionen wechsle – und weil meine Systemplatte verschlüsselt ist.
  2. Backup-Platte einhängen.
  3. Restore-Befehl ausführen.
  4. Nach Abschluss System neu starten.

Restore für normale Systeme:

sudo rsync -avh --numeric-ids --progress --delete /mnt/exthdd1/Backup/Fedora-Systembackup/ /
sudo reboot

Restore für Bazzite:

sudo rsync -avh --numeric-ids --progress --delete /run/media/system/Data/Backup/Bazzite-Systembackup/ /
sudo reboot