メタデータの保持

このドキュメントでは、Storage Transfer Service を使用してさまざまなソースと宛先間でデータを転送するときに保持されるメタデータについて説明します。

概要

Storage Transfer Service は次のメタデータを保持します。

  • Cloud Storage、Amazon S3、Microsoft Azure Blob Storage からの転送用にユーザーが作成したカスタム メタデータは保持されます。

  • Cloud Storage バケット間の転送では、オプションでオブジェクト ACL、顧客管理の暗号鍵、ストレージ クラス、オブジェクト作成時間(customTime フィールドの値として)、一時保留を保持できます。

  • 任意の送信元から Cloud Storage バケットへの転送の場合、転送中に、転送先バケット内のオブジェクトのストレージ クラスをサポート対象の任意のクラスに設定できます。

  • POSIX ファイル システムからの転送では、ファイルサイズと最終更新日時(mtime)が保持されます。フォルダの mtime は保持されません。

  • シンボリック リンク、数値 UID、数値 GID、数値 MODE は、POSIX ファイル システムとの間での転送用に任意に保持できます。

  • ファイル システム間の転送の場合のみ、UID、GID、MODE が保持されていると、フォルダでもそのメタデータが保持されます。Cloud Storage は、宛先ファイル システムにフォルダを再作成して、UID、GID、MODE を復元します。これには空のフォルダも含まれます。mtime は保持されません。

    転送がマニフェストによって行われる場合、フォルダレベルのメタデータは保持されません。

このドキュメントで明記されていないメタデータ フィールドは保持されません。

メタデータの保持動作

以降のセクションでは、さまざまなソース ストレージ システムのメタデータの例と、Storage Transfer Service でメタデータが保持される仕組みを説明します。メタデータの完全なリストについては、ソース ストレージ システムのドキュメントをご覧ください。

Amazon S3 から Cloud Storage

メタデータの例 保持動作
Amazon S3 の固定キーメタデータ フィールド(Cache-ControlContent-DispositionContent-Type など)。 固定キーメタデータとして保持されます。
Amazon S3 ユーザー定義メタデータ(Key-Value ペアの形式)。詳細については、オブジェクト キーとメタデータユーザー定義のオブジェクト メタデータ セクションをご覧ください。

転送先 Cloud Storage オブジェクトのカスタム メタデータ フィールドとして保持され、後で編集や削除ができます。

ETag キー x-goog-source-etag を持つカスタム メタデータ フィールドとして保持され、後で編集や削除ができます。
オブジェクト サイズ。 size として保持されます。
Amazon S3 アクセス制御リスト(ACL)。完全なリストについては、アクセス制御リスト(ACL)の概要条件キーをご覧ください。 保持されません。
Key-Value ペアとして定義した Amazon S3 オブジェクト タグ。詳しくは、オブジェクト タグをご覧ください。 保持されません。
Amazon S3 システム定義メタデータ(ETag とオブジェクト サイズを除く)。完全なリストについては、オブジェクト キーとメタデータシステム定義のオブジェクト メタデータをご覧ください。

保持されません。

ソースのタイムスタンプ メタデータは保持されません。作成時間 timeCreated は、Cloud Storage でオブジェクトが作成された時間を表します。同様に、updated は、Cloud Storage でオブジェクトのメタデータが変更される時刻を表します。

ストレージ クラス

転送中にストレージ クラスを設定するには、複数の方法があります。

  • 各オブジェクトのストレージ クラスを、転送先バケットのストレージ クラスに設定します。これはデフォルトの動作です。
  • 転送するすべてのオブジェクトに特定のストレージ クラスを設定します。

詳しくは、metadataOptions のリファレンス ドキュメントをご覧ください。

Microsoft Azure Storage から Cloud Storage

メタデータの例 保持動作
Microsoft Azure Storage の固定キーメタデータ フィールド(Cache-ControlContent-DispositionContent-Type など)。 固定キーメタデータとして保持されます。
Microsoft Azure Storage ユーザー定義のメタデータ(Key-Value ペアの形式)。詳細については、Blob サービス リソースのプロパティとメタデータの設定と取得をご覧ください。

転送先 Cloud Storage オブジェクトのカスタム メタデータ フィールドとして保持され、後で編集や削除ができます。

ETag キー x-goog-source-etag を持つカスタム メタデータ フィールドとして保持され、後で編集や削除ができます。
オブジェクト サイズ。 size として保持されます。
Azure Data Lake Storage(ADLS)Gen 2 でサポートされる POSIX ファイル システム権限。 保持されません。
Microsoft Azure Storage のアクセス制御(具体的には x-ms-blob-public-access)。詳細については、Container ACL の取得レスポンス ヘッダーをご覧ください。 保持されません。
Microsoft Azure Storage のインデックス タグ。詳細については、blob インデックス タグを使用して Azure Blob データを管理、検索するをご覧ください。 保持されません。
Last-Modifiedx-ms-creation-timex-ms-versionx-ms-request-server-encryptedx-ms-encryption-scope などの Microsoft Azure Storage タイムスタンプ メタデータ。詳細については、Blob メタデータの設定をご覧ください。

