서버 마이그레이션 중 업로드된 파일이 사라졌습니다

Discourse 호스팅에서 자체 호스팅으로 이전했지만 포럼의 모든 이미지가 사라졌습니다. 이전한 지 30일이 넘은 후에야 이 사실을 알게 되었습니다.

알게 되었을 때 다음 코드를 실행했지만 작동하지 않았습니다:

`> ./launcher enter app
> rake posts:rebake

`

Discourse 지원팀에 문의했으나, 30일이 지났기 때문에 백업을 복원할 수 없다고 하였습니다. 이 문제를 해결하려면 어떻게 해야 할까요:

안녕하세요. 말씀드리기 싫지만, 여기서 할 수 있는 일이 없을 수도 있습니다.

이미지를 포함한 전체 백업을 하지 않았고, 호스트 측이 자체 백업을 삭제한 시점 이후에야 이를 인지했다면, 데이터는 아마도 영구적으로 손실된 상태일 것입니다.

괜찮으시다면 여쭤봐도 될까요? 이미지가 백업에 없다는 사실을 한 달 뒤에야 인지하게 된 이유는 무엇인가요? 사이트가 한 달 동안이나 다운되어 있었나요?

아니요, 사이트는 활성 상태였지만 다른 업무로 바빴습니다. 또한, 저는 Discourse 관리 패널에서 전체 백업을 수행합니다.

자산이 S3와 같은 원격 저장소에 저장되어 있었다면, 백업에 포함되지 않습니다.

또한 업로드를 건너뛰는 업로드 포함 백업 설정도 있습니다.

백업 파일의 크기는 얼마인가요?

아마도 계정을 삭제하기 전에 백업을 다운로드하셨고, 그 안에 업로드된 파일이 포함되지 않았을 가능성이 큽니다.

상대방에게 S3에 업로드된 파일을 일시적으로 복원해 줄 수 있는지 매우 정중하게 다시 요청해 보세요. 저도 얼마 전 비슷한 상황을 겪었는데, 당시 상대방이 오래된 S3 버킷을 정리하던 중이었지만, 잠시 동안 S3에 업로드된 파일을 복원해 주었습니다.

만약 복원이 가능하다면, 그 이미지들을 S3에서 다운로드한 후 자신의 S3 버킷에 다시 업로드하거나, 다른 방법으로 Discourse로 가져오는 방법을 찾아보실 수 있습니다. 다소 번거로운 작업이지만, 불가능한 일은 아닙니다.

그럴 가능성이 큽니다. 최종 전체 백업 링크에는 S3 업로드 파일이 포함되지만, 다른 백업에는 포함되지 않습니다.

이 계정에 대한 이전 지원 요청을 찾을 수 없습니다. 이전 사이트와 연관된 이메일이 있는 계정으로 @team에게 사이트 이름을 개인 메시지로 보내주시면, 업로드 파일이 더 이상 사용 가능하지 않은지 다시 확인해 드리겠습니다.

이주된 사이트가 이미지들을 CDCK S3에서 계속 로드하기 때문에 알아차리지 못합니다. 이미지들이 삭제된 후에야 문제가 드러나지만, 그때는 이미 늦습니다.

업로드 파일에도 S3 버킷 버전 잠금 기능을 적용하고 있으므로, 삭제된 이후에도 일정 기간 동안 복원이 가능합니다.

S3의 작동 방식은 잘 이해하고 있습니다. 서버 간 사이트 이전 시 S3는 보통 큰 이점이 되죠. 제가 언급한 것은 파일 크기에서 비교적 큰 차이였습니다.

저희 포럼은 방대한 데이터베이스를 갖추고 있지만 업로드된 파일은 (상대적으로) 적습니다. 그런 포럼의 백업 파일 크기를 정확히 예측하는 것은 물론, 백업이 포함된 백업과 그렇지 않은 백업의 차이를 구별하는 것도, 특히 둘 중 하나만 존재하는 경우에는 완전히 불가능할 것입니다.

아마도 저는 좀 더 오래된 세대 출신인 것 같습니다. 제 운영 엔지니어링 경력은 테이프 스택과, 검증하지 않으면 백업이 될 수 없다는 원칙, 그리고 그 백업이 실제로 작동하며 예상된 데이터를 포함하는지 확인해야 한다는 원칙에서 시작되었습니다. LTO에서 데이터를 복구하는 데 몇 시간을 보낸 뒤, 권한이나 파일 잠금 때문에 백업 에이전트가 중요한 파일을 가져오지 못했음을 깨달았을 때의 경험만큼 답답한 일은 없습니다.

현재의 구성 방식이 신규 사용자도 숙련된 사용자도 모두 혼란스럽게 만든다면, 파일명에 complete와 no-uploads를 추가하는 등 더 명확한 표시가 필요하지 않을까요? 기존 방식은 사용자에게 잘못된 안일함을 주고 있으므로, 확실히 개선의 여지가 있다고 생각합니다.

@supermathie, 이 제안에 대해 어떻게 생각하시나요?

글쎄, 우리 같은 세대인 것 같고, 나였다면 그걸 믿지 않았을 거야.

하지만 한 손으로는 우리(커뮤니티)는 사람들에게 "간단해, 설명만 따라 하면 돼"라고 하면서 셀프 호스팅을 하라고 계속 말하고 있지. 그런데 이제는 백업 파일의 크기만 확인하는 걸 넘어, .tar.gz 파일의 내용까지 직접 살펴봐 달라고 기대하고 있어. 아마 대부분의 사람들은 이 용어를 들어본 적도 없고, 어떻게 해야 하는지도 모를 거야. 그리고 설령 할 줄 안다고 해도, 내용이 충분히 들어 있는지 판단하기는 쉽지 않아. S3에 업로드를 저장하는 대부분의 포럼은 로컬 파일도 일부 가지고 있지. 모든 파일이 다 있거나, 하나도 없거나 하는 그토록 흑백이 아닌 상황이니까.

업로드가 (이전) S3 위치에 그대로 남아 있는 상태에서 포럼을 복구할 때의 문제는, 사실상 작동한다는 거야. 모든 것이 정상처럼 보이다가, 한 달 뒤에 업로드가 사라져. 그리고 설령 파일이 누락되어 있다 해도, 복구 과정에서는 "누락된 이미지를 볼 수 있는 것은 정상"이라고 알려주면서 결국 모든 것이 괜찮아질 거라고 하지 않나?

그러면 이 부분도 개선해 보죠?

아마도 백업이 새 인스턴스로 복원되는 시점을 감지하여, 방금 실행한 복원에 자산이 포함되지 않았다고 사용자에게 경고해야 할 필요가 있을 것 같습니다.

이 부분은 확실히 개선될 거라고 생각합니다. 업로드 없이 백업을 복원할 때 경고를 표시하는 것은 매우 합리적입니다.