내 게시물 중 하나에서 이미지가 갑자기 사라졌습니다. rails 콘솔에서 PostCustomField.where(name: Post::MISSING_UPLOADS)를 실행해 보니 다음과 같은 결과가 나왔습니다:
[#<PostCustomField:0x00005636227c20a0
id: 7335,
post_id: 36,
name: "missing uploads",
value:
"[\"upload://ljcw6gjRoPMD0IB5Vcc6K23VXIA.png\",
\"upload://v6caNgjm6wDrHzN8MQdXYnlNJEs.png\",
\"upload://bn2lC9z0Xp4Fit00p6KepGMZZ2h.png\",
\"upload://omhuL50n5VfAxY8Reyf2rQFoEWb.jpeg\",
\"upload://yJCRzx9SogObwuj1En0QciZdntF.jpeg\",
\"upload://wOeXgaPEBBia8oS0xxbOr5NKNWo.gif\",
\"upload://fuXMNACp8WoEHEr3ayciiVJjmNl.png\",
\"upload://MTIX7g8Wu11qaJasGg5yGsFvJA.jpeg\",
\"upload://oKle1GsOlPD85zeHiKRdUGJCCEM.jpeg\",
\"upload://zY43AR6Xpga92HNzdEnxQRIVpYE.gif\",
\"upload://ufigIPfGEPbDInHP4co0I0YDT51.png\",
\"upload://h7A1BJjNwZZwuUTYWXCeASk7UAh.png\",
\"upload://gmFGijsek8NmtfqBwAguIgkzDFP.png\",
\"upload://qPFQBe9zvnTmOnqMhpofQF3oqCh.png\"]",
created_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00,
updated_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00>,
게시물당 이미지가 14개뿐이라 수동으로 수정하는 것은 괜찮지만, S3 버킷에서 원래 이미지를 어떻게 찾아야 할지 감이 잡히지 않습니다. 여기에서 파일명으로 검색해 봤지만 아무 결과도 나오지 않았습니다:
maiki
(maiki)
2
저는 S3를 그 자체로 사용하지는 않지만, 이미지가 존재하지 않는다면 이미지 누락의 원인이 되지 않을까요?
진짜로: 해당 파일 이름을 확인할 수 있는 로그가 있나요? 혹시 어떤 프로그램에 의해 이상하게 삭제된 건 아닌지요?
문제는 S3 웹 콘솔이 현재 폴더에서만 검색하는 것처럼 보인다는 것입니다. 특정 폴더로 들어가서 그 안에 있는 파일을 검색하면 찾습니다. 하지만 상위 폴더로 올라가면 찾지 못합니다.
michaeld
(Michael - Communiteq)
4
먼저 upload:// URL을 실제 파일 이름으로 변환해야 합니다.
Michael, 감사합니다. 유용할 것 같은데 전체 경로를 가져오는 방법을 모르겠습니다. Rails 콘솔에서는 이렇게 할 수 있지만, 실제 파일명을 반환하지 않습니다:
Base62.decode("ljcw6gjRoPMD0IB5Vcc6K23VXIA").to_s(16)
=> "955952cf3952d2fad7c24528c08cfb79301a6260"
michaeld
(Michael - Communiteq)
6
많은 요인에 따라 달라지지만, 파일이 누락된 것으로 보고되고 있으므로 어쨌든 잘못된 위치에 있을 가능성이 큽니다. 이제 파일 이름을 알았으므로 S3를 탐색하여 일치하는 파일을 찾기는 그리 어려운 일이 아닙니다.
또한, 데이터베이스에서 이 문자열과 sha1이 일치하는 Upload를 찾아보고, 해당 업로드 기록에 경로가 있는지 확인해 볼 수도 있습니다. 하지만 다시 한번 말씀드리자면, 모든 것이 정상이었다면 우리는 이 문제를 논의하지 않았을 것입니다.