Don’t get Borged

Solides Backup mit BorgBackup (Arch Linux & Synology NAS)

Mein ThinkBook ist endlich fertig eingerichtet und bis ins letzte Detail customized (Omarchy!). Nach so viel Arbeit wollte ich aber keine Fertig-Lösung installieren, sondern etwas Cooles bauen, bei dem ich auch wieder etwas dazu lerne. Es sollte mit reinen Bordmitteln funktionieren und sich auf alle Linux-Kisten im Haushalt übertragen lassen. Meine Wahl fiel sofort auf BorgBackup.

In diesem Guide zeige ich dir Schritt für Schritt, wie du dein Home-Verzeichnis vollautomatisch auf ein Synology NAS sicherst.

Das Szenario

  • Client: ThinkBook mit Arch Linux (Omarchy)
  • Server: Synology NAS DS1821+
  • Ziel: Verschlüsseltes Backup via SSH

Schritt 1: Installation auf dem Client (Arch)

Da ich Arch Linux nutze, holen wir uns Borg und die FUSE-Treiber (wichtig für den Restore) direkt via pacman.

sudo pacman -S borg python-pyfuse3 fuse3 openssh

Hinweis: Auf dem Synology NAS muss Borg ebenfalls installiert sein (via SynoCommunity Paketquelle).


Schritt 2: Passwortloser SSH-Zugang

Damit das Backup später automatisch läuft, muss deine Client ohne Passworteingabe auf das NAS kommen.

  1. SSH-Schlüsselpaar erzeugen (falls noch nicht vorhanden):

    ssh-keygen -t ed25519 -C "client"
    

    (Drücke einfach Enter, wenn er fragt wo gespeichert werden soll. Für vollautomatische Backups ohne SSH-Agent lass die Passphrase leer).

  2. Schlüssel auf das NAS kopieren: Hier musst du einmalig dein Synology-Passwort eingeben.

    ssh-copy-id user@IP_NAS
    
  3. Testen: Der Login muss jetzt ohne Passwort klappen:

    ssh user@IP_NAS
    

Schritt 3: Das Repository initialisieren

Jetzt erstellen wir den verschlüsselten „Tresor“ auf dem NAS.

Wichtig: Da Synology Apps an komischen Orten speichert, müssen wir den Pfad zu Borg (–remote-path) oft manuell angeben.

Führe dies auf deinem Clienten aus:

borg init --encryption=repokey \
    --remote-path=/usr/local/bin/borg \
    ssh://user@IP_NAS~/Backups/client-repo
  • Du wirst aufgefordert, ein Repo-Passwort zu vergeben. Schreib es dir auf! Ohne dieses Passwort sind die Daten Müll.

Schritt 4: Das erste Backup erstellen

Jetzt schieben wir die Daten rüber. Der erste Lauf dauert etwas, alle folgenden sind rasend schnell.

borg create --stats --progress --compression lz4 \
    --remote-path=/usr/local/bin/borg \
    ssh://user@IP_NAS~/Backups/client-repo::{now} \
    ~/ \
    --exclude '*/.cache' \
    --exclude '*/Downloads' \
    --exclude '*/.local/share/Trash'

Schritt 5: Automatisierung (Set & Forget)

Niemand hat Lust, Befehle zu tippen. Wir lassen das System die Arbeit machen.

A. Das Skript erstellen

Erstelle die Datei ~/Pfad_zum_Script/backup-clientmit deinem Editor (z.B. nvim):

#!/bin/bash
# ~/Pfad_zum Script/backup-client

# Konfiguration
export BORG_PASSPHRASE='DEIN_GEHEIMES_REPO_PASSWORT' *hier gibt es eine andere Lösung
export BORG_REPO='ssh://user@IP_NAS ~/Backups/client-repo'

echo "🚀 Starte Backup..."

borg create --stats --compression lz4 \
--remote-path=/usr/local/bin/borg \
$BORG_REPO::{now} \
~/ \
--exclude '*/.cache' \
--exclude '*/Downloads' \
--exclude '*/.local/share/Trash'

echo "🧹 Räume alte Backups auf..."

borg prune --list --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
--remote-path=/usr/local/bin/borg \
$BORG_REPO

echo "✅ Fertig!"

Mache das Skript ausführbar:

chmod +x ~/Pfad_zum_Script/backup-client

B. Den Timer stellen (Systemd)

Wir nutzen Systemd statt Cron, weil es zuverlässiger ist, wenn der Laptop mal aus war.

Service-Datei: ~/.config/systemd/user/borg-backup.service

[Unit]
Description=Borg Backup Service

[Service]
Type=oneshot
ExecStart=/Pfad_zum_Script/backup-client

Timer-Datei: ~/.config/systemd/user/borg-backup.timer

[Unit]
Description=Tägliches Backup

[Timer]
OnCalendar=19:00
Persistent=true
RandomizedDelaySec=10m

[Install]
WantedBy=timers.target

Service aktivieren:
systemctl --user enable --now borg-backup.timer


Schritt 6: Der Notfall (Daten wiederherstellen)

Ein Backup ist nur so gut wie der Restore. Borg kann Backups als Ordner einbinden (mounten).

  1. Mountpoint erstellen:

    mkdir -p ~/mnt/backup
    
  2. Backup einhängen:

    borg mount \
       --remote-path=/usr/local/bin/borg \
       ssh://user@IP_NAS/~/Backups/client-repo \
       ~/mnt/backup
    
  3. Daten kopieren: Jetzt kannst du mit dem Dateimanager einfach in ~/mnt/backup gehen, deine alte Datei suchen und rüberkopieren.
  4. Aushängen:

    borg umount ~/mnt/backup
    

Fazit: Dein System sichert sich jetzt jeden Tag von selbst, inkrementell und verschlüsselt. So muss ein modernes Linux-Setup aussehen! 🚀


screenshot 2025 12 14 20 11 04

screenshot 2025 12 14 20 11 04


Lösung: Passwort im Klartext

*Das Passwort sicher hinterlegen

Damit das Skript dieses Repo-Passwort kennt, schreiben wir es nicht ins Skript, sondern in eine geschützte Datei. Wir machen das direkt im Terminal:

# Datei erstellen und Variable setzen
echoexport BORG_PASSPHRASE='DEIN_GEHEIMES_REPO_PASSWORT'> ~/.borg-secret 
# Datei absichern (nur DU darfst sie lesen/schreiben) 
chmod 600 ~/.borg-secret

Im Script die Zeile

export BORG_PASSPHRASE='DEIN_GEHEIMES_REPO_PASSWORT'

mit dieser ersetzen:

source /home/USER/.borg-secret

Kommentare: 0

Interesse an einer Diskussion? Schreibe einen Kommentar. ▼