메타데이터 보존

이 문서에서는 Storage Transfer Service를 사용하여 다양한 소스와 대상 간에 데이터를 전송할 때 보존되는 메타데이터를 설명합니다.

개요

Storage Transfer Service는 다음 메타데이터를 보존합니다.

  • Cloud Storage, Amazon S3, 또는 Microsoft Azure Blob Storage에서 시작된 전송용 사용자 생성 커스텀 메타데이터가 보존됩니다.

  • Cloud Storage 버킷 간 전송을 수행할 때는 객체 ACL, 고객 관리 암호화 키, 스토리지 클래스, 객체 만들기 시간(customTime 필드 값), 임시 보존 조치를 선택적으로 보존할 수 있습니다.

  • 소스에서 Cloud Storage 버킷으로 전송하는 경우 대상 버킷의 객체의 스토리지 클래스는 전송의 일부로 지원되는 클래스로 설정할 수 있습니다.

  • 파일 크기 및 마지막 수정 시간(mtime)은 POSIX 파일 시스템에서 시작된 전송에 대해 보존됩니다. mtime은 폴더에 대해 보존되지 않습니다.

  • 선택적으로 심볼릭 링크, 숫자 UID, 숫자 GID 및 숫자 MODE는 POSIX 파일 시스템 간의 전송을 위해 보존될 수 있습니다.

  • 파일 시스템 간 전송에만 UID, GID 또는 MODE가 보존되는 경우 메타데이터도 폴더에 대해 보존됩니다. Cloud Storage는 대상 파일 시스템에 폴더를 다시 만들고 UID, GID 또는 MODE를 복원합니다. 여기에는 빈 폴더도 포함됩니다. mtime은 보존되지 않습니다.

    매니페스트에 의해 전송하는 경우 폴더 수준 메타데이터가 보존되지 않습니다.

이 문서에서 명시적으로 언급되지 않은 메타데이터 필드는 보존되지 않습니다.

메타데이터 보존 방식

다음 섹션에는 서로 다른 소스 스토리지 시스템의 메타데이터 예시를 나열하고 Storage Transfer Service 및 Storage Transfer Service에서 메타데이터를 각각 보존하는 방법을 설명합니다. 전체 메타데이터 목록은 소스 스토리지 시스템의 문서를 참조하세요.

Amazon S3 또는 S3 호환 스토리지에서 Cloud Storage로 전송

메타데이터 예시 보존 방식
Amazon S3 고정 키 메타데이터 필드(예를 들어 Cache-Control, Content-Disposition, Content-Type) 고정 키 메타데이터로 보존됩니다.
키:값 쌍으로 형식이 지정된 Amazon S3 사용자 정의 메타데이터입니다. 자세한 내용은 객체 키 및 메타데이터사용자 정의 객체 메타데이터 섹션을 참조하세요.

대상 Cloud Storage 객체에서 커스텀 메타데이터 필드로 보존되며 나중에 이를 수정하거나 삭제할 수 있습니다.

ETag x-goog-source-etag 키를 사용하여 커스텀 메타데이터 필드로 보존되며, 이 키는 나중에 수정하거나 삭제할 수 있습니다.
객체 크기 size로 보존됩니다.
Amazon S3 액세스제어 목록(ACL). 전체 목록은 액세스제어 목록(ACL) 개요조건부 키 섹션을 참조하세요. 보존되지 않습니다.
사용자가 키-값 쌍으로 정의한 Amazon S3 객체 태그. 자세한 내용은 객체 태그를 참조하세요. 보존되지 않습니다.
ETag 및 객체 크기를 제외한 Amazon S3 시스템 정의 메타데이터입니다. 전체 목록은 객체 키 및 메타데이터시스템 정의 객체 메타데이터 섹션을 참조하세요.

보존되지 않습니다.

소스의 타임스탬프 메타데이터는 보존되지 않습니다. 생성 시간 timeCreated는 Cloud Storage에서 객체가 생성되는 시간을 반영합니다. 마찬가지로 updated는 Cloud Storage에서 객체의 메타데이터가 수정되는 시간을 반영합니다.

스토리지 클래스

전송 중 스토리지 클래스를 설정하기 위한 여러 옵션이 있습니다.

  • 각 객체의 스토리지 클래스를 대상 버킷으로 설정합니다. 기본적으로 설정되어 있습니다.
  • 전송 중인 모든 객체에서 특정 스토리지 클래스를 설정합니다.

