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/
주 사이트는 WordPress입니다. Discourse는 하위 디렉터리에 설치되어 있습니다.
주 사이트: main.com
Discourse: main.com/forums
하지만 DigitalOcean Spaces의 S3 자격 증명을 설정하면 위의 오류가 발생합니다. 마감 기한이 있어 이전에 언급한 명령어로 우회했습니다. 하지만 이 문제를 해결하기 위해 작동하는 설정과/또는 문제 해결 단계를 확인하면 도움이 될 것 같습니다.
더 명확히 설명하자면, DigitalOcean Spaces 버킷을 마운트한 것은 컨테이너가 아니라 호스트입니다. 두 문제는 서로 무관합니다. Discourse가 S3로 설정된 경우 백업에서 오류가 발생합니다. 로컬 백업을 호스트 머신으로 수동 복사한 뒤 DigitalOcean Spaces로 이동하면 백업이 정상적으로 작동합니다.
만약 Forbidden 로그가 s3fs가 아닌 Discourse에서 발생한다면, Spaces 버킷에 저장하려는 과정에서 자격 증명이나 버킷 이름이 잘못된 경우일 수 있습니다.
아!
S3에서 백업 목록을 가져오는 데 실패했습니다:
아. 그게 문제인 것 같습니다. 버킷 목록을 가져오려는데 실패하고 있네요. 어떻게 수정해야 하는지는 정확히 모르지만, 해결해야 할 문제가 바로 그것입니다. 따라서 제목을 수정해 보시는 것이 좋습니다. S3 백업을 수정하고 싶다면 여기에서 도움을 받을 수 있고, s3fs를 구성하고 싶다면 다른 곳에서 도움을 받아야 할 가능성이 큽니다.
마침내 DigitalOcean Spaces에서 이 방법이 작동했습니다. a) 백업 파일을 Object Storage에 업로드하고, b) 파일 업로드를 Object Storage에 업로드하지 않는 방식입니다. 이 문제를 해결된 것으로 표시해 주시면 감사하겠습니다. 모두 감사합니다!