Readme.md aktualisiert

This commit is contained in:
Ratatoskr 2025-12-28 15:29:27 +00:00
parent d5d5a6e8ad
commit d74b130afd

228
Readme.md
View File

@ -1,203 +1,159 @@
# Restic System Backup Konfiguration & Wiederherstellung # Restic System Backup Konfiguration & Wiederherstellung
Dieses Repository enthält die Konfiguration für automatisierte System-Backups mit **Restic**, inklusive **systemd-Service**, **Timer** und **Backup-Skript**. Dieses Repository enthält die Konfiguration für automatisierte **System-Backups mit Restic**,
inklusive **systemd-Service**, **Timer** und **Backup-Skript**.
Das Setup nutzt **rclone** als Backend (z. B. Nextcloud).
--- ---
## 1. Voraussetzungen installieren ## 1. Voraussetzungen
### 1.1 Pakete installieren ### 1.1 Benötigte Pakete installieren
Führe folgende Befehle **als Root** aus: Als Root ausführen:
```bash ```bash
sudo pacman -S restic rclone fuse jq curl pacman -S restic rclone fuse jq curl
``` ```
1.2 rclone als Root konfigurieren 1.2 rclone als Root konfigurieren (wichtig!)
Da Restic das Repository über rclone anspricht, muss rclone als Root konfiguriert werden: Da das Backup als root läuft, muss rclone auch im Root-Kontext konfiguriert sein:
```bash ```bash
sudo -i sudo -i
rclone config rclone config
``` ```
Remote testen:
Folge den Anweisungen, um dein Cloud-Storage (z. B. Cloud.Michaelis.Digital) einzurichten.
Wichtig: Teste die Verbindung mit:
```bash ```bash
rclone lsd Cloud.Michaelis.Digital: rclone lsd Cloud.Michaelis.Digital:
``` ```
2. Repository klonen und Dateien ablegen 2. Repository klonen und Dateien ablegen
2.1 Repository klonen
```bash ```bash
git clone <DEINE-GIT-URL> /opt/backup-config git clone <DEINE-GIT-URL> /opt/backup-config
cd /opt/backup-config cd /opt/backup-config
``` ```
Dateien installieren
2.2 Dateien kopieren
Kopiere die Konfigurationsdateien an die richtigen Orte:
```bash ```bash
# Service und Timer # systemd Units
cp restic-backup.service /etc/systemd/system/ cp restic-backup.service /etc/systemd/system/
cp restic-backup.timer /etc/systemd/system/ cp restic-backup.timer /etc/systemd/system/
```
# Backup-Skript # Backup-Skript
cp restic-backup /usr/local/bin/ ```bash
chmod +x /usr/local/bin/restic-backup cp restic-backup /usr/local/bin/restic-backup
chmod 750 /usr/local/bin/restic-backup
# Rechte setzen ```
sudo chown ratatoskr:ratatoskr /usr/local/bin/restic-backup Rechte setzen
sudo chmod 750 /usr/local/bin/restic-backup ```bash
sudo chown root:root /etc/systemd/system/restic-backup.service chown ratatoskr:ratatoskr /usr/local/bin/restic-backup
sudo chmod 644 /etc/systemd/system/restic-backup.service chown root:root /etc/systemd/system/restic-backup.service
sudo chown root:root /etc/systemd/system/restic-backup.timer chown root:root /etc/systemd/system/restic-backup.timer
sudo chmod 644 /etc/systemd/system/restic-backup.timer chmod 644 /etc/systemd/system/restic-backup.service
chmod 644 /etc/systemd/system/restic-backup.timer
``` ```
3. Secrets anlegen 3. Secrets anlegen
3.1 Restic-Passwortdatei 3.1 Restic-Passwortdatei
Erstelle die Passwortdatei für Restic (nur für Root lesbar!):
```bash ```bash
mkdir -p /home/ratatoskr mkdir -p /home/ratatoskr
echo "DEIN_RESTIC_REPO_PASSWORT" > /home/ratatoskr/.restic-pass echo "DEIN_RESTIC_REPO_PASSWORT" > /home/ratatoskr/.restic-pass
chmod 600 /home/ratatoskr/.restic-pass chmod 600 /home/ratatoskr/.restic-pass
chown root\:root /home/ratatoskr/.restic-pass chown root:root /home/ratatoskr/.restic-pass
``` ```
3.2 Umgebungsvariablen (optional) 3.2 Umgebungsvariablen (empfohlen)
Falls du die Umgebungsvariablen global setzen willst (z. B. für manuelle Backups), füge folgende Zeilen zu /etc/environment hinzu:
```Bash
RESTIC_REPOSITORY=rclone\:Cloud.Michaelis.Digital\:Restic/backup-repo
RESTIC_PASSWORD_FILE=/home/ratatoskr/.restic-pass
```
Lade die Variablen neu:
```bash ```bash
export RESTIC_REPOSITORY=rclone:Cloud.Michaelis.Digital:Restic/backup-repo
source /etc/environment export RESTIC_PASSWORD_FILE=/home/ratatoskr/.restic-pass
``` ```
Diese Variablen können z. B. in:
/etc/profile.d/restic.sh
oder im systemd-Service
gesetzt werden.
4. systemd aktivieren 4. systemd aktivieren
```bash ```bash
systemctl daemon-reload systemctl daemon-reload
systemctl enable --now restic-backup.timer systemctl enable --now restic-backup.timer
systemctl enable restic-backup.service
``` ```
Status prüfen: Status prüfen:
```bash ```bash
systemctl status restic-backup.timer systemctl status restic-backup.timer
journalctl -u restic-backup.service -f journalctl -u restic-backup.service
``` ```
5. Backup-Repository initialisieren 5. Repository initialisieren (nur beim ersten Mal!)
Falls das Repository noch nicht existiert: ⚠️ Nur ausführen, wenn das Repository noch nicht existiert!
```bash ```bash
restic -r rclone\:Cloud.Michaelis.Digital\:backup-repo init restic -r rclone:Cloud.Michaelis.Digital:Restic/backup-repo init
``` ```
6. Snapshots mounten (bei Bedarf) 6. Snapshots einsehen & mounten (Read-Only Restore)
6.1 Mount-Punkt erstellen 6.1 Snapshots anzeigen
```bash
restic snapshots
```
6.2 Snapshots mounten
```bash ```bash
mkdir -p /mnt/restic mkdir -p /mnt/restic
restic mount /mnt/restic
``` ```
6.2 Snapshot mounten (nur bei Bedarf) Danach verfügbar unter:
Umgebungsvariablen setzen:
```bash ```bash
export RESTIC_REPOSITORY=rclone\:Cloud.Michaelis.Digital\:backup-repo /mnt/restic/snapshots/<SNAPSHOT_ID>/
```
Unmount:
```bash
fusermount -u /mnt/restic
```
7. Wiederherstellung
7.1 Einzelne Dateien oder Ordner
```bash
restic restore <SNAPSHOT_ID> \
--target /tmp/restore \
--include /home/ratatoskr/.ssh
```
7.2 ⚠️ Vollständiges System-Restore (NICHT empfohlen)
Ein Full-Restore auf ein laufendes System wird nicht empfohlen.
Stattdessen selektiv wiederherstellen.
8. Hinweise & Best Practices
rclone läuft als root
Snapshots immer zuerst mounten, dann selektiv kopieren
Kein blindes Restore von /etc oder /usr
Logs:
/var/log/restic-backup.log
journalctl -u restic-backup.service
Benachrichtigungen via ntfy sind im Script konfigurierbar
9. Minimaler Quickstart (erprobt)
```bash
Copy code
export RESTIC_REPOSITORY=rclone:Cloud.Michaelis.Digital:Restic/backup-repo
export RESTIC_PASSWORD_FILE=/home/ratatoskr/.restic-pass export RESTIC_PASSWORD_FILE=/home/ratatoskr/.restic-pass
restic snapshots
restic mount /mnt/restic
``` ```
Snapshot suchen und mounten:
```bash
restic -r \$RESTIC_REPOSITORY --password-file $RESTIC_PASSWORD_FILE snapshots
restic -r \$RESTIC_REPOSITORY --password-file $RESTIC_PASSWORD_FILE mount /mnt/restic-snapshot/
```
Hinweis: Das Mounten erfolgt über FUSE und ist lazy Daten werden erst bei Zugriff geladen.
6.3 Unmounten
```bash
fusermount -u /mnt/restic-snapshot
```
7. Wiederherstellung von Dateien
7.1 Einzelne Dateien wiederherstellen
```bash
restic -r rclone\:Cloud.Michaelis.Digital\:backup-repo restore <SNAPSHOT_ID> --target /tmp/restore
```
7.2 Vollständiges System wiederherstellen
```bash
restic -r rclone\:Cloud.Michaelis.Digital\:backup-repo restore <SNAPSHOT_ID> --target /
```
8. Wichtige Hinweise
rclone als Root: Restic benötigt Root-Rechte für rclone, da es auf / zugreift.
FUSE: Wird automatisch von Restic für das Mounten verwendet.
Logs: Backup-Logs findest du in /var/log/restic-backup.log und im Journal (journalctl -u restic-backup.service).
Benachrichtigungen: Das Skript sendet Updates an ntfy.michaelis.digital. Passe die URL und Credentials im Skript an.
9. Zusammenfassung der Befehle (Copy&Paste-freundlich)
```bash
# 1. Pakete installieren
pacman -S restic rclone fuse jq curl
# 2. rclone als Root konfigurieren
sudo -i
rclone config
# 3. Repository klonen und Dateien ablegen
git clone <DEINE-GIT-URL> /opt/backup-config
cd /opt/backup-config
cp restic-backup.service /etc/systemd/system/
cp restic-backup.timer /etc/systemd/system/
cp restic-backup /usr/local/bin/
chmod +x /usr/local/bin/restic-backup
# 4. Secrets anlegen
mkdir -p /home/ratatoskr
echo "DEIN_RESTIC_REPO_PASSWORT" > /home/ratatoskr/.restic-pass
chmod 600 /home/ratatoskr/.restic-pass
chown root\:root /home/ratatoskr/.restic-pass
# 5. systemd aktivieren
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl enable restic-backup.service
# 6. Repository initialisieren (falls neu)
restic -r rclone\:Cloud.Michaelis.Digital\:backup-repo init
```
Hinweise zur Nutzung:
Ersetze <DEINE-GIT-URL> mit der tatsächlichen URL deines GTA-Repositories.
Ersetze DEIN_RESTIC_REPO_PASSWORT mit dem tatsächlichen Passwort für dein Restic-Repository.
Die gesamte Datei ist durchgehend in Markdown formatiert und kann direkt als README.md gespeichert werden.
Kopieren
### **Anmerkungen:**
- Alle Code-Blöcke sind korrekt als `bash` oder `ini` markiert.
- Die Struktur ist durchgehend mit `---` getrennt, um die Lesbarkeit zu erhöhen.
- Die Befehle zum Mounten der Snapshots wurden korrigiert und um die Umgebungsvariablen ergänzt.
- Dopplungen (z. B. die Zusammenfassung der Befehle) wurden entfernt.
Falls du weitere Anpassungen brauchst, lass es mich wissen!