자세한 내용은 metadataOptions 참조 문서를 확인하세요.

Microsoft Azure Storage에서 Cloud Storage로 전송

메타데이터 예시 보존 방식
Microsoft Azure Storage 고정 키 메타데이터(예를 들어 Cache-Control, Content-Disposition, Content-Type) 고정 키 메타데이터로 보존됩니다.
키:값 쌍으로 형식이 지정된 Microsoft Azure Storage 사용자 정의 메타데이터입니다. 자세한 내용은 Blob 서비스 리소스의 속성과 메타데이터 설정 및 검색을 참조하세요.

대상 Cloud Storage 객체에서 커스텀 메타데이터 필드로 보존되며, 나중에 수정하거나 삭제할 수 있습니다.

ETag x-goog-source-etag 키를 사용하여 커스텀 메타데이터 필드로 보존되며, 이 키는 나중에 수정하거나 삭제할 수 있습니다.
객체 크기 size로 보존됩니다.
Azure Data Lake Storage(ADLS) 2세대에서 지원하는 POSIX 파일 시스템 권한입니다. 보존되지 않습니다.
Microsoft Azure Storage 액세스 제어(특히 x-ms-blob-public-access). 자세한 내용은 컨테이너 ACL 가져오기응답 헤더 섹션을 참조하세요. 보존되지 않습니다.
Microsoft Azure Storage 색인 태그. 자세한 내용은 Blob 색인 태그로 Azure Blob 데이터 관리 및 찾기를 참조하세요. 보존되지 않습니다.
Microsoft Azure Storage 타임스탬프 메타데이터(예를 들어 Last-Modified, x-ms-creation-time, x-ms-version, x-ms-request-server-encrypted, x-ms-encryption-scope). 자세한 내용은 Blob 메타데이터 설정을 참조하세요.

보존되지 않습니다.

소스의 타임스탬프 메타데이터는 보존되지 않습니다. 생성 시간 timeCreated는 Cloud Storage에서 객체가 생성되는 시간을 반영합니다. 마찬가지로 updated는 Cloud Storage에서 객체의 메타데이터가 수정되는 시간을 반영합니다.

스토리지 클래스

전송 중 스토리지 클래스를 설정하기 위한 여러 옵션이 있습니다.

  • 각 객체의 스토리지 클래스를 대상 버킷으로 설정합니다. 기본적으로 설정되어 있습니다.
  • 전송 중인 모든 객체에서 특정 스토리지 클래스를 설정합니다.

자세한 내용은 metadataOptions 참조 문서를 확인하세요.

Cloud Storage 버킷 간 전송

메타데이터 예시 보존 방식

Cloud Storage 고정 키 메타데이터 필드(예를 들어 Cache-Control, Content-Disposition, Content-Type).

자세한 내용은 객체 메타데이터를 참조하세요.

고정 키 메타데이터로 보존됩니다.

키-값 쌍으로 형식이 지정된 Cloud Storage 사용자 정의 메타데이터입니다. 자세한 내용은 커스텀 메타데이터를 참조하세요.

대상 Cloud Storage 객체에서 커스텀 메타데이터 필드로 보존되며, 나중에 수정하거나 삭제할 수 있습니다.

객체 크기 size로 보존됩니다.
객체 생성 x-goog-reserved-source-generation 키를 사용하여 커스텀 메타데이터 필드로 보존되며, 이 키는 나중에 수정하거나 삭제할 수 있습니다.
객체 보존 조치

이벤트 기반 보존 조치는 보존되지 않습니다. 대상 버킷에 기본 이벤트 기반 보존 조치 속성이 사용 설정되었으면 이벤트 기반 보존 조치가 전송된 객체에 적용됩니다.

임시 보존 조치는 기본적으로 보존됩니다. 전송 중 임시 보존 조치를 삭제하려면 metadataOptions 객체의 temporaryHold 필드를 TEMPORARY_HOLD_SKIP으로 설정합니다.

액세스제어 목록(ACL)

ACL은 선택적으로 보존될 수 있습니다. 자세한 내용은 metadataOptions 참조 문서를 확인하세요.

ACL을 보존할 때는 액세스할 수 없는 객체를 만들지 않도록 주의해야 합니다.

