Помощь с удалением фотографий с сервера, прикрепленных к удаленным сообщениям

После удаления нескольких тысяч постов с фотографиями размер загрузок в разделе администратора остался прежним. Это значение было установлено на 1. Есть ли способ быстрее очистить все загрузки, связанные с удалёнными постами?

purge deleted uploads grace period days

Период льготного хранения (в днях) перед окончательным удалением удалённой загрузки.

Я выполнил то, что увидел в другом посте, но после перестроения ничего не исчезло.

Затем я зашёл в Sidekiq:

* Jobs::CleanUpUploads
* Jobs::PurgeDeletedUploads
* Jobs::DirectoryRefreshDaily
* Jobs::DirectoryRefreshOlder

После удаления всего объём загрузок вырос с 13,7 ГБ до 14 ГБ. Похоже, чем больше я удаляю, тем больше становится объём данных загрузок.

Не совсем понимаю, в чём дело. Я ничего не загружал, только удалял посты и категории на тестовом сайте. Пользователей сейчас нет, прошло уже около 3 часов. С версии 13.7 до сих пор отображается вот это. Удаление сиротских загрузок настроено на выполнение через час, но ничего не произошло.

Я нашёл эту тему, где много обсуждается, но ничего не произошло?

А также эту:

Я перепробовал всё, что упоминалось в Rails, Sidekiq и командами из той темы, но ничего не удаляется. Должно было быть удалено сотни, если не тысячи изображений, так как пользователи удаляли свои посты, содержащие фотографии в каждом обсуждении.

Я не думаю, что таблица post_uploads больше существует. Теперь это uploads и upload_references. Если вы пытаетесь использовать этот метод, возможно, вам потребуется обновить тот старый фрагмент кода с учётом этих изменений.

Как вы удалили эти посты? Просто мягкое удаление через интерфейс? Мне кажется, что настройка, очищающая сиротские изображения (clean orphan uploads grace period hours), не учитывает, были ли они мягко удалены, а проверяет только то, осталось ли изображение в последней версии поста:

Думаю, вы можете выбрать все посты в консоли Rails и применить к ним PostDestroyer для их жёсткого удаления. После этого загрузки будут очищены при следующем запуске Jobs::CleanUpUploads (или при ручном запуске).

Если речь идёт о целой категории, например, можно использовать что-то вроде этого:

category = Category.where(id: CATEGORY_ID).pluck(:id)  
topic = Topic.where(category_id: category).pluck(:id)

topic.each do |t|
  Post.where(topic_id: t).find_each do |p|
    PostDestroyer.new(Discourse.system_user, p).destroy
    p.destroy! 
  end
end

Также в этой теме есть обсуждение, которое может оказаться полезным: Delete deleted-posts permanently in bulk? - #57 by Simon_Manning

:warning: И как обычно, предупреждаю: сделайте резервную копию перед внесением изменений в консоли Rails, на всякий случай. Осторожно, острый нож! :rotating_light:

(Кстати, Jobs::DirectoryRefreshDaily и Jobs::DirectoryRefreshOlder отвечают за заполнение каталога пользователей, поэтому здесь они не имеют отношения к делу).