본문 바로가기

About/Cloud

[AWS] AWS CLI를 이용하여 S3로 데이터 백업 하기

AWS 명령줄 인터페이스(AWS CLI) 설치하기

pip를 이용하여 awscli를 설치합니다.

$ pip3 install --upgrade --user awscli ... Successfully installed PyYAML-5.4.1 awscli-1.22.26 botocore-1.23.26 colorama-0.4.3 docutils-0.15.2 jmespath-0.10.0 pyasn1-0.4.8 python-dateutil-2.8.2 rsa-4.7.2 s3transfer-0.5.0 urllib3-1.26.7


다양한 패키지들이 설치되게 됩니다.

AWS 계정 환경 설치하기

AWS CLI를 AWS 계정에 연결하기 위해 액세스 키가 필요합니다. AWS 콘솔에서 오른쪽 상단의 계정명을 클릭하여 '보안 자격 증명'을 클릭합니다.


보안 자격 증명 페이지에서 액세스 키(액세스 키 ID와 보안 액세스 키) 항목을 엽니다.


새 액세스 키 만들기 버튼을 클릭하면 새로 생성된 액세스 키 ID(access key ID)와 보안 액세스 키(secret access key)를 볼 수 있습니다. 여기서 액세스 키 ID는 ID, 보안 액세스 키는 패스워드라고 생각하면 됩니다. 액세스 키는 내려받아 안전한 곳에 저장하거나 복사해 붙여넣을 수 있습니다.

AWS S3에 연결할 준비를 하려면 터미널을 열고 aws configure 명령을 실행합니다.

$ aws configure AWS Access Key ID [None]: <Access Key ID> 입력 AWS Secret Access Key [None]: <Secret Access Key> 입력 Default region name [None]: us-east-1 # AWS Region 설정 Default output format [None]: # 출력 형식 설정(기본 텍스트로 아무것도 입력하지 않아도 됨)
지역에 따라 데이터를 해외 서버로 제한하는 것도 있습니다.

S3 버킷 생성

새로 만든 계정의 경우 아무것도 없으니 버킷 생성 명령(mb)로 버킷을 만들어야 합니다. (기존의 버킷이 있는 경우 넘어가도 괜찮습니다.)
버버킷명은 전체 S3에서 고유한 이름이여야 합니다.

$ aws s3 mb s3://<버킷명> make_bucket: <버킷명>

버킷이 생성되었는지 다음과 같이 확인합니다.

$ aws s3 ls <생성날짜> <버킷명>

S3 버킷으로 데이터 백업

$ aws s3 sync <백업할 경로> s3://<버킷명>

s3 sync 명령은 rsync 명령과 비슷하게 동작한다. (rsync 참고 https://kimjingo.tistory.com/88?category=982448)
처음 실행할 때는 원본 디렉토리에 있는 파일들이 모두 S3 버킷에 올라가고, 그 이후에는 새로 만들거나 변경된 파일만 전송된다.

위 명령어를 수행한 후 AWS Console에서 S3에 들어가보면 다음과 같이 데이터가 백업된 것을 알 수 있다.


백업 도구가 있다고 해서 백업이 저절로 되는 것은 아니기 때문에 자동으로 백업하기 위해서는 작업 스케쥴러가 있어야 한다.
리눅스에서 cron이나 anacron같은 스케쥴러를 사용하면 자동으로 백업을 스케줄링하거나 systemd 타이머로 정기적인 백업을 스케쥴링할 수 있다. (기회가 되면 다루어보도록 하겠다.)

linux 환경에서 S3로 파일을 백업하는 방법을 알아보았다.