관리 메뉴

피터의 개발이야기

[AWS] S3에서 일괄 파일업로드, 파일다운로드 본문

AWS

[AWS] S3에서 일괄 파일업로드, 파일다운로드

기록하는 백앤드개발자 2021. 1. 30. 08:00
반응형

S3에 파일이 쌓이고 이것을 일괄적으로 다운받아야하는 경우가 있습니다. 그럴 때 한번에 받을 수 있는 방법을 정리하였습니다.

 

 

sync

로컬의 디렉토리와 S3의 경로를 동기화 할 수 있다.

# 다운로드
aws s3 sync s3://bucket-name/ ./

# 업로드
aws s3 sync ./ s3://bucket-name/

버켓의 내용을 로컬 폴더로 동기화 시킨다. 그래서 버켓폴더의 파일들이 로컬로 복사가 됩습니다.

그리고 로컬의 것을 버켓에 업로드를 할 수가 있습니다.

 

 

ls

s3의 목록을 조회한다. 이 때 awk를 사용하여 목록을 조건으로 검색할 수 있습니다.

aws s3 ls s3://bucat-name/ |sort | awk '$4 >"" && $1 > "2021-01-20"'

여기서 $4 >""을 넣은 이유는 아래의 그림처럼 폴더 목록을 제거하기 위해서 입니다.

 

 

loop

추출한 목록을 기준으로 다운로드 루프를 만들었습니다.

for f in $(aws s3 ls s3://bucat-name/ | sort | awk '$1 > "2021-01-20" && $4 > "" {print $4}'); do
    aws s3 cp s3://bucat-name/"$f" ./
done;

간혹 파일명에 빈칸이 포함된 경우 에러가 발생 할 수 있습니다. 그래서 s3://bucat-name/"$f" 형태로 해야 에러를 방지할 수 있습니다.

 

 

 

참고할만한 자료들

AWS CLI로 Amazon S3 다루기

반응형
Comments