Lokales Backup-Fehler, Datei existiert

Ich habe eine Docker-basierte Discourse-Instanz, die auf einer von DigitalOcean bereitgestellten Vorlage basiert. Als ich erstmals die automatische Sicherung aktiviert habe, wurde wie erwartet eine Dump-Datei in /var/discourse/shared/standalone/backups/default/... erstellt.

Ich habe daraufhin das Verzeichnis backups gelöscht und ein Symbollink namens backups erstellt, der auf ein Volume verweist. Seitdem schlägt der Sicherungsauftrag fehl (ich habe auch den Container betreten und eine manuelle Sicherung gestartet – dieselbe Fehlermeldung).

Hier ist der Stack-Trace:

File exists @ dir_s_mkdir - /var/www/discourse/public/backups
/usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir'
/usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'
/usr/local/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'
/usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'
/usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'
/usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `each'
/usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'
/var/www/discourse/lib/backup_restore/local_backup_store.rb:10:in `base_directory'
...

Edit
Ich habe den Container betreten und einige Debugging-Schritte durchgeführt. Wie sich herausstellte, gibt es einen Symbollink, der /var/www/discourse/public/backups auf /shared/backups auf dem Host verweist – was in meinem Fall ebenfalls ein Symbollink ist. Ein Problem mit den Dateiberechtigungen verhindert, dass der Ruby-Prozess in das Sicherungsverzeichnis auf dem Host schreiben kann.

Habt ihr irgendwelche Tipps?

1 „Gefällt mir“

Die Dateistruktur im Container unterscheidet sich von der außerhalb. Am besten erstellen Sie ein neues Volume, das das Backup-Verzeichnis an den gewünschten Ort mappt, anstatt einen Symlink zu verwenden.

2 „Gefällt mir“