Backup di Discourse dalla riga di comando

: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 Mi Piace

dove dovrei eseguire questo comando? sul terminale del mio server cloud o sulla mia macchina locale?
anche se entrambi mi danno un errore di permesso negato

Sulla tua macchina locale.

Stai usando una chiave SSH per connetterti? L’errore è correlato.

Il comando dovrebbe quindi essere:

scp -i /path_to_your_key/your_key.pem root@147.43.15.199:/var/discourse/shared/standalone/backups/default/discourse-2024-12-25-033740-v20241211222608.tar.gz .

Ho uno scenario in cui voglio migrare l’installazione di Discourse su un server completamente nuovo.
Il mio piano era:

  1. creare una nuova installazione vuota di Discourse
  2. eseguire il backup del vecchio Discourse, scp il backup sul nuovo server e ripristinare
  3. Copiare tutto da S3 (immagini, ecc.) al nuovo S3 su un account diverso

Il processo di ripristino procede bene finché non inizia a cercare S3 e poi fallisce per mancanza di accesso. Penso che stia cercando di accedere allo stesso nome del bucket S3 sul vecchio Discourse, ma quello non esiste sul nuovo e non posso crearlo.

C’è una soluzione consigliata?

Ho pensato di provare a cambiare il nome del bucket S3 sul vecchio Discourse (prima di eseguire il backup) e poi, quando ripristino, si aspetterebbe di avere il nuovo bucket S3. Ma ho paura di cosa succederĂ  al vecchio Discourse se lo cambio semplicemente in un bucket inesistente.

C’è un’impostazione nascosta che scaricherà i file s3 e li inserirà nel backup.

Devi configurare s3 nel file yml come in Configurare un provider di archiviazione oggetti compatibile con S3 per i caricamenti

Quindi, quando ripristinerai il backup, inserirĂ  i caricamenti nel nuovo bucket.

1 Mi Piace

Sei mai riuscito a risolvere questo problema?

Devi configurare s3 nelle variabili d’ambiente come descritto in Configurare un provider di archiviazione di oggetti compatibile con S3 per i caricamenti

Ciò è particolarmente vero se le impostazioni s3 sono diverse sul nuovo server. Inserire i valori s3 nel database può causare molti problemi.

Ma c’è un interruttore per il comando di ripristino che lo fa mettere in pausa tra le varie parti. Può aiutare.