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
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
Führe folgende Befehle **als Root** aus:
### 1.1 Benötigte Pakete installieren
Als Root ausführen:
```bash
sudo pacman -S restic rclone fuse jq curl
pacman -S restic rclone fuse jq curl
```
1.2 rclone als Root konfigurieren
Da Restic das Repository über rclone anspricht, muss rclone als Root konfiguriert werden:
1.2 rclone als Root konfigurieren (wichtig!)
Da das Backup als root läuft, muss rclone auch im Root-Kontext konfiguriert sein:
```bash
sudo -i
rclone config
```
Remote testen:
Folge den Anweisungen, um dein Cloud-Storage (z. B. Cloud.Michaelis.Digital) einzurichten.
Wichtig: Teste die Verbindung mit:
```bash
rclone lsd Cloud.Michaelis.Digital:
```
2. Repository klonen und Dateien ablegen
2.1 Repository klonen
```bash
git clone <DEINE-GIT-URL> /opt/backup-config
cd /opt/backup-config
```
2.2 Dateien kopieren
Kopiere die Konfigurationsdateien an die richtigen Orte:
Dateien installieren
```bash
# Service und Timer
# systemd Units
cp restic-backup.service /etc/systemd/system/
cp restic-backup.timer /etc/systemd/system/
```
# Backup-Skript
cp restic-backup /usr/local/bin/
chmod +x /usr/local/bin/restic-backup
# Rechte setzen
sudo chown ratatoskr:ratatoskr /usr/local/bin/restic-backup
sudo chmod 750 /usr/local/bin/restic-backup
sudo chown root:root /etc/systemd/system/restic-backup.service
sudo chmod 644 /etc/systemd/system/restic-backup.service
sudo chown root:root /etc/systemd/system/restic-backup.timer
sudo chmod 644 /etc/systemd/system/restic-backup.timer
```bash
cp restic-backup /usr/local/bin/restic-backup
chmod 750 /usr/local/bin/restic-backup
```
Rechte setzen
```bash
chown ratatoskr:ratatoskr /usr/local/bin/restic-backup
chown root:root /etc/systemd/system/restic-backup.service
chown root:root /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.1 Restic-Passwortdatei
Erstelle die Passwortdatei für Restic (nur für Root lesbar!):
```bash
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
chown root:root /home/ratatoskr/.restic-pass
```
3.2 Umgebungsvariablen (optional)
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:
3.2 Umgebungsvariablen (empfohlen)
```bash
source /etc/environment
export RESTIC_REPOSITORY=rclone:Cloud.Michaelis.Digital:Restic/backup-repo
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
```bash
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl enable restic-backup.service
```
Status prüfen:
```bash
systemctl status restic-backup.timer
journalctl -u restic-backup.service -f
journalctl -u restic-backup.service
```
5. Backup-Repository initialisieren
Falls das Repository noch nicht existiert:
5. Repository initialisieren (nur beim ersten Mal!)
⚠️ Nur ausführen, wenn das Repository noch nicht existiert!
```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.1 Mount-Punkt erstellen
6. Snapshots einsehen & mounten (Read-Only Restore)
6.1 Snapshots anzeigen
```bash
restic snapshots
```
6.2 Snapshots mounten
```bash
mkdir -p /mnt/restic
restic mount /mnt/restic
```
6.2 Snapshot mounten (nur bei Bedarf)
Umgebungsvariablen setzen:
Danach verfügbar unter:
```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
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!