S3에서 로컬로 업로드 마이그레이션

불행히도 제 경우에는 100% 효과가 없었습니다. 결국 어떻게 하셨나요?

오늘날의 3.x 버전에서 이것이 어떻게 작동하는지에 대한 단서가 있을까요? S3에 여전히 로컬로 가져와야 할 이미지들이 많이 남아 있습니다. 제안을 환영합니다. (rake uploads:migrate_from_s3는 더 이상 존재하지 않음)

모든 설정을 로컬에서 작동하도록 변경했습니다(백업만 S3에 있음). 여전히 S3를 가리키는 링크가 포함된 게시물을 많이 발견했습니다:

<img src="//x.amazonaws.com/original/1X/afda2721f64341ca46576020acae7aaee92bd9d3.PNG" width="308" height="206">

이 링크는 다음을 가리킵니다:

https://xxx.amazonaws.com/original/1X/afda2721f64341ca46576020acae7aaee92bd9d3.PNG

이 문제에 대해 어떤 제안이 있으신가요? 업데이트나 변경 사항마다 문제가 생겨서 정말 지쳐요 :slight_smile:

해결되지 않았습니다. discourse에 해결책이 있으면 좋겠습니다.

아, 만약 해당 사이트가 본인의 것이라면, 그리고 S3에 파일이 저장되어 있다면, S3를 활성화하고 https://meta.discourse.org/t/enable-hidden-setting-to-include-s3-uploads-in-the-backups/276535에 설명된 숨겨진 설정을 켜서 백업을 만든 후, 설정을 로컬 이미지로 변경하고 백업을 복원하면 됩니다.

누군가 이걸 성공적으로 구현한 적이 있는지 궁금합니다.

Discourse.org 호스팅에서 셀프 호스팅으로 마이그레이션하는 모든 사이트에 적용됩니다(백업 생성 전에 해당 설정이 이미 활성화되어 있어야 합니다).

백업을 생성할 때 S3 설정을 모두 올바르게 구성해 두어야(YML 파일에서) 하고, 복원 전에 다시 모두 끄는(데이터베이스에 설정한 경우를 포함해 모든 위치에서) 과정이 다소 까다롭습니다.

매우 논리적인 방법이지만, Cloudflare R2를 사용하는 사람들에게는 작동하지 않습니다. 아니면 이 문제가 저에게만 있는 것일 수도 있습니다. 백업을 만들 때 숨겨진 설정도 함께 켰는데, 안타깝게도 R2에 있는 파일들이 백업에 포함되지 않습니다. 여기에서 오류가 발생합니다: Uploads in cloudflare R2 are not added to the backup: Failed to download ******* because Aws::S3::Errors::Http501Error

문서와 귀하의 경험에 따르면 R2가 지원되지 않으므로, 다른 방식으로 문제를 해결해야 합니다.

저에게는 작동하는 것 같았지만, 매우 주의 깊게 테스트하지 않았고, 단순한 스모크 테스트 이상으로 사용하지 않았습니다.

백업이 R2에서 파일을 다운로드하지 않는 경우, R2에서 파일을 가져오는 다른 도구를 사용하여 파일을 가져온 후 새 버킷으로 푸시하고, 수동으로 데이터베이스를 업데이트해야 합니다(아마도 remap rake 태스크를 사용하여 주제를 검색할 수 있을 것입니다).

이것은 복잡한 과정이므로 R2, S3, 그리고 Discourse의 업로드에 대해 상당한 지식을 갖추어야 합니다. 포럼에서 해결책을 얻을 수 있을 만큼 귀하의 정확한 문제를 충분히 구체적으로 설명하기가 어려울 것입니다.

저는 파일을 수동으로 다운로드한 후 서버에 업로드합니다. 이 방법을 궁금해하시는 분들을 위해, WinSCP 프로그램을 사용하면 S3 계정에 연결할 수 있습니다. 연결 후 파일을 컴퓨터로 쉽게 가져올 수 있습니다. 이후 파일을 로컬에 업로드하고 토픽을 다시 생성했는데, 게시글 수가 0개로 표시되었습니다. 상대방은 아무 조치도 취하지 않았습니다. 제가 나중에 설정을 변경해 보았지만, 역시 아무것도 찾지 못했습니다. 제가 놓친 부분이 있는 것 같지만, 다시 테스트해 보지 않은 상태에서 단정적으로 말하고 싶지 않습니다. 만약 다시 시도해 본다면 결과를 작성하겠습니다. 감사합니다.

파일을 서버로 전송하는 것은 문제의 (쉬운) 부분일 뿐입니다.

아래 명령어를 사용하여 업로드된 파일을 확인할 수 있습니다.

cd /var/discourse
./launcher enter app
rails c
Upload.pluck(:url)

이렇게 하면 업로드된 파일들의 URL이 표시됩니다. 이후 새 버킷으로의 새 경로를 갖도록 모든 업로드 파일을 수정해야 합니다. remap 명령어를 검색해 보시는 것을 권합니다. 작동할 것 같습니다.

이 말의 정확한 의미가 무엇인지 확실하지 않습니다.

이 부분을 어떻게 해야 하는지 알려주실 수 있나요? 백업 설정에서 S3 업로드 포함을 false로 설정하는 것만 말씀하신 건가요, 아니면 다른 방법이 있나요?

S3 호환 객체 저장소 제공자 설정은 app.yml에 추가하여 S3를 설정하는 방법을 설명합니다. 해당 방식으로 설정하지 않았다면 사이트 설정에서 S3와 관련된 모든 항목을 해제한 뒤, 설명된 방식대로 설정하십시오.

해당 방식으로 설정했다면 해당 설정을 주석 처리하면 됩니다(아마도 use_s3와 업로드 버킷만 주석 처리하면 될 것입니다).