삭제된 게시물에 첨부된 서버 사진 삭제 방법

사진이 포함된 수천 개의 게시글을 삭제한 후에도 관리자 페이지의 업로드 용량은 그대로입니다. 이 설정값은 1로 되어 있었습니다. 삭제된 게시글과 관련된 모든 업로드를 더 빠르게 정리하는 방법이 있을까요?

purge deleted uploads grace period days

삭제된 업로드가 완전히 삭제되기 전까지의 유예 기간(일 단위).

다른 게시글에서 본 내용을 따라 했지만, 재빌드(rebuild) 후에도 아무것도 사라지지 않았습니다.

sidkiq에도 들어갔습니다.

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

모든 것을 삭제한 후에도 업로드 용량이 13.7GB에서 14GB로 늘었습니다. 삭제할수록 오히려 업로드 데이터 용량이 커지는 것 같습니다.

이 내용을 잘 이해하지 못하겠습니다. 저는 아무것도 업로드하지 않았고, 테스트 사이트에서 게시물과 카테고리만 삭제했습니다. 현재 사용자는 없으며, 약 3시간 정도 지났습니다. 13.7부터 현재까지 이 상태가 유지되고 있습니다. 고아 업로드 파일(orphan uploads)을 1시간 후에 삭제하도록 설정해 두었는데, 삭제가 이루어지지 않았습니다.

많은 내용을 다루는 이 스레드를 봤는데, 아무 변화가 없나요?

그리고 이 스레드도 있습니다.

rails에서 언급된 모든 방법, sidekiq, 그리고 해당 스레드에서 제시된 명령어를 모두 시도해 봤지만 여전히 아무것도 삭제되지 않습니다. 사용자의 게시물이 삭제되었으므로, 각 스레드에 사진이 첨부되어 있었기 때문에 수백 장에서 수천 장의 이미지가 삭제되었어야 합니다.

post_uploads 테이블은 더 이상 존재하지 않는 것 같습니다. 현재는 uploads와 upload_references로 변경되었습니다. 해당 방법을 시도하고 있다면, 이 변경 사항을 반영하도록 기존 스니펫을 업데이트해야 할 수 있습니다.

해당 게시글들을 어떻게 삭제하셨나요? UI에서 소프트 삭제만 수행하신 건가요? 고아 이미지(orphaned images)를 정리하는 설정(clean orphan uploads grace period hours)은 게시글이 소프트 삭제되었는지를 고려하지 않고, 이미지가 게시글의 최신 버전에서 여전히 존재하는지만 확인하는 것 같습니다:

rails 콘솔에서 모든 게시글을 선택하여 PostDestroyer를 사용해 하드 삭제(hard delete)한 후, 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는 User Directory를 채우는 잡들이므로, 여기서는 관련이 없습니다.)