2010-06-24 7 views
1

사용자가 로컬 디렉토리에 동기화해야하는 수백 개의 이미지 파일을 Amazon S3에 저장합니다. 스토리지 공간과 대역폭을 절약하기 위해 S3에 저장된 파일을 압축합니다.압축되지 않은 로컬 파일을 Amazon S3에 저장된 압축 파일과 비교합니까?

사용자의 끝에는 5 분마다 실행되는 파이썬 스크립트가있어 현재 파일 목록을 얻고 새롭고 업데이트 된 파일을 다운로드합니다.

제 질문은 무엇이 새로운 것인지 또는 다운로드하기로 변경했는지 결정하는 가장 좋은 방법입니다. 우리는 압축

image_file_1.tif 17MB MD5 = xxxx1234 

:

현재 우리는 우리는이 같은 파일로 시작 추가 우리는 압축되지 않은 파일의 MD5 값이 포함 된 압축 파일을 넣어 헤더 ...

를 추가 그것은 (7zip과와)과 (파이썬/BOTO와) S3에 넣어 :

image_file_1.tif.z 9MB MD5 = yyy3456 x-amz-meta-uncompressedmd5 = xxxx1234 

문제는 우리가 포함 S3에서 파일의 큰 목록을 얻을 수있는 X-AMZ-메타 uncompre 각 API에 대한 추가 API없이 ssedmd5 헤더 (수백/수천 개의 파일에 대한 SLOW).

가장 실용적인 솔루션은 사용자가 추가 헤더없이 파일의 전체 목록을 가져 와서 로컬에 존재하지 않는 파일을 다운로드하게하는 것입니다. 로컬에 존재하는 경우 추가 API 호출을 수행하여 전체 헤더를 가져 와서 x-amz-meta-uncompressedmd5에 대한 로컬 MD5 체크섬을 비교합니다.

나는 더 좋은 방법이 있어야한다고 생각합니다.

답변

2

압축되지 않은 이미지의 MD5 해시를 압축 된 파일 이름에 포함시킬 수 있습니다.

그래서 image_file_1.tif이 될 수 image_file_1.xxxx1234.tif.z

따라서는 S3에서 다시 파일을 가져 갈 필요 여부를 결정하는 데 필요한 정보를했을 동기화를 수행 사용자 파이썬 파일 및 당신이하고 싶은 것에 따라 파일 이름의 MD5 부분을 제거하거나 유지할 수 있습니다.

또는 S3에서 MD5 메타 데이터를 포함한 전체 파일 목록을 포함하는 단일 파일을 유지 관리 할 수도 있습니다. 그래서 파이썬 스크립트는 그 하나의 파일을 가져 와서 해석하고, 무엇을 할 것인지 결정할 필요가 있습니다.

+0

파일 이름이 엉망이되지 않도록하려면 image_file_1.tif.md5와 같은 MD5 콘텐츠가있는 다른 파일을 만들 수 있습니다. – Pih

관련 문제