保持されません。

ソースのタイムスタンプ メタデータは保持されません。作成時間 timeCreated は、Cloud Storage でオブジェクトが作成された時間を表します。同様に、updated は、Cloud Storage でオブジェクトのメタデータが変更される時刻を表します。

ストレージ クラス

転送中にストレージ クラスを設定するには、複数の方法があります。

  • 各オブジェクトのストレージ クラスを、転送先バケットのストレージ クラスに設定します。これはデフォルトの動作です。
  • 転送するすべてのオブジェクトに特定のストレージ クラスを設定します。

詳しくは、metadataOptions のリファレンス ドキュメントをご覧ください。

Cloud Storage バケット間の転送

メタデータの例 保持動作

Cloud Storage の固定キーメタデータ フィールド(Cache-ControlContent-DispositionContent-Type など)。

詳細については、オブジェクトのメタデータをご覧ください。

固定キーメタデータとして保持されます。

Cloud Storage のユーザー定義メタデータ(Key-Value ペアの形式)。詳細については、カスタム メタデータをご覧ください。

転送先 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 の編集不可メタデータ(etagcomponentCount など)。 保持されません。

Cloud Storage のメタデータのリストについては、オブジェクトをご覧ください。

Cloud Storage への URL リスト転送

URL リストの詳細については、URL リストの作成をご覧ください。

メタデータの例 保持動作
固定キーメタデータ フィールド(Cache-ControlContent-DispositionContent-Type など)。 編集可能メタデータとして保持されます。
Content-LengthMD5

編集不可メタデータとして保持されます。

ソースで MD5 ハッシュ値が指定されていない場合、値は保持されません。

この保持動作は、Content-LengthMD5 に固有のものです。上記以外の編集不可メタデータは保持されません。

タイムスタンプ メタデータ(作成日時、変更日時、その他のソース固有のメタデータなど)。

保持されません。

ソースのタイムスタンプ メタデータは保持されません。作成時間 timeCreated は、Cloud Storage でオブジェクトが作成された時間を表します。同様に、updated は、Cloud Storage でオブジェクトのメタデータが変更される時刻を表します。

ストレージ クラス

転送中にストレージ クラスを設定するには、複数の方法があります。

  • 各オブジェクトのストレージ クラスを、転送先バケットのストレージ クラスに設定します。これはデフォルトの動作です。
  • 転送するすべてのオブジェクトに特定のストレージ クラスを設定します。

詳しくは、metadataOptions のリファレンス ドキュメントをご覧ください。

POSIX ファイル システム転送

POSIX ファイル システムからファイルを転送する際に、Storage Transfer Service は特定の属性をカスタム メタデータとして保持できます。これらのファイルが後でファイル システムに書き戻された場合、Storage Transfer Service は保存されたメタデータを POSIX 属性に変換できます。

メタデータの例 保持動作
変更時刻(mtime

保持されます。

mtime は、キー goog-reserved-file-mtime を持つカスタム メタデータとして保持されます。

ファイルサイズ

保持されます。

ファイルサイズは size として保持されます。

数値 UID
数値 GID
数値 MODE
シンボリック リンク

省略可。

保持動作は metadataOptions オブジェクトで指定します。詳細については、オプションの POSIX メタデータの保持をご覧ください。

デフォルトの動作では、メタデータは保持されません。

フォルダのメタデータ フォルダレベルのメタデータは、ファイル システム間の転送でのみ保持されます。転送の UID、GID、MODE の予約設定は、これらの転送のファイルとフォルダに適用されます。

フォルダの mtime は保持されません。mtime は、宛先ファイル システム上にフォルダが作成された時刻に設定されます。

マニフェストの転送では、フォルダのメタデータは保持されません。

ストレージ クラス

転送中にストレージ クラスを設定するには、複数の方法があります。

  • 各オブジェクトのストレージ クラスを、転送先バケットのストレージ クラスに設定します。これはデフォルトの動作です。
  • 転送するすべてのオブジェクトに特定のストレージ クラスを設定します。

詳しくは、metadataOptions のリファレンス ドキュメントをご覧ください。

オプションの POSIX メタデータの保持

1 つ以上の数値 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

保持されたメタデータは、カスタム メタデータの Key-Value ペアとして 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 間

ファイル システム間の転送では、必要に応じてファイルとフォルダの GID、UID、MODE を保持できます。

最終更新日時はファイルに保存されますが、フォルダの場合は保存されません。mtime は、宛先ファイル システム上のフォルダの作成時間に設定されます。

Storage Transfer Service は、中間バケットに 0 バイトのフォルダ オブジェクトを作成し、そのメタデータを宛先ファイル システムのフォルダにコピーすることで、フォルダのメタデータを保存します。このため、中間バケットで作成されたオブジェクトの数が、転送されるファイルの数より多くなる場合があります。