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.

Last edited by @SaraDev 2024-08-23T20:50:17Z

Check documentPerform check on document:
38 „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.