Readme.md aktualisiert
This commit is contained in:
parent
d5d5a6e8ad
commit
d74b130afd
228
Readme.md
228
Readme.md
@ -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!
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user