자세한 내용은 Cloud Storage 액세스 제어 목록 문서를 참조하세요.

스토리지 클래스

전송 중 스토리지 클래스를 설정하기 위한 여러 옵션이 있습니다.

  • 각 객체의 스토리지 클래스를 대상 버킷으로 설정합니다. 기본적으로 설정되어 있습니다.
  • 소스 객체의 스토리지 클래스를 보존합니다.
  • 전송 중인 모든 객체에서 특정 스토리지 클래스를 설정합니다.

자세한 내용은 metadataOptions 참조 문서를 확인하세요.

고객 관리 암호화 키

고객 관리 암호화 키(CMEK)를 객체에서 사용하는 경우 객체가 대상 버킷에 기록될 때 선택적으로 동일한 키를 사용할 수 있습니다.

기본 동작은 버킷의 암호화 방법을 사용하여 객체를 대상 버킷에 쓰는 것입니다.

원래 CMEK를 보존할 때는 다음 제한사항에 주의해야 합니다.

자세한 내용은 metadataOptions 참조 문서를 확인하세요.

타임스탬프 메타데이터

timeCreated를 선택적으로 보존할 수 있습니다. 보존 값은 Cloud Storage에서 전송된 객체의 customTime 필드에 저장됩니다. 자세한 내용은 metadataOptions 참조 문서를 확인하세요.

updated 메타데이터는 보존되지 않습니다.

수정할 수 없는 다른 Cloud Storage 메타데이터(예: etag, componentCount)입니다. 보존되지 않습니다.

Cloud Storage의 메타데이터 목록은 객체를 참조하세요.

Cloud Storage로 URL 목록 전송

URL 목록에 대한 상세 설명은 URL 목록 만들기를 참조하세요.

메타데이터 예시 보존 방식
고정 키 메타데이터 필드(예를 들어 Cache-Control, Content-Disposition, Content-Type). 수정 가능한 메타데이터로 보존됩니다.
Content-LengthMD5

수정할 수 없는 메타데이터로 보존됩니다.

소스가 MD5 해시 값을 제공하지 않으면 값을 보존하지 않습니다.

이 보존 방식은 Content-LengthMD5와 관련이 있습니다. 이를 제외한 다른 수정할 수 없는 메타데이터는 보존되지 않습니다.

타임스탬프 메타데이터(예를 들어 생성 시간, 수정 시간, 기타 소스별 메타데이터)

보존되지 않습니다.

소스의 타임스탬프 메타데이터는 보존되지 않습니다. 생성 시간 timeCreated는 Cloud Storage에서 객체가 생성되는 시간을 반영합니다. 마찬가지로 updated는 Cloud Storage에서 객체의 메타데이터가 수정되는 시간을 반영합니다.

스토리지 클래스

전송 중 스토리지 클래스를 설정하기 위한 여러 옵션이 있습니다.

  • 각 객체의 스토리지 클래스를 대상 버킷으로 설정합니다. 기본적으로 설정되어 있습니다.
  • 전송 중인 모든 객체에서 특정 스토리지 클래스를 설정합니다.

자세한 내용은 metadataOptions 참조 문서를 확인하세요.

POSIX 파일 시스템 전송

POSIX 파일 시스템에서 파일을 전송할 때 Storage Transfer Service는 선택적으로 특정 속성을 커스텀 메타데이터로 보존할 수 있습니다. 나중에 이러한 파일을 파일 시스템에 다시 작성하면 Storage Transfer Service는 보존된 메타데이터를 다시 POSIX 속성으로 변환할 수 있습니다.

메타데이터 예시 보존 방식
수정된 시간(mtime)

보존됩니다.

mtimegoog-reserved-file-mtime 키를 통해 커스텀 메타데이터로 보존됩니다.

파일 크기

보존됩니다.

파일 크기는 size로 보존됩니다.

숫자 UID
숫자 GID
숫자 MODE
심볼릭 링크

(선택사항)

보존 방식은 metadataOptions 객체로 지정됩니다. 자세한 내용은 선택적 POSIX 메타데이터 보존을 참조하세요.

기본 동작은 메타데이터를 보존하지 않는 것입니다.

폴더 메타데이터 폴더 수준 메타데이터는 파일 간 전송에 대해서만 보존됩니다. 전송의 UID, GID, MODE 보존 설정이 해당 전송에 대해 파일 및 폴더에 적용됩니다.

