Zum Hauptinhalt springen

Backup und Wiederherstellung

PlantPulse Studio verwaltet den gesamten Zustand mit einem Backup-Skript und einem Wiederherstellungsskript. Alle Befehle werden im Installationsverzeichnis (/opt/kopens/plantpulse-studio-docker) ausgeführt.


Was wird gesichert

Eine einzelne Backup-Datei (dist/backup-<date>.tar.gz) enthält Folgendes:

ZielInhalt
Vollständiger PostgreSQL-DumpBenutzerkonten · Gesprächsverlauf · Watcher · Benachrichtigungslesestatus · Skills · Bereitstellungsverlauf · Audit-Protokoll
Workspace(workspaces/)Tatsächlicher Quellcode pro Projekt · Chat-Anlagen
Build-Artefakte(builds/)Jede Version der bereitgestellten App (erforderlich für Rollback)
Status-Verzeichnis(state/)settings.json (Konfiguration) · Audit-/Nutzungsprotokolle · Benutzerdefinierte Vorlagen · Branding-Logos

Das PostgreSQL-Datenverzeichnis selbst wird aus dem Archiv ausgeschlossen — es wird durch einen SQL-Dump ersetzt.

Backup-Dateien sind sensible Informationen

Das Archiv enthält den gesamten Workspace aller Benutzer vollständig, und bei Migrationen von früheren Installationen können API-Schlüssel in settings.json verbleiben.

  • Das Skript erstellt die Backup-Datei mit 600 (nur Besitzer lesen) und das dist/ Verzeichnis mit 700.
  • Behalten Sie diese Berechtigungen bei, wenn Sie auf externe Medien oder andere Server übertragen. (Verwenden Sie Berechtigungserhaltungsoptionen wie scp -p, rsync -a, tar -p)
  • Für externe Übertragungen wird zusätzliche Verschlüsselung empfohlen.

Backup ausführen

cd /opt/kopens/plantpulse-studio-docker
bash bin/backup.sh
▶ PostgreSQL 덤프
▶ 파일 상태 아카이브(postgres 데이터 제외 — 덤프로 대체)
-rw------- 1 root root 78M ... dist/backup-20260728-031501.tar.gz
✅ 백업 완료 (보존 14개)
  • Ergebnis: dist/backup-<YYYYMMDD-HHMMSS>.tar.gz
  • Aufbewahrungsrichtlinie: Nur die neuesten 14 werden beibehalten, ältere Dateien werden automatisch gelöscht (anpassen mit BACKUP_KEEP).
  • Bei Verwendung des gebündelten PostgreSQL muss der Stack laufen, um einen Dump zu erstellen.
BACKUP_KEEP=30 bash bin/backup.sh # 이번 실행부터 30개 보존
Manuelles Backup vor Updates erforderlich

Führen Sie bash bin/backup.sh vor Image-Upgrades oder großen Konfigurationsänderungen aus.


Automatisches Backup installieren (empfohlen)

Installieren Sie cron, um das Backup täglich um 03:30 Uhr auszuführen. Root-Berechtigung erforderlich.

sudo bash bin/install-backup-cron.sh
[backup-cron] 설치 완료 — 스케줄: '30 3 * * *', 보존 14개, 로그: dist/backup.log

Um die Uhrzeit oder Aufbewahrungsanzahl zu ändern:

sudo BACKUP_CRON="0 4 * * *" BACKUP_KEEP=30 bash bin/install-backup-cron.sh

Zum Entfernen:

sudo bash bin/install-backup-cron.sh remove

Überprüfen Sie die Funktionalität in den Protokollen:

tail -50 /opt/kopens/plantpulse-studio-docker/dist/backup.log
ls -lh /opt/kopens/plantpulse-studio-docker/dist/backup-*.tar.gz

Empfohlener Betriebszyklus

ZyklusAufgabe
TäglichAutomatisches Backup (cron) — 14 Tage Aufbewahrung
WöchentlichNeuestes Backup auf anderen Server/Medium kopieren (Berechtigungen beibehalten)
MonatlichKapazität dist/ und verfügbaren Speicher überprüfen
VierteljährlichDRYRUN=1 Wiederherstellungsübung — siehe unten
Vor dem UpgradeEinmaliges manuelles Backup
Ein Backup ist nur dann ein Backup, wenn Wiederherstellung funktioniert

