본문으로 건너뛰기

Object Storage bucket versioning

오브젝트 스토리지 버킷 versioning 기능 사용 설명 가이드

versioning는 버킷 내부에 있는 파일에 객체 ID값을 부여하는 기능을 가지고 있으며 같은 이름의 파일을 업로드시 원본 파일은 삭제되는 기존의 버킷과는 달리
삭제하지 않고 숨김 처리를 하여 사용자가 실수로 파일을 잘못 수정 후 업로드 했을때 부여된 객체 ID값을 통해 이전 파일을 복구할수 있습니다.

versioning의 특징

중복 파일 업로드시 이전 파일은 삭제되지 않고 숨김 파일로 변경
원하는 시점의 파일을 다운로드 또는 삭제등의 작업이 가능

Linux 설정 방법

설치 방법 안내

본 가이드는 aws_cli를 사용하여 진행합니다. aws_cli 설치 방법은 아래 가이드를 참고해주세요.

aws_cli 설치 방법 바로가기

인증키 설정

a. 유저의 profile을 위한 .aws/config파일과 .aws/credentials파일 생성합니다.

root@iwinv:~# cat ~/.aws/config
[profile username]

root@iwinv:~# cat ~/.aws/credentials
[username]
aws_access_key_id = [Access_key]
aws_secret_access_key = [Secret_key]

b. config, credentials 파일의 권한 설정

root@iwinv:~# chmod 600 ~/.aws/config ~/.aws/credentials

versioning Enable 설정

a. "--versioning-configuration Status=Enabled" 설정을 통해 버킷 [bucket]versioning기능이 활성화 되도록 설정합니다.

root@iwinv:~# aws s3api put-bucket-versioning --endpoint=https://kr.object.iwinv.kr --bucket=[bucket] --versioning-configuration Status=Enabled --profile [username]

b. 아래의 명령어로 StatusEnabled로 설정되어있는지 확인.

root@iwinv:~# aws s3api get-bucket-versioning --endpoint=https://kr.object.iwinv.kr --bucket=[bucket]  --profile [username]

{
"Status": "Enabled",
"MFADelete": "Disabled"
}

versioning 확인

a. versioning 설정 확인을 위한 임시 파일생성

root@iwinv:~# cat tmp.txt
iwinv test file

b. 생성한 임시파일을 버킷에 업로드

root@iwinv:~# aws s3 cp ./tmp.txt s3://[bucket] --endpoint-url https://kr.object.iwinv.kr --profile [username]

c. 임시 파일 내용 수정

root@iwinv:~# echo "versioning test" >> tmp.txt

root@iwinv:~# cat tmp.txt
iwinv test file
versioning test

d. 수정된 임시파일 재업로드
이때, --key에는 [bucket] 에 있는 원본 파일명을 --body에는 local에 있는 업로드할 파일명을 적어 업로드하면 VersionId가 생성됩니다.

root@iwinv:~# aws s3api put-object --endpoint=https://kr.object.iwinv.kr  --bucket=[bucket] --key tmp.txt --body ./tmp.txt --profile [username]
{
"ETag": "\"d46370e0f513199145d3c38044ebd54b\"",
"VersionId": "2blo4CFwUm8yR9aWNR7UfwDG5MOE1pp"
}

e. 업로드된 파일들의 객체 ID확인
* "LastModified"를 통해 파일이 업로드된 순서를 볼 수 있습니다.

root@iwinv:~# aws s3api list-object-versions --endpoint=https://kr.object.iwinv.kr --bucket=[bucket] --profile [username]

{
"Versions": [
{
"ETag": "\"d46370e0f513199145d3c38044ebd54b\"",
"Size": 28,
"StorageClass": "STANDARD",
"Key": "tmp.txt",
"VersionId": "2blo4CFwUm8yR9aWNR7UfwDG5MOE1pp",
"IsLatest": true,
"LastModified": "202x-06-12T04:42:42.680000+00:00",
"Owner": {
"DisplayName": "iwinv",
"ID": "9b547c06b8dd480d7ba6fd8f0e342734"
}
},
{
"ETag": "\"d635685f48ff4235112e03816d9fd453\"",
"Size": 16,
"StorageClass": "STANDARD",
"Key": "tmp.txt",
"VersionId": ".RT1mWEcw9uu4JaIpF15boLnXsPa-By",
"IsLatest": false,
"LastModified": "202x-06-12T04:41:12.898000+00:00",
"Owner": {
"DisplayName": "iwinv",
"ID": "9b547c06b8dd480d7ba6fd8f0e342734"
}
}
]
}

f. 먼저 업로드된파일을 삭제 후 "LastModified"를 확인 시 최신파일만 확인됩니다.

root@iwinv:~# aws s3api delete-object --endpoint=https://kr.object.iwinv.kr --bucket=[bucket] --key=tmp.txt --profile produser --version-id=.RT1mWEcw9uu4JaIpF15boLnXsPa-By
{
"VersionId": ".RT1mWEcw9uu4JaIpF15boLnXsPa-By"
}

root@iwinv:~# aws s3api list-object-versions --endpoint=https://kr.object.iwinv.kr --bucket=[bucket] --profile [username]
{
"Versions": [
{
"ETag": "\"d46370e0f513199145d3c38044ebd54b\"",
"Size": 28,
"StorageClass": "STANDARD",
"Key": "tmp.txt",
"VersionId": "2blo4CFwUm8yR9aWNR7UfwDG5MOE1pp",
"IsLatest": true,
"LastModified": "202x-06-12T04:42:42.680000+00:00",
"Owner": {
"DisplayName": "iwinv",
"ID": "9b547c06b8dd480d7ba6fd8f0e342734"
}
}
]
}

Windows 설정 방법

S3 browser 설치 안내

본 가이드는 S3 browser를 사용하여 진행합니다. S3 browser설치 방법은 아래 가이드를 참고해주세요.

S3 browser 설치 가이드 바로가기

versioning 설정

a. versioning할 버킷을 선택한 후 "[Edit Versioning Setting]"클릭합니다.
edit versioning setting

b. "[Enable versioning for bucket]"을 체크해 versioning을 활성화 합니다.
versioning 활성화

c. 메모장으로 versioning.txt을 생성해 업로드합니다.

d. version관리를 보기 위해 versioning.txt를 수정하여 다시 업로드합니다.

e. 버킷의 [Versions] 탭에 버킷내에 있는 파일의 버전 관리를 확인할 수 있습니다.