mtime은 폴더에 대해 보존되지 않습니다. mtime은 대상 파일 시스템에 폴더의 생성 시간으로 설정됩니다.

폴더 메타데이터는 매니페스트 전송에 대해 보존되지 않습니다.

스토리지 클래스

전송 중 스토리지 클래스를 설정하기 위한 여러 옵션이 있습니다.

  • 각 객체의 스토리지 클래스를 대상 버킷으로 설정합니다. 기본적으로 설정되어 있습니다.
  • 전송 중인 모든 객체에서 특정 스토리지 클래스를 설정합니다.

자세한 내용은 metadataOptions 참조 문서를 확인하세요.

선택적 POSIX 메타데이터 보존

하나 이상의 숫자 UID, 숫자 GID, 숫자 MODE, 심볼릭 링크를 보존하려면 전송 작업 본문에 metadataOptions 객체를 지정합니다.

이러한 옵션은 POSIX-Cloud Storage 전송과 Cloud Storage-POSIX 전송에 모두 적용됩니다. 후자의 경우 파일이 Cloud Storage로 처음 전송될 때 메타데이터가 보존되어 있어야 합니다.

{
  "description": "metadata-example",
  "projectId": "example-project-id"
  "transferSpec": {
    ...
    "transferOptions": {
      "metadataOptions": {
        "gid":     "GID_NUMBER",       # Default is "GID_SKIP"
        "uid":     "UID_NUMBER",       # Default is "UID_SKIP"
        "mode":    "MODE_PRESERVE",    # Default is "MODE_SKIP"
        "symlink": "SYMLINK_PRESERVE"  # Default is "SYMLINK_SKIP"
      }
    }
  }
}

POSIX - Cloud Storage

보존된 메타데이터는 Cloud Storage에 커스텀 메타데이터 키-값 쌍으로 저장됩니다.

  • 숫자 GID는 goog-reserved-posix-gid로 저장됩니다.
  • 숫자 UID는 goog-reserved-posix-uid로 저장됩니다.
  • 숫자 MODE는 goog-reserved-posix-mode로 저장됩니다.

기호화된 링크의 경우 Storage Transfer Service는 대상 링크를 Cloud Storage의 객체로 유지하여 다음과 같은 특성을 갖습니다.

  • 객체 키는 대상 프리픽스와 심볼릭 링크(root_directory 기준)의 경로로 구성됩니다.
  • 객체 메타데이터:
    • 모든 심볼릭 링크 메타데이터는 Cloud Storage 객체 메타데이터로 보존됩니다.
    • 커스텀 메타데이터 항목이 생성됩니다. goog-reserved-file-is-symlink:true
  • 객체 콘텐츠는 심볼릭 링크 대상입니다. 예를 들어 심볼릭 링크 sym-> dir1/target의 경우 객체의 콘텐츠는 'dir1/target'입니다.

Storage Transfer Service는 링크를 검증하거나 대상 파일을 복사하지 않습니다.

Cloud Storage - POSIX

파일이 Cloud Storage로 전송될 때 메타데이터가 보존되면 POSIX 파일 시스템으로 다시 전송될 때 해당 메타데이터를 파일에 다시 쓸 수 있습니다.

메타데이터 옵션을 보존하도록 설정된 경우 Storage Transfer Service는 다음 작업을 수행합니다.

  • 기호화된 링크: Storage Transfer Service는 대상 링크를 가리키는 기호화된 링크 파일을 만듭니다. 대상 파일이 없으면 심볼릭 링크가 깨집니다.
  • GID, UID 및 MODE: Cloud Storage 메타데이터에 저장된 값은 파일에 다시 쓰여집니다.

POSIX - POSIX

파일 시스템 간 전송은 파일 및 폴더의 GID, UID 및 MODE를 선택적으로 보존합니다.

파일에는 최종 수정 시간이 저장되지만 폴더에는 저장되지 않습니다. mtime은 대상 파일 시스템에 폴더의 생성 시간으로 설정됩니다.

Storage Transfer Service는 중간 버킷에 0바이트 폴더 객체를 만든 다음 해당 메타데이터를 대상 파일 시스템의 폴더에 다시 복사하여 폴더 메타데이터를 저장합니다. 이러한 이유로 중간 버킷에 만든 객체 수가 전송 중인 파일 수보다 많을 수 있습니다.