Backup-Diskussionen über die Befehlszeile

:bookmark: This guide covers how to back up and restore your Discourse site using command line tools, specifically designed for self-hosted environments.

:person_raising_hand: Required user level: Administrator

:information_source: You can use the below placeholders to automatically fill out the command line prompts in this guide:

Backing up

To create a backup of your Discourse site, follow these steps:

  1. Enter the container:
./launcher enter app
  1. Run the backup:
discourse backup
exit

This will print out the final filename of your backup. Download the backup and container configuration (if needed) to your local machine:

scp =USER=@=HOST=:/var/discourse/shared/standalone/backups/default/=FILENAME= .
scp =USER=@=HOST=:/var/discourse/containers/app.yml .

Restoring

To restore a Discourse backup, follow these steps:

  1. Install a Discourse site on the server you are restoring to.

If you’re testing this procedure multiple times, you can wipe the data on your test server.

Wipe Discourse data (optional)
./launcher stop app
./launcher destroy app
rm -r /var/discourse/shared/standalone/
mkdir -p /var/discourse/shared/standalone/backups/default/

  1. Upload the backup file:
scp =FILENAME= =USER=@=HOST=:/var/discourse/shared/standalone/backups/default/
  1. Enter the container and start the restore:
./launcher enter app
discourse enable_restore
discourse restore =FILENAME=

If you happen to forget what the filename was, run the “discourse restore” command by itself to get a list of available backup files.

:information_source: For a two-container setup, use ./launcher enter web_only and replace standalone with web-only in the path to backups.

For additional information about restoring Discourse backups, see Restore a backup from the command line.

40 „Gefällt mir“

Wo soll ich diesen Befehl ausführen? Auf meinem Cloud-Server-Terminal oder auf meiner lokalen Maschine?
Obwohl beides eine Fehlermeldung “Permission denied” ergibt

Auf Ihrem lokalen Computer.

Verwenden Sie einen SSH-Schlüssel für die Verbindung? Der Fehler hängt damit zusammen.

Der Befehl sollte dann lauten:

scp -i /pfad/zu/ihrem_schlüssel/ihr_schlüssel.pem root@147.43.15.199:/var/discourse/shared/standalone/backups/default/discourse-2024-12-25-033740-v20241211222608.tar.gz .

Ich habe ein Szenario, in dem ich die Discourse-Installation auf einen komplett neuen Server migrieren möchte.
Mein Plan war:

  1. Eine neue, leere Discourse-Installation erstellen
  2. Das alte Discourse sichern, das Backup auf den neuen Server kopieren (scp) und wiederherstellen
  3. Alle S3-Daten (Bilder usw.) auf ein neues S3-Konto kopieren

Der Wiederherstellungsprozess verläuft gut, bis er versucht, auf S3 zuzugreifen, und dann wegen fehlenden Zugriffs fehlschlägt. Ich glaube, er versucht, auf denselben S3-Bucket-Namen wie im alten Discourse zuzugreifen, aber dieser existiert im neuen nicht und ich kann ihn nicht erstellen.

Gibt es eine empfohlene Lösung?

Ich dachte, ich könnte versuchen, den S3-Bucket-Namen im alten Discourse zu ändern (bevor ich das Backup durchführe) und dann würde er bei der Wiederherstellung den neuen S3-Bucket erwarten. Aber ich befürchte, was mit dem alten Discourse passieren wird, wenn ich ihn einfach auf einen nicht existierenden Bucket umstelle.

Es gibt eine versteckte Einstellung, die die S3-Dateien herunterlädt und sie in das Backup einfügt.

Sie müssen S3 in der YML-Datei konfigurieren, wie unter Konfigurieren eines S3-kompatiblen Objektspeichers für Uploads beschrieben.

Wenn Sie dann das Backup wiederherstellen, werden die Uploads in den neuen Bucket verschoben.

1 „Gefällt mir“

Hast du das jemals herausgefunden?

Sie müssen S3 in Umgebungsvariablen konfigurieren, wie in Konfigurieren eines S3-kompatiblen Objektspeichers für Uploads beschrieben.

Dies gilt insbesondere, wenn die S3-Einstellungen auf dem neuen Server anders sind. Das Speichern der S3-Werte in der Datenbank kann viele Probleme verursachen.

Aber es gibt einen Schalter für den Wiederherstellungsbefehl, der ihn zwischen den verschiedenen Teilen pausieren lässt. Das kann helfen.

Kann ich kurz überprüfen, ob die Datei, die du hier erhältst, dieselbe ist wie die, die du beim Sichern über die Forum-Website bekommst?

Ich baue immer über die Kommandozeile neu auf, aber zuerst sichere ich über die Website ab. Diesmal habe ich das Sichern vergessen! Ich denke, wenn ich für beides die Kommandozeile verwende, könnte das mir helfen :slight_smile: Viel Glück!

Das Backup-Skript meldete:

Abgeschlossen!
[ERFOLG]
Backup durchgeführt.
Ausgabedatei befindet sich unter: /var/www/discourse/public/backups/default/DATEINAME.tar.gz

Zunächst habe ich versucht, diese herunterzuladen, was jedoch einen falschen Pfad enthält. Ich habe die Datei an anderer Stelle gefunden und erst dann bemerkt, dass die Befehle in diesem Thema korrekt sind…