Ах, действительно, теперь всё становится на свои места
Вы можете проверить это локально с помощью любого SSH-клиента, который вам удобен. В зависимости от вашей конфигурации файлы должны находиться где-то вроде /var/discourse/shared/standalone/uploads/default/original/2X/
Так что вы можете выполнить ls -R /var/discourse/shared/standalone/uploads/ | grep 4064b, чтобы найти файл 4064b…d.png
Речь идёт об одном и том же экземпляре Discourse, что и у @masterakay.
Мы перешли на S3 более двух лет назад; ни один файл в локальной директории загрузок не новее 2018 года.
Насколько я понимаю, изображения загружаются в папку «original», обрабатываются (обрезаются, уменьшаются в размере и т. д.) и помещаются в папку «optimized». URL-адреса, которые Discourse использует при загрузке изображений, всё ещё ведут на папку «/original/1X/». Однако после обновления папка «1X» исчезла.
Существует папка «default», в которой также находится множество загрузок (изображения и т. д.), включая обрезанные версии. Здесь около 10 тысяч файлов, что составляет примерно 2,5 ГБ.
Проблема в том, что URL-адреса изображений в постах всегда указывают на версию «original».
Мы заметили, что отсутствующие файлы — это подмножество файлов из папки «default».
Новые загрузки работают без проблем и сохраняются в папку «/original/2X/».
У кого-нибудь есть идеи, куда могла деться папка «/original/1X/», и можно ли её восстановить?
@sam@codinghorror Извините, что втягиваю вас в это, но ситуация довольно срочная. Мы студенты и в какой-то степени беспомощны перед лицом давления со стороны колледжа, требующего исправить изображения.
Как вы настроили S3? Вы задали какие-либо значения в app.yml или только через административный интерфейс? Похоже, что для DISCOURSE_S3_BUCKET или DISCOURSE_S3_BACKUP_BUCKET указано что-то неожиданное.
Действительно. Возможно, в коде что-то работает некорректно, но мы не знаем ни что именно, ни почему. Поэтому нам нужна дополнительная информация.
Существует два способа настройки S3: вы можете настроить окружение в файле app.yml или ввести значения через административный интерфейс. Имена переменных в каждом случае немного отличаются.
Тема, на которую вы ссылаетесь, описывает настройку через административный интерфейс. Если вы настраивали свой сайт именно так, сообщите, пожалуйста, какие значения у вас указаны для s3_upload_bucket и s3_backup_bucket?
Проблема возникла из-за того, что эти настройки не должны иметь одинаковое значение — поищите в теме настройки строку «Действительно ли мне нужно использовать отдельные бакеты для загрузок и резервных копий?».
Фоновая задача обработки данных в бакете резервных копий затронула загрузку файлов, поскольку их значения пересекались.
@sam, вероятно, нам стоит закрепить это в коде, а не только в документации.
Чтобы исправить ситуацию на вашем сайте, нужно выполнить два шага:
Сначала измените префикс резервных копий — достаточно добавить /backups в конец, как описано в теме настройки.
Затем переместите все объекты из бакета S3 обратно в правильное место. Всё, что находится в верхней папке «default», нужно вернуть на верхний уровень.
Например, там, скорее всего, есть папка «default/originals», которую следует переместить выше.
Для этого вам придётся использовать веб-консоль AWS или другой инструмент для просмотра содержимого бакета.
Привет @schleifer, это имеет смысл, я добавил префикс backups к имени бакета.
Что касается существующих загрузок, все они находятся в /default/ (не в подпапках). Ссылки на изображения в постах (и везде еще) используют /original/* или /optimized/*.
Если мы переместим всё из папки default на уровень выше (в корень), то изображения окажутся в /*.
И нет, внутри defaults нет никаких папок, только файлы загрузок. Похоже, там содержатся файлы со стандартными именами из 40 символов хеша, а также некоторые с суффиксами вроде “_2_10x10” (которые, я предполагаю, относятся к оптимизированным).
Как ты предлагаешь это исправить? Исправление всех постов с новыми ссылками займет время. Возможно ли как-то сгруппировать файлы в правильные папки на основе этого имени файла?
Самый важный вопрос: «будут ли новые файлы загружаться в правильное место?»
Если это так, вы можете переместить старые файлы в известное место и обновить соответствующие записи в базе данных. Сколько файлов находится в /default/?
К счастью, новые загрузки корректно размещаются в подпапках. Ссылки в постах также указывают на правильные места.
В /default/ более 10 тысяч файлов. Ручное редактирование каждого поста кажется очень трудоёмким. Есть ли способ автоматизировать этот процесс? Возможно, с помощью замены по регулярному выражению во всех постах?
Да, это в наших планах. Следующий шаг — разместить все отсутствующие файлы в известном месте. В бакете какие подкаталоги находятся под /original/? Там должен быть /1X/, а также могут быть другие.
Это полная структура папок. Новые загрузки (работают корректно) сохраняются в /original/2X/*/.jpg
/
|---backups
|---default
|---(набор файлов резервных копий .tar.gz)
|---default
|---(10719 загруженных файлов: pdf, изображения и др.)
|---inventory
|---1/pesuioforum/{optimized,original}/[DATE]/manifest.{checksum,json}
|---optimized
|---1X
|---(2 файла)
|---2X
|---{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}
|---(загруженные файлы, имена которых начинаются с символа имени папки выше) (всего 1055 файлов)
|---original
|---2X
|---(То же, что и optimized/2X, 520 файлов)
|---tombstone
|---optimized
|---1X
|---(2 файла)
|---original
|---2X
|---(То же, что и optimized/2X, 1 файл)
Следующий шаг — поместить все отсутствующие файлы в известное место.
В /default/ уже, похоже, находятся все изображения.