[CLOUD] aws cli s3 명령어 모음

 

1. 파일 목록 조회

  • 전체 조회 - 하위 디렉토리 포함 조회 하는 방법
--human-readable 을 추가하면 각 파일의 용량을 읽기 편하게 표시 해줌

# /usr/local/bin/aws s3 ls s3://your-bucket --recursive --human-readable
2023-06-19 09:02:34  191.8 MiB 20230619/backup.tar.gz
2023-06-18 09:02:03  746.9 MiB 20230618/backup.tar.gz
2023-06-17 09:02:16  333.9 MiB 20230617/backup.tar.gz
  •  특정 확장자만 조회 - .tar.gz
# /usr/local/bin/aws s3 ls s3://your-bucket --recursive | tr -s ' ' | cut -d ' ' -f4- | grep "\.tar.gz$"
  • 특정 확장자만 조회 - .tar.gz 또는 .md 파일
# /usr/local/bin/aws s3 ls s3://your-bucket --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -E "(\.tar.gz|\.md)$"
  • 특정 확장자 빼고 나머지 조회  - .tar.gz 제외한 그외 파일
# /usr/local/bin/aws s3 ls s3://your-bucket --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -v "\.tar.gz$"



2. 파일 복사

  • 파일 복사 - cp 복사 대상 파일, s3 에서 복사할 경로
  • s3 상에 디렉토리를 미리 만들어 두지 않아도 돼. 복사하면서 자동으로 디렉토리를 만들어.
# /usr/local/bin/aws s3 cp /var/log/secure s3://your-bucket/var/log/secure

# /usr/local/bin/aws s3 cp /var/log/secure s3://your-bucket/20230619/var/log/secure

# /usr/local/bin/aws s3 cp /var/log/secure s3://your-bucket/backup/var/log/secure



3. 파일 삭제

  • 파일 삭제 - rm  s3 에서 삭제할 파일
# /usr/local/bin/aws s3 rm s3://your-bucket/var/log/secure

# /usr/local/bin/aws s3 rm s3://your-bucket/20230619/var/log/secure

# /usr/local/bin/aws s3 rm s3://your-bucket/backup/var/log/secure
  • 하위 디렉토리 포함 전체 파일 삭제
# /usr/local/bin/aws s3 rm s3://your-bucket --recursive
  • 특정 디렉토리 하위만 파일 삭제
# /usr/local/bin/aws s3 rm s3://your-bucket/20230619/ --recursive

# /usr/local/bin/aws s3 rm s3://your-bucket/backup/var/log/ --recursive



4. 기타 커맨드 모음

  • 파일 이동 
# /usr/local/bin/aws s3 mv test.tar s3://your-bucket
move: ./test.tar to s3://your-bucket/test.tar
  • S3 에 있는 파일을 로컬에 저장 (즉, 다운로드)
버킷의 test.tar 를 로컬의 현재 디렉토리에 복사(다운로드)
# /usr/local/bin/aws s3 cp s3://your-bucket/test.tar ./
download: s3://your-bucket/test.tar to ./test.tar

버킷의 test.tar 를 로컬에 test2.tar 로 파일이름을 변경하고 복사(다운로드)
# /usr/local/bin/aws s3 cp s3://your-bucket/test.tar ./test2.tar
download: s3://your-bucket/test.tar to ./test2.tar
  •  파일 포함 --include / 파일 제외 --exclude 옵션
모든 .txt 형식의 파일을 포함하여 copy
# /usr/local/bin/aws s3 cp . s3://your-bucket/path --include "*.txt"


모든 .txt 형식의 파일을 포함, 그러나 MyFile로 시작하는 파일명은 제외, 그런데 MyFile1.txt만은 제외하지않고 포함해서 copy
# /usr/local/bin/aws s3 cp . s3://your-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile1.txt"


.log 파일만 제외한 모든 파일과 하위 디렉토리 파일이 로컬에 복사
# /usr/local/bin/aws s3 cp s3://your-bucket/ ./ --recursive --exclude "*.log" --include "*"


특정 날짜의 nginx 로그를 다운로드
# /usr/local/bin/aws s3 cp s3://your-bucket/nginx/ . --recursive --exclude "*" --include "access*2016-10-23*"


'imgae-숫자' 로 시작되는 복수 파일만 업로드
# /usr/local/bin/aws s3 cp /Images s3://your-bucket/cp-test/ --recursive --exclude "*" --include "image-*"
upload: ./image-1.jpg to s3://your-bucket/cp-test/image-1.jpg 
upload: ./image-4.jpg to s3://your-bucket/cp-test/image-4.jpg 
upload: ./image-2.jpg to s3://your-bucket/cp-test/image-2.jpg 
upload: ./image-3.png to s3://tyour-bucket/cp-test/image-3.png



이 정도만 기억하면 웬만한 S3 의 작업은 모두 가능할 거야