tencent cloud

피드백

버전 제어 개요

마지막 업데이트 시간:2024-06-24 17:04:20

    소개

    버전 제어는 동일한 버킷에 동일한 객체의 여러 버전을 저장하는 데 사용합니다. 예를 들어, 한 버킷에 객체 키가 picture.jpg로 동일하지만 버전 ID가 다른(예: 100000, 100101, 120002 등) 여러 객체를 저장할 수 있습니다. 사용자는 버킷에 버전 제어 기능을 활성화한 후 버전 ID에 따라 버킷에 있는 객체를 인덱스, 삭제하거나 복구할 수 있으며, 이는 사용자가 잘못 삭제하거나 응용 프로그램 장애로 손실된 데이터를 복구하는데 도움이 됩니다. 예를 들어, 버전 제어가 활성화된 객체를 삭제하는 경우 다음과 같습니다.
    객체를 삭제할 경우(비 완전 삭제) COS는 삭제할 객체에 삭제 마커를 삽입하며 해당 마커가 현재 객체 버전이 됩니다. 사용자는 삭제 마커에 따라 이전 버전을 복구할 수 있습니다.
    객체를 대체할 경우 COS는 새로 업로드하는 객체에 새로운 버전 ID를 삽입하며, 버전 ID에 따라 교체하기 이전의 객체로 복구할 수 있습니다.

    버전 제어 상태

    버킷에는 버전 제어 비활성화 상태, 버전 제어 활성화 상태, 버전 제어 일시 중지 상태의 세 가지 버전 제어 상태가 있습니다.
    버전 제어 비활성화 상태: 버킷의 기본 초기화 상태로, 버전 제어 기능이 비활성화되어 있는 상태입니다.
    버전 제어 활성화 상태: 버킷 버전 제어 기능이 활성화되어 있는 상태로, 해당 버킷의 모든 객체에 적용됩니다. 버킷에 처음 버전 제어를 활성화하면 해당 버킷에 새로 업로드하는 객체는 고유의 버전 ID를 갖게 됩니다.
    버전 제어 일시 중지 상태: 버킷에 버전 제어 기능을 활성화했다 일시 중지한 상태이며(버전 제어 비활성화 상태로 돌아갈 수 없음), 이후에 버킷에 업로드하는 객체는 버전 제어 객체로 저장되지 않습니다.
    주의:
    1. 일단 버킷에 버전 제어를 활성화하면 버전 제어 비활성화 상태(초기 상태)로 돌아갈 수 없습니다. 단, 해당 버킷의 버전 제어를 일시 중지할 수 있으며, 일시 중지하는 경우 이후 업로드하는 객체는 여러 버전이 생성되지 않습니다.
    2. 버전 제어 활성화 전 버킷에 저장된 객체의 버전 ID는 모두 null입니다.
    3. 버전 제어 활성화 또는 일시 중지 시, COS에서 해당 객체를 처리하는 요청 방식이 변경되며 객체 자체는 변경되지 않습니다.
    4. 루트 계정과 권한이 부여된 서브 계정으로만 버킷 버전 제어 기능을 일시 중지할 수 있습니다.

    버전 제어 상태에서의 객체 관리

    서로 다른 버전 제어 상태인 버킷에서 각 상태의 버킷에 저장되어 있는 객체를 업로드, 조회, 삭제할 수 있습니다. 버전 제어 비활성화 상태를 제외하고, 버전 제어 활성화 상태와 일시 중지 상태에서는 버킷에 저장되어 있는 객체를 조회할 수 있으며, 버전 ID 미지정 및 지정 객체를 삭제할 수 있습니다.
    버전 제어 비활성화 상태: 객체의 업로드, 조회, 삭제 등 작업 방식은 변경되지 않으며, 자세한 내용은 객체 관리 목록의 문서를 참조하십시오.
    버전 제어 활성화 및 일시 중지 상태: 객체의 업로드, 조회, 삭제 등 작업 방식에서 이전과 다른 점은 버전 ID가 삽입된다는 점이며, 또한 객체 삭제 작업 시 "삭제 마커" 개념이 추가됩니다.

    버전 제어 활성화 상태에서의 객체 관리

    버킷 버전 제어 활성화 전 이미 버킷에 존재하는 객체의 보전 ID는 null입니다. 버전 제어 활성화 후 버킷에 이미 존재하는 객체는 변경되지 않으며, COS가 이미 존재하는 객체를 처리하는 방식만(예: 요청 방식) 변경됩니다. 이때 새로 업로드하는 동일한 이름의 객체는 다른 버전으로 동일한 버킷에 존재하게 됩니다. 다음과 같이 버전 제어를 활성화한 버킷에서의 객체 관리를 소개합니다.
    주의:
    버전 제어를 비활성화한 버킷과 활성화한 버킷에 객체를 업로드하는 방법은 동일하지만, 해당 버전 ID는 동일하지 않습니다. 버전 제어를 활성화하는 경우 COS는 객체에 특정 버전 ID를 할당하며, 비활성화하는 경우 업로드하는 객체의 버전 ID는 항상 null이 됩니다.

    객체 업로드

    버킷에 버전 제어를 활성화한 후 사용자가 PUT, POST 또는 COPY 작업을 실행하면 COS는 자동으로 해당 버킷에 저장된 객체에 고유의 버전 ID를 추가합니다. 다음 이미지와 같이 버전 제어를 활성화한 버킷에 객체를 업로드할 경우 COS는 해당 객체에 고유의 버전 ID를 추가합니다.
    

    버전 제어 객체 열거

    COS는 버킷과 연결된 versions 매개변수에 객체 버전 정보를 저장합니다. 저장 시간 우선 순서에 따라 객체 버전을 반환하며, 가장 우선적으로 최근 저장된 버전을 반환합니다.

    특정 객체의 모든 버전 조회

    다음 방법을 통해 versions 매개변수와 prefix 요청 매개변수를 사용하여 특정 객체의 모든 버전을 조회할 수 있습니다. prefix에 대한 자세한 정보는 GET Bucket Object versions 문서를 참조하십시오. 특정 객체의 모든 버전 조회 요청 예시:
    GET /?versions&prefix=ObjectKey HTTP/1.1

    데이터 기본 버전 조회

    GET 요청을 사용할 때 버전 ID를 지정하지 않는 경우 객체의 현재 버전을 조회합니다. 즉, 다음 이미지와 같이 GET 요청 시 123.txt 객체의 현재 버전(최신 버전)을 반환합니다.
    
    GET 요청을 사용할 때 버전 ID를 지정하는 경우 지정 버전 ID의 객체를 조회합니다. 즉, 다음 이미지와 같이 GET versionId 요청 시 지정 버전(현재 버전 가능)의 객체를 조회합니다.
    

    객체 버전의 메타데이터 조회

    객체의 메타데이터(해당 콘텐츠가 아닌)를 조회할 경우, HEAD 작업을 사용하여 조회할 수 있습니다. 기본적인 상황에서 최신 버전의 메타데이터가 조회되며, 지정 객체 버전의 메타데이터를 조회하고 싶은 경우 요청 전송 시 해당 버전 ID를 지정해야 합니다. 지정 버전 객체의 메타데이터 조회 방법:
    versionId를 객체의 메타데이터를 조회할 버전 ID로 설정합니다.
    지정한 versionId의 HEAD 작업 요청을 전송합니다.

    객체 삭제

    필요에 따라 언제든 불필요한 객체 버전을 삭제할 수 있습니다. 버전 제어를 활성화한 상태에서 DELETE 요청을 사용하는 경우 다음 두 가지 시나리오가 있을 수 있습니다.
    1. 버전 ID를 지정하지 않고 일반적인 DELETE 작업을 실행하는 경우 해당 작업 시나리오는 삭제 객체를 "휴지통"에 넣는 작업과 유사하지만 객체를 완전히 이동하지 않으며, 이후 사용자가 필요할 경우 데이터를 복구할 수 있습니다. 다음 이미지와 같이 사용자가 DELETE 작업 시 버전 ID를 지정하지 않으면 실제로 Key=123.txt 객체를 삭제하지 않고 새로운 삭제 마커를 삽입하며 새로운 버전 ID를 추가합니다.
    
    주의:
    COS는 버킷에서 삭제되는 객체에 새로운 버전 ID를 가진 삭제 마커를 삽입하며, 해당 삭제 마커는 삭제되는 객체의 현재 버전이 됩니다. 테스트로 해당 삭제 마커의 객체에 대해 GET 작업을 실행하면 COS는 해당 객체가 존재하지 않는다 인식하여 404 오류를 반환합니다.
    2. 버전 ID를 지정하여 객체 버전을 삭제하는 경우(해당 시나리오는 버전 제어 객체를 영구적으로 삭제)
    

    이전 버전으로 복원

    버전 제어는 객체를 이전 버전으로 복원할 때 사용할 수 있으며, 다음과 같이 두 가지 방법이 있습니다.
    1. 객체 이전 버전을 동일한 버킷에 복사 복사한 객체가 해당 객체의 현재 버전이 되며 모든 객체 버전이 보관됩니다.
    2. 객체의 현재 버전 영구 삭제 객체의 현재 버전을 삭제하면 이전 버전이 해당 객체의 현재 버전이 됩니다.

    버전 제어 일시 중지 상태에서의 객체 관리

    버전 제어 일시 중지 시 현재 버킷에 있는 객체는 변경되지 않으며, COS의 이후 요청에 대한 객체를 처리하는 방식이 변경됩니다. 버전 제어를 일시 중지한 버킷에서는 다음과 같이 객체를 관리합니다.

    객체 업로드

    버킷에 버전 제어를 일시 중지한 후 사용자가 PUT, POST 또는 COPY 작업을 실행하면 COS는 다음 이미지와 같이 자동으로 버전 ID를 null로 하여 해당 버킷에 객체를 추가 저장합니다.
    
    버킷에 버전 제어 객체가 존재하는 경우 다음 이미지와 같이 버킷에 업로드하는 객체가 현재 버전이 되며 버전 ID는 null이 됩니다.
    
    버킷에 이미 null 버전이 존재하는 경우 다음 이미지와 같이 해당 null 버전을 덮어쓰며, 기존의 객체 콘텐츠가 상응하게 대체됩니다.
    

    데이터 기본 버전 조회

    버전 제어를 일시 중지한 버킷에 GET Object 요청을 전송하면 객체의 현재 버전이 반환됩니다.

    객체 삭제

    버전 제어를 일시 중지하고 DELETE 요청을 실행하는 경우 다음과 같은 상황이 있을 수 있습니다.
    버킷에 null 버전의 객체가 존재하는 경우 버전 ID가 null인 객체를 삭제합니다. 다음 이미지와 같이 일반적인 DELETE 작업을 실행하면 COS는 null 버전의 객체에 삭제 마커를 삽입합니다.
    
    주의:
    삭제 마커는 콘텐츠가 존재하지 않으며, 삭제 마커가 null 버전으로 대체되는 경우 null 버전의 기존 콘텐츠가 유실됩니다.
    버킷에 null 버전의 객체가 없는 경우 버킷에 삭제 마커가 추가됩니다. 다음 이미지와 같이 버킷에 null 버전의 객체가 없을 때 DELETE 작업을 실행하면 COS는 어떠한 콘텐츠도 삭제하지 않고 삭제 마커만 삽입합니다.
    
    버전 제어를 일시 중지한 버킷에 대해 루트 계정에서도 지정 버전을 영구 삭제할 수 있습니다. 다음 이미지와 같이 객체 버전을 지정 삭제하여 영구적으로 해당 객체를 삭제할 수 있습니다.
    
    주의:
    루트 계정 또는 루트 계정에서 권한을 부여한 계정만 객체 버전을 지정하여 삭제할 수 있습니다.
    문의하기

    고객의 업무에 전용 서비스를 제공해드립니다.

    기술 지원

    더 많은 도움이 필요하시면, 티켓을 통해 연락 바랍니다. 티켓 서비스는 연중무휴 24시간 제공됩니다.

    연중무휴 24시간 전화 지원