.
This commit is contained in:
108
README.md
108
README.md
@@ -12,10 +12,7 @@ Optional kann das Ergebnis zusätzlich als `tar.gz` archiviert werden.
|
||||
|
||||
- Backup **aller Portainer Stacks**
|
||||
- Export der **aktuellen** `docker-compose.yml` je Stack
|
||||
- Ruhige, übersichtliche Konsolen-Ausgabe
|
||||
- Vollständiges Logfile (`backup.log`)
|
||||
- Optionales `tar.gz`-Archiv
|
||||
- Automatisches Aufräumen bei Archiv-Erstellung
|
||||
- Geeignet für:
|
||||
- manuelle Nutzung
|
||||
- Cronjobs
|
||||
@@ -34,22 +31,11 @@ Auf dem System müssen folgende Tools vorhanden sein:
|
||||
| `jq` | ja |
|
||||
| `tar` | **nur wenn** `CREATE_ARCHIVE=1` |
|
||||
|
||||
Getestet u. a. mit:
|
||||
- Fedora
|
||||
- Debian / Ubuntu
|
||||
- Proxmox Host
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Repository klonen oder Skript manuell ablegen:
|
||||
|
||||
```bash
|
||||
git clone <dein-repo>
|
||||
cd shell_portainer_stack_backup
|
||||
```
|
||||
|
||||
Skript ausführbar machen:
|
||||
|
||||
```bash
|
||||
@@ -72,7 +58,7 @@ PORTAINER_URL="https://192.168.178.25:9443"
|
||||
API_KEY="ptr_xxxxxxxxxxxxxxxxxxxxxx"
|
||||
|
||||
# Base output directory
|
||||
OUT_DIR="/home/thorsten/Schreibtisch/Backup"
|
||||
OUT_DIR="/home/thorsten/Portainer_Backup"
|
||||
|
||||
# Create archive?
|
||||
# 1 = create tar.gz and remove directory afterwards
|
||||
@@ -80,84 +66,6 @@ OUT_DIR="/home/thorsten/Schreibtisch/Backup"
|
||||
CREATE_ARCHIVE=1
|
||||
```
|
||||
|
||||
**Hinweis:**
|
||||
- API-Keys niemals ins Git-Repository committen
|
||||
- Empfohlene Rechte:
|
||||
```bash
|
||||
chmod 600 settings.env
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nutzung
|
||||
|
||||
```bash
|
||||
./shell_portainer_stack_backup.sh
|
||||
```
|
||||
|
||||
Beispiel-Ausgabe:
|
||||
|
||||
```
|
||||
Portainer Stack Backup started
|
||||
Target: /home/thorsten/Schreibtisch/Backup/portainer-stack-backup-2026-01-25_15-00-00
|
||||
|
||||
Portainer reachable
|
||||
API key valid
|
||||
Stacks found: 57
|
||||
|
||||
Starting backup
|
||||
|
||||
[OK] jellyfin
|
||||
[OK] paperless
|
||||
[FAIL] test-stack
|
||||
|
||||
Backup finished: OK=56 FAIL=1
|
||||
Archive created: portainer-stack-backup-2026-01-25_15-00-00.tar.gz
|
||||
Cleanup done: removed /home/thorsten/Schreibtisch/Backup/portainer-stack-backup-2026-01-25_15-00-00
|
||||
Done.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ergebnisstruktur
|
||||
|
||||
### Wenn `CREATE_ARCHIVE=0`
|
||||
|
||||
```
|
||||
portainer-stack-backup-YYYY-MM-DD_HHMMSS/
|
||||
├── backup.log
|
||||
└── stacks/
|
||||
├── jellyfin/
|
||||
│ ├── docker-compose.yml
|
||||
│ └── meta.json
|
||||
└── paperless/
|
||||
├── docker-compose.yml
|
||||
└── meta.json
|
||||
```
|
||||
|
||||
### Wenn `CREATE_ARCHIVE=1`
|
||||
|
||||
```
|
||||
portainer-stack-backup-YYYY-MM-DD_HHMMSS.tar.gz
|
||||
```
|
||||
|
||||
(Der temporäre Ordner wird nach erfolgreicher Archiv-Erstellung gelöscht.)
|
||||
|
||||
---
|
||||
|
||||
## Logfile
|
||||
|
||||
Während der Laufzeit wird **jede Ausgabe** gleichzeitig:
|
||||
|
||||
- im Terminal angezeigt
|
||||
- in `backup.log` gespeichert
|
||||
|
||||
Das Logfile liegt:
|
||||
- bei `CREATE_ARCHIVE=0` im Backup-Ordner
|
||||
- bei `CREATE_ARCHIVE=1` im Archiv
|
||||
|
||||
---
|
||||
|
||||
## Hinweise & Einschränkungen
|
||||
|
||||
- Das Skript sichert **nur die Stack-Definitionen**, **keine Volumes / Daten**
|
||||
@@ -167,17 +75,3 @@ Das Logfile liegt:
|
||||
- Zugriff auf das jeweilige Endpoint
|
||||
|
||||
---
|
||||
|
||||
## Typische Einsatzszenarien
|
||||
|
||||
- Versionierung von Compose-Files in Git
|
||||
- Dokumentation der aktuellen Portainer-Konfiguration
|
||||
- Vorbereitung für Migration / Rebuild
|
||||
- Regelmäßige Sicherung per Cron
|
||||
|
||||
---
|
||||
|
||||
## Lizenz
|
||||
|
||||
Privates / internes Tool
|
||||
Keine Garantie – Nutzung auf eigene Verantwortung.
|
||||
|
||||
Reference in New Issue
Block a user