Загрузка логотипа не работает после восстановления из резервной копии

Я создал новый экземпляр Discourse на другом домене и восстановил его из резервной копии. Всё прошло гладко. Однако ни один из логотипов не отобразился (все пустые, не по умолчанию). Поэтому я перешёл в меню «Брендинг», чтобы попытаться загрузить логотипы заново.

Вот лог Discourse при загрузке нового логотипа:

Новый : /uploads/default/original/1X/75a192f211147f512bdddabaf50addd43c6a9d86.png
Предыдущий : /images/discourse-logo-sketch.png

Но при проверке каталога загрузок этого конкретного изображения не оказалось:

/var/discourse# tree shared/standalone/uploads/default/ | grep 75a1

Обратите внимание, что это неверное имя файла логотипа (хеш?) совпадает с именем из оригинального экземпляра Discord, который всё ещё работает онлайн:

Новый : /uploads/default/original/1X/75a192f211147f512bdddabaf50addd43c6a9d86.png

Есть ли у вас какие-либо идеи, что здесь пошло не так? Стоит ли мне создать новый экземпляр и восстановить его из свежей резервной копии?

Спасибо.

Нам нужно больше информации о вашей среде, чтобы мы могли вам помочь.

  • Как была установлена новая инстанция?
  • Находится ли она за обратным прокси-сервером или CloudFlare?

Привет, Стивен,

  1. Установка была выполнена с помощью автономного скрипта discourse-setup.
  2. Обратный прокси или CDN не используются.

Вот обновление по этому вопросу. Сегодня я создал новый экземпляр, и логотипы успешно восстановились из резервной копии. Скорее всего, это была какая-то временная проблема.

Забудьте, проблема вернулась… Изначально логотипы отображались корректно, пока я не очистил кэш браузера.

Решение

Корень проблемы заключался в том, что большинство изображений не были корректно восстановлены из резервной копии в ходе операции восстановления. Мне удалось решить проблему, вручную распаковав архив и скопировав отсутствующие изображения в директорию загрузок Discourse.

Анализ

Когда я пытаюсь загрузить новый логотип, я наблюдаю следующее:

  1. Загрузка изображения, кажется, проходит успешно:

  1. Однако последующий GET-запрос для отображения загруженного изображения возвращает ошибку 404:

  1. Изображение отсутствует в директории загрузок:
/var/discourse# tree shared/standalone/uploads/default/original/
shared/standalone/uploads/default/original/
`-- 1X
    |-- 52b3aff4e63a7e38bef42d469bafd1ed7c1cc1a2.png
    `-- e952cfd4c1bc58e77024e4c2b518531356319780.png

Вот что содержит резервный tar-архив:

/tmp# tar tvzf ask-tunisians-2020-07-28-042934-v20200728004302.tar.gz 
-rw-r--r-- discourse/www-data 11767008 2020-07-28 04:29 dump.sql.gz
drwxr-xr-x discourse/www-data        0 2020-07-26 21:11 var/www/discourse/public/uploads/default/
drwxr-xr-x discourse/www-data        0 2020-07-26 21:11 var/www/discourse/public/uploads/default/original/
drwxr-xr-x discourse/www-data        0 2020-07-27 20:33 var/www/discourse/public/uploads/default/original/1X/
-rw-r--r-- discourse/www-data    14843 2020-07-26 21:56 var/www/discourse/public/uploads/default/original/1X/7835873085d7323b640c2504cd737b51f370360f.png
-rw-r--r-- discourse/www-data     9039 2020-07-27 20:33 var/www/discourse/public/uploads/default/original/1X/75a192f211147f512bdddabaf50addd43c6a9d86.png
-rw-r--r-- discourse/www-data     5783 2020-07-26 21:56 var/www/discourse/public/uploads/default/original/1X/19629775936660ecc73235158b4d68b9ec4b2abe.png
-rw-r--r-- discourse/www-data    11124 2020-07-26 21:11 var/www/discourse/public/uploads/default/original/1X/e952cfd4c1bc58e77024e4c2b518531356319780.png
-rw-r--r-- discourse/www-data    35570 2020-07-26 21:11 var/www/discourse/public/uploads/default/original/1X/52b3aff4e63a7e38bef42d469bafd1ed7c1cc1a2.png
-rw-r--r-- discourse/www-data     2375 2020-07-26 21:56 var/www/discourse/public/uploads/default/original/1X/d4af3550a7c3f857c974b996257c8e3db72e7850.png
-rw-r--r-- discourse/www-data     9759 2020-07-26 22:14 var/www/discourse/public/uploads/default/original/1X/dfc47da4c22ffeddf59f736a46a2c50ee55d7fa1.png
-rw-r--r-- discourse/www-data    24898 2020-07-26 21:46 var/www/discourse/public/uploads/default/original/1X/d832b24f2cb338139984be98045d22e0af093c4a.png

Очевидно, что изображения присутствовали в архиве, но возникает вопрос: почему большинство из них не были корректно скопированы в ходе операции восстановления?