J’ai une instance Discourse basée sur Docker, construite à partir d’un modèle fourni par DigitalOcean. Lorsque j’ai activé la sauvegarde automatisée pour la première fois, un fichier de dump a été généré dans /var/discourse/shared/standalone/backups/default/... comme prévu.
J’ai décidé de supprimer le répertoire backups et d’y créer un lien symbolique backups pointant vers un volume. Depuis, la tâche de sauvegarde échoue (j’ai également accédé au conteneur et lancé une sauvegarde manuelle, avec le même message d’erreur).
Voici la trace de la pile :
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'
...
Édition
J’ai accédé au conteneur et effectué quelques débogages. Il s’avère qu’il existe un lien symbolique pointant de /var/www/discourse/public/backups vers /shared/backups sur l’hôte, qui est lui-même un lien symbolique dans mon cas. Un problème de permissions de fichier empêche le processus Ruby d’écrire dans le répertoire de sauvegarde sur l’hôte.
Des conseils ?