
단일 "디렉토리" 아래에 1억 개가 넘는 이미지 파일(책 표지)이 단일 파일 목록으로 포함되어 있습니다.
/images/000000093e7d1825b346e9fc01387c7e449e1ed7
/images/000000574c67d7b8c5726f7cfd7bb1c5b3ae2ddf
/images/0000005ae12097d69208f6548bf600bd7d270a6f
...
오래 전에는 Amazon S3에 저장되어 있었으며 현재는 Backblaze B2(S3 호환)에 있습니다.
지금까지는 잘 작동했습니다.
- 새 파일을 저장하는 것은 매우 빠릅니다.
- 기존 파일을 검색하는 것은 매우 빠릅니다.
다시 한 번 iDrive E2(S3 호환)로 마이그레이션하는 중입니다.
나는 그것을 사용하여 이동하는 실험을하고 있습니다.rc클론, 그러나 시작을 기다린 후 30분 후에 rclone copy
rclone이 전체 파일 목록을 수신할 때까지 파일 전송을 시작하지 않는다는 것을 깨달았습니다.
문제는:
rclone ls
디렉토리에 대한 빠른 벤치마크를/images/
보면 전체 파일 목록을 전송하는 데 거의 10시간이 걸릴 것으로 나타났습니다.- 전송 중 문제가 발생하면(며칠이 소요됨) 0부터 다시 시작되어 rclone이 전체 파일 목록을 다시 다운로드하게 됩니다.
- 파일 나열돈이 든다B2와 함께
파일 배치만 복사하도록 rclone을 구성해 보았습니다.
rclone copy "backblaze:/images/0000*"
, 유무에 관계없이*
파일을 찾을 수 없습니다.rclone copy "backblaze:/images/" --include "/0000*"
전체 파일 목록도 다운로드하고 클라이언트에서 필터링하는 것 같습니다.
이상하게도 rclone은 예를 들어 주어진 "디렉토리" 아래에 있는 파일 목록을 서버에서 검색하는 데 문제가 없는 것처럼 보이지만 /images/
와 같은 접두사로는 동일한 작업을 수행할 수 없습니다 /images/0000
.
나는 S3와 모든 S3 호환 스토리지가 파일 경로를 평면 구조로 저장한다고 생각했습니다., 그리고 그것은 /
다른 캐릭터와 마찬가지로 쉽게 사용할 수 있는 캐릭터였습니다.접두사로 끝나거나 끝나지 않는 접두사 아래의 파일을 나열합니다./
.
내가 착각한 걸까?
다음 스토리지(E2),하위 디렉터리에 파일을 저장해야 하나요?images/0/0/0/0/
, 예 를 들어 images/0/0/0/1
, 전통적인 파일 시스템에 파일을 저장하던 시절에 그랬던 것처럼요?
답변1
나는 rclone이 전체 파일 목록을 수신할 때까지 파일 전송을 시작하지 않는다는 것을 깨달았습니다.
이것은 귀하의 문제가 스토리지 공급자가 아니라 rclone 자체에 있다는 것을 말해줍니다. 목록 스트림을 시작한 다음 파일이 도착하면 청크된 솔루션이 작동하기 전에 전체 파일 목록이 필요한 솔루션보다 더 적합할 것입니다.
저는 S3와 더 나아가 모든 S3 호환 스토리지가 파일 경로를 플랫 구조로 저장한다고 생각했습니다.
이것이 바로 S3가 수행하는 방식입니다. 처음 접했을 때 파일 서버 관리 두뇌가 망가졌습니다. 여기서 문제가 파일 레이아웃이 아니라 메타데이터와 관련된 것으로 보인다면 별 문제가 되지 않을 것입니다.