Bei einem Kunden habe ich ein Discourse-Forum auf einen neuen Server migriert. Nach der Migration gab es aber das Problem, dass keine Backups mehr erstellt werden konnten. Die Fehlermeldung sah wie folgt aus:
[2025-01-20 12:23:10] Finalizing backup...
[2025-01-20 12:23:10] Finalizing database dump file: forum-name-2025-01-20-122223-v20250116024516.sql.gz
[2025-01-20 12:23:10] EXCEPTION: /var/www/discourse/lib/discourse.rb:139:in `exec': Failed to move database dump file.
mv: cannot move '/var/www/discourse/tmp/backups/default/2025-01-20-122223/dump.sql.gz' to '/var/www/discourse/public/backups/default/forum-name-2025-01-20-122223-v20250116024516.sql.gz': Permission denied
Die Lösung ist relativ einfach, Discourse hat keine Berechtigung, in das Verzeichnis mkdir -p /var/discourse/shared/standalone/backups/default
zu schreiben.
Beim Forum handelt es sich um ein migriertes Forum, sprich: Es wurde ein Backup wiederhergestellt. Um ein Backup einzuspielen, muss folgendes Verzeichnis angelegt werden:
mkdir -p /var/discourse/shared/standalone/backups/default
Dieses Verzeichnis wird bei der Migration aber nicht mit passenden Berechtigungen angelegt, weshalb nach der Migration die Backups scheitern.
Die Lösung gestaltet sich einfach, man muss einfach das angelegte Verzeichnis (samt Inhalt) wieder löschen:
rm -r -f /var/discourse/shared/standalone/backups/default
Discourse legt das Verzeichnis anschließend mit den passenden Berechtigungen neu an. Nach dem Löschen des Verzeichnisses sollten die Backups wieder funktionieren.