1 Betrieb Backup und Wiederherstellung
Ralf Warmuth edited this page 2026-08-30 21:44:09 +02:00

Backup und Wiederherstellung

Ein vollständiger PLM-Stand besteht aus PostgreSQL-Datenbank und Dateien in storage/. Beide müssen aus demselben Zeitpunkt stammen.

Zu sichernde Daten

  • PostgreSQL-Datenbank,
  • /opt/freecad-plm/storage/,
  • /opt/freecad-plm/.env,
  • verwendete docker-compose.image.yml,
  • optional Liste der verwendeten Image-SHAs.

staticfiles/ ist neu erzeugbar und kein Ersatz für storage/.

Backup erstellen

Beispiel in einem vorher angelegten, eindeutig benannten Backup-Ordner:

cd /opt/freecad-plm
mkdir -p backups/2026-08-30-vor-update
cp .env docker-compose.image.yml backups/2026-08-30-vor-update/
docker compose -f docker-compose.image.yml exec -T db \
  pg_dump -U freecad_plm -d freecad_plm -Fc \
  > backups/2026-08-30-vor-update/postgres.dump
tar -czf backups/2026-08-30-vor-update/storage.tar.gz storage
sha256sum backups/2026-08-30-vor-update/postgres.dump \
  backups/2026-08-30-vor-update/storage.tar.gz

Bewahre die ausgegebenen Prüfsummen zusammen mit dem Backup auf. Kopiere das Backup zusätzlich auf ein anderes System oder Medium.

Backup prüfen

test -s backups/2026-08-30-vor-update/postgres.dump
tar -tzf backups/2026-08-30-vor-update/storage.tar.gz | head
pg_restore --list backups/2026-08-30-vor-update/postgres.dump | head

Die verlässlichste Prüfung ist eine regelmäßige Testwiederherstellung in einer separaten Umgebung.

Wiederherstellung vorbereiten

Eine Wiederherstellung überschreibt den aktuellen Stand. Deshalb vorher:

  1. aktuellen Zustand zusätzlich sichern,
  2. exakten Backup-Ordner prüfen,
  3. passende .env, Compose-Datei und Image-SHAs feststellen,
  4. Web und Worker stoppen, Datenbank aber für den Restore verfügbar lassen.
cd /opt/freecad-plm
docker compose -f docker-compose.image.yml stop web worker

PostgreSQL wiederherstellen

Der konkrete Restore hängt davon ab, ob eine leere Datenbank oder eine bestehende Datenbank ersetzt wird. Für eine leere Zieldatenbank:

docker compose -f docker-compose.image.yml exec -T db \
  pg_restore -U freecad_plm -d freecad_plm --clean --if-exists \
  < backups/2026-08-30-vor-update/postgres.dump

Prüfe Fehlermeldungen vollständig. Starte Web und Worker nicht, solange der Restore unklar oder unvollständig ist.

Storage wiederherstellen

Entpacke storage.tar.gz nur im vorgesehenen PLM-Verzeichnis und erst nachdem der aktuelle Storage separat gesichert wurde. Prüfe Zielpfad und Archivinhalt, bevor du vorhandene Dateien ersetzt.

Danach Berechtigungen kontrollieren:

sudo chown -R 1000:1000 /opt/freecad-plm/storage

Wieder starten und prüfen

docker compose -f docker-compose.image.yml up -d
docker compose -f docker-compose.image.yml ps
docker compose -f docker-compose.image.yml exec web python manage.py check
docker compose -f docker-compose.image.yml logs --tail=100 web worker

Prüfe anschließend Anmeldung, Projekte, einige Revisionsdownloads und einen Worker-Job. Datenbankeinträge und Storage-Dateien müssen gemeinsam vorhanden sein.