.
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**
|
- Backup **aller Portainer Stacks**
|
||||||
- Export der **aktuellen** `docker-compose.yml` je Stack
|
- Export der **aktuellen** `docker-compose.yml` je Stack
|
||||||
- Ruhige, übersichtliche Konsolen-Ausgabe
|
|
||||||
- Vollständiges Logfile (`backup.log`)
|
|
||||||
- Optionales `tar.gz`-Archiv
|
- Optionales `tar.gz`-Archiv
|
||||||
- Automatisches Aufräumen bei Archiv-Erstellung
|
|
||||||
- Geeignet für:
|
- Geeignet für:
|
||||||
- manuelle Nutzung
|
- manuelle Nutzung
|
||||||
- Cronjobs
|
- Cronjobs
|
||||||
@@ -34,22 +31,11 @@ Auf dem System müssen folgende Tools vorhanden sein:
|
|||||||
| `jq` | ja |
|
| `jq` | ja |
|
||||||
| `tar` | **nur wenn** `CREATE_ARCHIVE=1` |
|
| `tar` | **nur wenn** `CREATE_ARCHIVE=1` |
|
||||||
|
|
||||||
Getestet u. a. mit:
|
|
||||||
- Fedora
|
|
||||||
- Debian / Ubuntu
|
|
||||||
- Proxmox Host
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Repository klonen oder Skript manuell ablegen:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone <dein-repo>
|
|
||||||
cd shell_portainer_stack_backup
|
|
||||||
```
|
|
||||||
|
|
||||||
Skript ausführbar machen:
|
Skript ausführbar machen:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -72,7 +58,7 @@ PORTAINER_URL="https://192.168.178.25:9443"
|
|||||||
API_KEY="ptr_xxxxxxxxxxxxxxxxxxxxxx"
|
API_KEY="ptr_xxxxxxxxxxxxxxxxxxxxxx"
|
||||||
|
|
||||||
# Base output directory
|
# Base output directory
|
||||||
OUT_DIR="/home/thorsten/Schreibtisch/Backup"
|
OUT_DIR="/home/thorsten/Portainer_Backup"
|
||||||
|
|
||||||
# Create archive?
|
# Create archive?
|
||||||
# 1 = create tar.gz and remove directory afterwards
|
# 1 = create tar.gz and remove directory afterwards
|
||||||
@@ -80,84 +66,6 @@ OUT_DIR="/home/thorsten/Schreibtisch/Backup"
|
|||||||
CREATE_ARCHIVE=1
|
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
|
## Hinweise & Einschränkungen
|
||||||
|
|
||||||
- Das Skript sichert **nur die Stack-Definitionen**, **keine Volumes / Daten**
|
- Das Skript sichert **nur die Stack-Definitionen**, **keine Volumes / Daten**
|
||||||
@@ -167,17 +75,3 @@ Das Logfile liegt:
|
|||||||
- Zugriff auf das jeweilige Endpoint
|
- 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