[AWS-S3] S3 CLI 명령어 _ 커맨드 옵션(recursive, exclude, include, dryrun)
Server&Network&클라우드

[AWS-S3] S3 CLI 명령어 _ 커맨드 옵션(recursive, exclude, include, dryrun)

728x90

  • S3 버킷 설명

https://zeuskwon-ds.tistory.com/129

 

[AWS-S3] S3 버킷 알아보기

S3란 무엇인가? S3는 "Simple Storage Service"의 줄임말이다. 최근 이직한 회사에서 AWS S3를 사용하고 있다 AWS S3는 스토리지 서비스(Storage Service)인데 쉽게 말하면 특정한 사진, 동영상 파일을 저장하기

zeuskwon-ds.tistory.com

  • S3 기본 명령어

https://zeuskwon-ds.tistory.com/130

 

[AWS-S3] S3 CLI 명령어 _기본

AWS S3를 사용하는 기본 방법은 AWS 공식 페이지에서 작업을 해야했다. S3에 버킷을 생성하고 파일을 저장할 때 웹브라우저 콘솔 화면에 가서 일일히 화면을 눌러 적용해야한다. 이 방법이 틀린 방

zeuskwon-ds.tistory.com

S3 버킷 커맨드 옵션

자주 사용하는 cli 명령어 옵션은 --force 강제, --exclude 제외, --include 포함, --dryrun 테스트 등이 있다.

이 옵션은 무조건 사용해야하는 명령어가 아닌 말 그대로 옵션인 명령어이다.

 

  • 하위 디렉터리 포함(--recursive)

--recursive 옵션과 함께 사용하면 커맨드 적용 범위가 하위 디렉터리까지 적용된다. 

예를 들어 aws s3 rm 삭제 커맨드를  --recursive 옵션과 함께 사용한다면 하위 디렉터리까지 삭제하겠다는 의미가 된다.

 

또, aws s3 ap 커맨드를 --recursive 옵션과 함께 사용하면 해당 bucket의 하위 폴더 데이터까지 모두 복사된다.

$ aws s3 cp test/ s3://my-test-folder --recursive
upload: ./test/test1.txt s3://my-test-folder/test1.txt
upload: ./test/test2.txt s3://my-test-folder/test2.txt

 

* 참고로 이전에 배운 aws s3 sync 커맨드는 기본적으로 하위 디렉터리까지 모두 동기화해주기 때문에 별도로 --recursive 옵션을 사용할 필요가 없음

 

  • 커맨드 테스트(--dryrun)

명령어 조합이 애매모호해서, 실제로는 수행되지 않고 동작만 보고 싶다면, --dryrun 옵션을 이용해서 동작 수행하는것을 테스트해볼 수 있다.

실수로 엉뚱한 파일을 삭제하거나 이동시키는것을 방지할 수 있다.

$ aws s3 rm s3://test-bucket-zeus/forder1/ --dryrun
(dryrun) delete: s3://test-bucket-zeus/forder1/

* 결과 출력시, dryrun임을 표시하여 실제로 수행되지 않았음을 알려준다.

 

  • 파일 제외 (--exclude)

--exclude 옵션은 명령에서 특정 객체만 제외하고 실행할 때 사용하는 옵션이다.

이때 순서는 지정된 순서대로 옵션이 적용된다.

# 모든 txt파일은 제외하고 나머지 파일을 copy
$ aws s3 cp . s3://my-bucket/path --exlude "*.txt"

 

  • 파일 포함(--include)

--include 옵션은 exclude와 반대되는 옵션으로 명령에 지정된 객체만 포함하도록 해주는 옵션이다.

# 모든 .txt 형식의 파일을 포함하여 copy
$ aws s3 cp . s3://my-bucket/path --include "*.txt"

 

이처럼 하나씩 사용할 수도 있지만 옵션을 여러개 사용할 수도 있다.

# .log 파일만 제외하고 모든 파일과 하위 디렉토리 파일을 로컬에 복사
$ aws s3 cp s3://bucket_name/ ./ --recursive --exclude "*.log" --include "*"

# 'imgae-숫자' 로 시작되는 복수 파일만 업로드
$ aws s3 cp /Images s3://test-s3/cp-test/ --recursive --exclude "*" --include "image-*"
upload: ./image-1.jpg to s3://test-s3-squirrel/cp-test/image-1.jpg 
upload: ./image-4.jpg to s3://test-s3-squirrel/cp-test/image-4.jpg 
upload: ./image-2.jpg to s3://test-s3-squirrel/cp-test/image-2.jpg 
upload: ./image-3.png to s3://test-s3-squirrel/cp-test/image-3.png
# 모든 .txt 형식의 파일을 포함하고, MyFile로 시작하는 파일명은 제외하는데, MyFile1.txt만은 제외하지않고 포함해서 copy
$ aws s3 cp . s3://my-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile1.txt"

* s3 와일드 카드 패턴(*)은 --include와 --exclude 옵션과 함께 사용할때만 와일드카드 패턴을 지원한다. 즉, rm, cp 같은 명령어에서는 와일드 카드 패턴 사용 x

728x90