S3 마이그레이션 후 로컬 업로드 제거

최근에 파일을 S3(Contabo 객체 저장소)로 이동하는 데 성공했습니다. Configure an S3 compatible object storage provider for uploads - #474 by tumbano

하지만 이전 로컬 파일이 삭제되지 않았습니다. 제가 읽은 바로는 자동으로 처리되어야 하는 것 같은데(고아 업로드 정리를 1시간으로, 삭제된 업로드 정화 대기 기간을 1일로 설정해 두었습니다) 그렇지 않습니다. 또한 sidekiq에서 “Jobs::CleanUpUploads” 작업이 실패(FAILED) 상태로 표시되고 있습니다.

파일을 안전하게 삭제하거나 커맨드 라인에서 작업을 실행할 수 있는 방법이 있을까요?

저도 비슷한 문제를 겪고 있습니다. 제 업로드 파일은 모두 버킷에 있지만, 서버의 공유 디렉터리에도 동시에 존재합니다 :thinking:

테스트로 새 사이트 백업을 생성해 봤는데, 공유 디렉터리와 S3 버킷 양쪽에 모두 저장되었습니다.

맞아요, 백업이 그렇지 않다고 표시되어 있더라도 로컬 업로드 폴더를 아카이브에 포함시킵니다.

마이그레이션 과정의 끝에 오류가 발생하여 일부 파일이 전송되지 않았다는 것을 기억합니다. 80,000개 이상의 이미지 중 몇 개가 누락된 것에 대해 저는 크게 신경 쓰지 않았지만,谁知道, 아마도 Discourse는 신경 썼을 수도 있으니 오늘 다른 주제에서 찾은 것을 시도해 보았습니다.

cd /var/discourse
./launcher enter app
VERBOSE=1 rake posts:missing_uploads

그 결과, 이미지 1장이 누락된 게시글이 2건 있었고 정확한 링크를 제공받았기 때문에 가서 게시글을 수정했습니다. 명령을 다시 실행한 후 이번에는 누락된 파일이 없었습니다.
조금의 희망을 품고 다시 rake uploads:migrate_to_s3를 실행해 보았지만, 운이 좋게도 실패했습니다. 이렇게 종료됩니다.

Updating the URLs in the database...
Removing old optimized images...
Flagging all posts containing lightboxes for rebake...
16163 posts were flagged for a rebake
rake aborted!
FileStore::ToS3MigrationError: 4 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:81:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:383:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:36:in `each_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3