로컬 백업을 DigitalOcean Spaces에 동기화하는 Cron 작업

DigitalOcean Spaces로 백업을 하는 것이 작동하지 않는 것 같습니다. 하지만 서버는 동일한 자격 증명으로 s3fs를 통해 버킷이 마운트되어 있습니다. 업로드 등은 필요 없고, 백업만 Spaces에 저장되면 됩니다. 로그에는 EXCEPTION: Aws::S3::Errors::Forbidden이 표시되고, 프로덕션 로그에는 Failed to list backups from S3: Aws::S3::Errors::SignatureDoesNotMatch가 표시됩니다.

bash 스크립트를 통해 로컬 백업을 버킷으로 이동하는 작업을 cron으로 실행할 수 있는 방법이 있을까요? 감사합니다.

이 문제를 겪고 있지만 계속 진행하려는 분들을 위해, bash 터미널에서 다음 명령을 실행할 수 있습니다. 사용자는 docker 그룹에 속해 있어야 합니다.
docker cp app:"/var/www/discourse/public/backups/default" /whatever-host-path/

디스커스 백업을 말씀하시는 건가요? 그렇다면 왜 여기에 있는 건가요?

스페이스로 보내고 싶으시다면 S3 백업을 설정하면 되지 않을까요?

주 사이트는 WordPress입니다. Discourse는 하위 디렉터리에 설치되어 있습니다.
주 사이트: main.com
Discourse: main.com/forums
하지만 DigitalOcean Spaces의 S3 자격 증명을 설정하면 위의 오류가 발생합니다. 마감 기한이 있어 이전에 언급한 명령어로 우회했습니다. 하지만 이 문제를 해결하기 위해 작동하는 설정과/또는 문제 해결 단계를 확인하면 도움이 될 것 같습니다.

위에서 s3fs를 언급하셨는데, 그건 필요하지 않습니다. 위의 오류는 s3fs에서 발생하고 있으며, s3fs는 Discourse가 지원하지 않는 기능입니다. Setting up file and image uploads to S3 또는 Using Object Storage for Uploads (S3 & Clones)와 같은 가이드를 따르되, 백업 버킷만 설정하시면 됩니다.

더 명확히 설명하자면, DigitalOcean Spaces 버킷을 마운트한 것은 컨테이너가 아니라 호스트입니다. 두 문제는 서로 무관합니다. Discourse가 S3로 설정된 경우 백업에서 오류가 발생합니다. 로컬 백업을 호스트 머신으로 수동 복사한 뒤 DigitalOcean Spaces로 이동하면 백업이 정상적으로 작동합니다.

만약 Forbidden 로그가 s3fs가 아닌 Discourse에서 발생한다면, Spaces 버킷에 저장하려는 과정에서 자격 증명이나 버킷 이름이 잘못된 경우일 수 있습니다.

아!

   S3에서 백업 목록을 가져오는 데 실패했습니다:

아. 그게 문제인 것 같습니다. 버킷 목록을 가져오려는데 실패하고 있네요. 어떻게 수정해야 하는지는 정확히 모르지만, 해결해야 할 문제가 바로 그것입니다. 따라서 제목을 수정해 보시는 것이 좋습니다. S3 백업을 수정하고 싶다면 여기에서 도움을 받을 수 있고, s3fs를 구성하고 싶다면 다른 곳에서 도움을 받아야 할 가능성이 큽니다.

app.yml 파일에 다음 환경 변수를 시도해 보세요.

  FORCE_S3_UPLOADS: 1

엔드포인트가 올바른가요? Using Object Storage for Uploads (S3 & Clones) 문서의 Digital Ocean 섹션을 확인해 보세요.

마침내 DigitalOcean Spaces에서 이 방법이 작동했습니다. a) 백업 파일을 Object Storage에 업로드하고, b) 파일 업로드를 Object Storage에 업로드하지 않는 방식입니다. 이 문제를 해결된 것으로 표시해 주시면 감사하겠습니다. 모두 감사합니다!