2016-11-09 6 views
-1

OSX (또는 Linux)에서 NOUNZ data compiler을 사용하고 있습니다. 자동으로 정적 HTML 파일 (수십만, 때로는 수백만 개의 파일)의 대규모 디렉토리 구조가 생성됩니다. 나는 원격 웹 서버에 전체 트리를 이동하려면CLI를 사용하여 AWS S3에서 압축 및 압축 된 파일 계층을 올바르게 압축 해제 및 압축 해제하는 방법은 무엇입니까?

생성 된 디렉토리 트리의 간단한 예는 ...

enter image description here

일반적를 다음과 같이 보입니다 단순히 타르 및 압축 나무는 명령을 사용하여 :

tar -cvf HTML.tar HTML 
gzip HTML.tar 

이라는 타르-ED 및 압축 파일을 생성 HTML.tar.gz

,

내가 할 수있는 다음 FTP 또는 SCP 단순히 다음 명령을 사용하여 압축을 풉니 다 파일의 압축을 해제 할 수 있으며 원격 웹 서버에 위의 파일 :

gzip -d HTML.tar.gz 
tar -xvf HTML.tar 

이 웹 서버에 동일한 파일 트리가 발생합니다을 이는 로컬 시스템의 데이터 컴파일러에 의해 생성되었습니다.

문제 : Amazon Web Services (AWS) Simple Storage Solution (S3)을 사용하여 위와 동일한 동작을하고 싶습니다.

내 질문 : 내가 압축을 해제하고 압축을 풀어야 다음 AWS S3에 로컬 서버에서 전체 타르 에드 압축 트리를 이동 할 수 있습니다 동일 (또는 유사 행위)을 모방 할 수있는 가장 좋은 방법은 무엇입니까 내 전체 디렉토리 구조를 재현하는 파일?

targzip 명령은 S3 CLI API의 일부가 아니므로 수백만 개의 파일 (하루에 한 번 발생)을 포함 할 수있는 디렉토리 구조를 이동해야합니다. 처음 타르거나 압축하지 않고 모든 것을 움직이고 재현하는 것은 매우 느립니다.

참고 : 데이터 컴파일러가 실행될 때 항상 이전 트리 전체를 삭제하고 전체 트리를 재생성하므로 모든 디렉토리와 파일에 완전히 새로운 inode가 생성됩니다. 이것은 "증분"복사본과 동기화가 실행 가능하지 않다는 것을 의미합니다. 나는 매번 나무 전체를 움직여야한다.

+0

당신은 모든 파일을 재생성한다고 말하지만 파일 내용은 실제로 변경됩니까? 'aws s3 sync' 명령을 사용하여 파일이 실제로 변경되었는지 md5 해시를 사용하여 동기화 할 수 있습니다. –

+0

예, 기존 파일의 내용이 변경 될 수 있습니다. 컴파일러가 실행될 때 발생할 수있는 세 가지 결과가 있습니다. 1) 새 폴더 및/또는 파일을 추가 할 수 있습니다. 2) 기존 폴더 및/또는 파일이 삭제 될 수 있습니다. 3) 기존 파일 내용이 변경 될 수 있습니다. AWS s3 동기화는 파이프를 통해 수백만 개의 파일을 전송하는 데 오랜 시간이 걸릴 수 있습니다. –

답변

0

S3는 파일을 압축 해제하지 않습니다. S3에 파일을 저장할 상태로 S3에 파일을 푸시해야합니다. aws s3 sync 명령 (또는 MD5 해시를 기반으로하는 점진적 업데이트를 수행하는 유사한 도구)이 가장 좋은 옵션이 될 것입니다. 아마도 sync 명령을 여러 개의 병렬 동기화 명령으로 나눌 수 있습니다. 아마도 서브 디렉토리 당 하나의 프로세스를 실행하십시오.

aws s3 sync "파이프를 통해 수백만 개의 파일을 보내려면 시간이 오래 걸릴 수 있습니다"라는 의견에 대해 먼저 파일을 압축하여 EC2 서버로 푸시해야합니다 (EC2에서 아직 수행하지 않은 경우). S3 버킷과 동일한 지역에 EC2 서버를 사용해야하며 인스턴스 유형은 10Gbps network performance이고 EC2 서버는 Enhanced Networking이어야합니다. 그러면 S3에 가장 빨리 연결할 수 있습니다.

+0

단순히 "타르", "압축", "전송", "압축 해제", "압축 해제"등의 "기능적"으로 들리지만 깨끗하고 간단하지는 않습니다. 각 디렉토리에 {aws s3 sync}를 분할하는 것보다 더 좋은 방법이 있어야합니다. 특히 새로운 디렉토리가 동적으로 나타나고 오래된 디렉토리가 삭제 될 수 있고 새로운 컴파일러가 실행될 때가 있습니다. AWS가 S3 CLI에 근본적인 유닉스 명령을 더 많이 추가하여 사용자 친화적이고 호환 가능하도록 만들 수 있을지 궁금합니다. –

+0

디렉토리를 기반으로 동기화 작업을 생성하는 스크립트를 작성할 수 있어야합니다. 디렉토리를 하드 코딩 할 필요는 없습니다. 원하는만큼 깨끗하고 간단하지는 않겠지 만 S3를 사용하려면 관련된 제한 사항을 고려하여 유닉스 서버처럼 처리하지 말아야합니다. S3는 단순한 저장소이며, 사용자가 의미하는 "서버"가 아닙니다. S3가 제공하지 않는 CPU 사용이 필요하기 때문에 파일을 압축 해제 할 수 없습니다. –

+0

도움을 주셔서 감사 드리며 귀하의 제안이 효과가 있다는 것을 알 수 있습니다.하지만 해킹과 비슷한 것으로 들릴 수도 있습니다. 이미 간단한 CLI 명령이 없기 때문입니다. –