Auch wenn Backup-Dateien täglich erstellt werden, können Sie nicht sicher sein, dass sie wiederhergestellt werden können, bis Sie es versuchen. Führen Sie vierteljährlich eine Übung durch. Sie ist zerstörungsfrei und kann während des Betriebs sicher ausgeführt werden.


Wiederherstellungsübung (zerstörungsfrei)

Überprüft nur die Archivstruktur und Datenbankerreichbarkeit, ändert nichts.

DRYRUN=1 bash bin/restore.sh # 최신 백업 대상
DRYRUN=1 bash bin/restore.sh dist/backup-20260712-191858.tar.gz
▶ 아카이브 검증
ppstudio.sql 12M · files.tar.gz 66M
▶ DRYRUN — DB 도달성만 확인
✅ DB 도달 OK
✅ DRYRUN 통과 — 실제 복구는 DRYRUN 없이 실행

Wiederherstellung ausführen

Wiederherstellung ist zerstörerisch

Der aktuelle Datenbankinhalt und das gesamte Datenverzeichnis werden zum Sicherungszeitpunkt überschrieben. Projekte, Gespräche und Bereitstellungen, die nach der Wiederherstellung erstellt wurden, gehen verloren.

cd /opt/kopens/plantpulse-studio-docker

bash bin/restore.sh # 최신 백업으로 복구
bash bin/restore.sh dist/backup-20260712-191858.tar.gz # 특정 시점으로 복구

Sie müssen restore bei der Bestätigungsaufforderung eingeben, um fortzufahren.

⚠ 현재 DB 와 /var/lib/pp-studio 파일 상태를 이 백업으로 덮어씁니다: dist/backup-...
계속하려면 'restore' 를 입력하세요:

Die Reihenfolge der Skriptausführung:

  1. Archivstruktur validieren (Dump und Datei-Archiv-Existenz überprüfen)
  2. Aktuellen Dateistatus automatisch zu dist/pre-restore-<date>.tar.gz ausweichen
  3. Stack stoppen
  4. Datenverzeichnis wiederherstellen → Datenbank wiederherstellen
  5. Stack starten → Integritätsprüfung durchführen

Um innerhalb eines Automatisierungsskripts ohne Aufforderung auszuführen:

FORCE=1 bash bin/restore.sh dist/backup-20260712-191858.tar.gz

Integritätsprüfung nach Wiederherstellung nicht bestanden

bash bin/logs.sh # 서버 로그 확인
bash bin/status.sh

Um zurückzusetzen, stellen Sie mit dem in Schritt 2 erstellten Sicherungsbestand wieder her. Beachten Sie jedoch, dass der Sicherungsbestand nur den Dateistatus enthält (die Datenbank ist nicht enthalten).

bash bin/restore.sh dist/pre-restore-20260728-104233.tar.gz

Migration zu einem anderen Server

  1. Installieren Sie den Stack auf dem neuen Server mit derselben Version (Installation oder Air-Gap-Installation).
  2. Kopieren Sie .env vom alten Server auf den neuen Server (behalten Sie Berechtigungen 600).
  3. Kopieren Sie das Backup-Archiv auf den neuen Server nach dist/ (behalten Sie Berechtigungen 600).
  4. Führen Sie die Wiederherstellung aus.
cd /opt/kopens/plantpulse-studio-docker
DRYRUN=1 bash bin/restore.sh dist/backup-20260728-031501.tar.gz # 먼저 리허설
bash bin/restore.sh dist/backup-20260728-031501.tar.gz
Wenn die Domain sich ändert

Wenn sich die Zugangsadresse nach der Migration ändert, müssen sich alle Benutzer einmal abmelden und wieder anmelden — Login-Cookies sind nur für den Host zum Zeitpunkt der Ausstellung verfügbar. Daher werden Dateinanforderungen zu 401. Weitere Details finden Sie unter Domain und Reverse Proxy.


Speicherverwaltung

Backups enthalten den gesamten Workspace und Build-Artefakte, daher wachsen sie mit der Anzahl der Projekte.

du -sh /opt/kopens/plantpulse-studio-docker/dist
du -sh /var/lib/pp-studio/*
df -h /var/lib/pp-studio
  • Um die Aufbewahrungsanzahl zu verringern, installieren Sie cron mit dem Wert BACKUP_KEEP neu.
  • Frühere Versionen von bereitgestellten Apps werden pro Projekt standardmäßig bis zu 10 aufbewahrt, und überschüssige werden automatisch bereinigt (die derzeit laufende Version wird immer aufbewahrt).

Verwandte Dokumentation