Ajuda para excluir fotos do servidor que foram anexadas a posts excluídos

Após excluir vários milhares de postagens com fotos, os uploads na seção de administração permanecem os mesmos. Essa configuração foi definida como 1. Existe uma maneira de purgar todos os uploads associados a postagens excluídas mais rapidamente?

purge deleted uploads grace period days

Período de carência (em dias) antes que um upload excluído seja apagado.

Eu fiz isso, o que vi em outra postagem, mas depois de reconstruir nada foi removido

Entrei no sidkiq

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

Passei de 13,7 GB de uploads para 14 GB após excluir tudo. Parece que quanto mais eu excluo, maior o volume de dados de uploads.

Não tenho certeza se entendo isso. Não carreguei nada, apenas excluí posts e categorias em um site de teste. Não há usuários no momento e já se passaram cerca de 3 horas. De 13.7 até agora, está mostrando isso. Uploads órfãos definidos para excluir em uma hora e isso não aconteceu.

Vejo este tópico que discute muito, mas nada aconteceu?

Então este aqui.

E eu tentei tudo em rails mencionado, sidekiq, e com comandos naquele tópico e ainda nada é excluído. Deveriam ser centenas, senão milhares de imagens excluídas, já que os usuários postaram fotos com cada tópico.

Acho que a tabela post_uploads não existe mais. Agora é uploads e upload_references. Você pode precisar atualizar esse trecho antigo para levar isso em consideração se estiver tentando usar esse método.

Como você excluiu essas postagens? Apenas excluindo logicamente na interface? Acho que a configuração que limpa imagens órfãs (clean orphan uploads grace period hours) não leva em consideração se elas foram excluídas logicamente, e só se importa se a imagem ainda está na versão mais recente da postagem:

Acho que você pode selecionar todas as postagens no console Rails e usar o PostDestroyer nelas para excluí-las permanentemente, e então os uploads serão limpos na próxima vez que Jobs::CleanUpUploads for executado (ou acionado manualmente).

Se for uma categoria inteira, por exemplo, acho que você pode usar algo assim:

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

Acho que também há alguma conversa neste tópico que você pode achar útil Delete deleted-posts permanently in bulk? - #57 by Simon_Manning

:warning: E adicionarei o aviso usual sobre fazer um backup antes de fazer alterações no console Rails, apenas por precaução. Alerta de Faca Afiada. :rotating_light:

(Apenas para sua informação, mas Jobs::DirectoryRefreshDaily e Jobs::DirectoryRefreshOlder são os que preenchem o Diretório de Usuários, então não são relevantes aqui)

5 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.