Backup do discourse a partir da linha de 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 curtidas

onde devo executar este comando? no terminal do meu servidor na nuvem ou na minha máquina local?
embora ambos me deem um erro de permissão negada

Na sua máquina local.

Você está usando uma chave SSH para se conectar? O erro está relacionado.

O comando deve ser então:

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 .

Tenho um cenário em que quero migrar a instalação do Discourse para um servidor totalmente novo.
Meu plano era:

  1. criar uma nova instalação em branco do Discourse
  2. fazer backup do Discourse antigo, scp o backup para o novo servidor e restaurar
  3. Copiar tudo do S3 (imagens, etc.) para o novo S3 em uma conta diferente

O processo de restauração corre bem até começar a procurar o S3 e falhar por falta de acesso. Acho que está tentando acessar o mesmo nome de bucket S3 do Discourse antigo, mas este não existe no novo e não consigo criá-lo.

Existe uma solução recomendada?

Pensei em tentar mudar o nome do bucket S3 no Discourse antigo (antes de realizar o backup) e, em seguida, quando restaurar, ele esperaria ter o novo bucket S3. Mas tenho receio do que acontecerá com o Discourse antigo se eu simplesmente o mudar para um bucket inexistente.

Existe uma configuração oculta que fará o download dos arquivos s3 e os colocará no backup.

Você precisa configurar o s3 no arquivo yml como em Configurar um provedor de armazenamento de objetos compatível com S3 para uploads

Em seguida, ao restaurar o backup, ele enviará os uploads para o novo bucket.

1 curtida

Você conseguiu resolver isso?

Você precisa configurar o s3 nas variáveis de ambiente, conforme descrito em Configurar um provedor de armazenamento de objetos compatível com S3 para uploads

Isso é especialmente verdade se as configurações do s3 forem diferentes no novo servidor. Colocar os valores do s3 no banco de dados pode causar muitos problemas.

Mas existe uma opção para o comando de restauração que faz com que ele pause entre as várias partes. Isso pode ajudar.