本文档介绍了使用 Storage Transfer Service 在不同来源和目标之间转移数据时保留的元数据。
概览
Storage Transfer Service 会保留以下元数据:
系统会保留用户为源自 Cloud Storage、Amazon S3 或 Microsoft Azure Blob Storage 的转移作业创建的自定义元数据。
Cloud Storage 存储桶之间的转移可以选择性地保留对象 ACL、客户管理的加密密钥、存储类别、对象创建时间(作为
customTime
字段的值)和临时冻结。对于从任何来源到 Cloud Storage 存储桶的转移,在转移过程中,可以将目标存储桶中的对象存储类别设置为任何受支持的类别。
对于源自 POSIX 文件系统的转移作业,系统会保留文件大小和最后修改时间 (
mtime
)。系统不会为文件夹保留mtime
。(可选)对于 POSIX 文件系统之间的转移,可以保留符号链接、数字 UID、数字 GID 和数字 MODE。
如果保留了 UID、GID 或 MODE,则系统也会为文件夹保留相应元数据,但这仅限文件系统之间的转移。Cloud Storage 会在目标文件系统上重新创建文件夹,并恢复 UID、GID 和/或 MODE。这包括空文件夹。
mtime
不会被保留。如果转移是通过清单完成,则系统不会保留文件夹级别的元数据。
本文档中未明确涉及的元数据字段不会保留。
元数据保留行为
以下部分列出了来自不同来源存储系统的元数据示例,并展示了 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 对象标记,由您定义为键值对。如需了解详情,请参阅对象标记。 | 不保留。 |
Amazon S3 系统定义的元数据,ETag 和对象大小除外。如需查看完整列表,请参阅对象键和元数据的系统定义的对象元数据部分。 |
不保留。
系统不会保留来自来源的时间戳元数据。创建时间 |
存储类别 |
您可以通过多种方式在转移期间设置存储类别。
如需了解详情,请参阅 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 元数据。 |
不保留。
系统不会保留来自来源的时间戳元数据。创建时间 |
存储类别 |
您可以通过多种方式在转移期间设置存储类别。
如需了解详情,请参阅 metadataOptions 参考文档。 |
在 Cloud Storage 存储桶之间转移数据
元数据示例 | 保留行为 |
---|---|
Cloud Storage 固定键元数据字段,例如: 如需了解详情,请参阅对象元数据 |
以固定键元数据形式保留。 |
Cloud Storage 用户定义的元数据,格式为键值对。如需了解详情,请参阅自定义元数据。 |
以目标 Cloud Storage 对象中的自定义元数据字段形式保留,您可以稍后进行修改或移除。 |
对象大小 |
以 size 形式保留。 |
对象世代 |
以自定义元数据字段形式保留,且键为 x-goog-reserved-source-generation ,您可以稍后进行修改或移除。 |
对象保全 |
基于事件的冻结不会保留。如果目标存储桶启用了默认的基于事件的冻结属性,则基于事件的冻结会应用于已转移的对象。 默认情况下,临时冻结会被保留。如需在转移期间舍弃临时冻结,请将 metadataOptions 对象的 |
访问控制列表 (ACL) |
您可以选择保留 ACL。如需了解详情,请参阅 metadataOptions 参考文档。 保留 ACL 时,请务必避免创建无法访问的对象。 如需了解详情,请参阅 Cloud Storage 访问控制列表文档。 |
存储类别 |
您可以通过多种方式在转移期间设置存储类别。
如需了解详情,请参阅 metadataOptions 参考文档。 |
客户管理的加密密钥 |
如果对象上使用的了客户管理的加密密钥 (CMEK),则该对象在写入目标存储桶时可以选择使用相同的密钥。 默认行为是使用存储桶的加密方法将对象写入目标存储桶。 保留原始 CMEK 时,请注意以下限制:
如需了解详情,请参阅 metadataOptions 参考文档。 |
时间戳元数据 |
您可以选择保留
|
其他不可修改的 Cloud Storage 元数据,例如 etag 和 componentCount 。
|
不保留。 |
如需查看 Cloud Storage 中的元数据列表,请参阅对象。
将网址列表转移到 Cloud Storage
如需详细了解网址列表,请参阅创建网址列表。
元数据示例 | 保留行为 |
---|---|
固定键元数据字段,例如:Cache-Control 、Content-Disposition 和 Content-Type 。 |
以可修改的元数据形式保留。 |
Content-Length 和 MD5 |
以不可修改的元数据形式保留。
如果来源未提供
此保留行为针对的是 |
时间戳元数据,例如:创建时间、修改时间和其他特定于来源的元数据。 |
不保留。
系统不会保留来自来源的时间戳元数据。创建时间 |
存储类别 |
您可以通过多种方式在转移期间设置存储类别。
如需了解详情,请参阅 metadataOptions 参考文档。 |
POSIX 文件系统转移
从 POSIX 文件系统转移文件时,Storage Transfer Service 可以选择将某些特性以自定义元数据的形式保留。如果这些文件之后写回到文件系统,则 Storage Transfer Service 可以将保留的元数据转换回 POSIX 特性。
元数据示例 | 保留行为 |
---|---|
修改时间 (mtime ) |
保留。
|
文件大小 |
保留。 文件大小以 |
数字 UID 数字 GID 数字 MODE 符号链接 |
可选。 保留行为使用 默认行为是不保留任何元数据。 |
文件夹元数据 | 文件夹级别的元数据只会针对文件系统之间的转移保留。转移作业的 UID、GID 和 MODE 保留设置会应用于这些转移作业的文件和文件夹。 系统不会为文件夹保留 系统不会为清单转移保留文件夹元数据。 |
存储类别 |
您可以通过多种方式在转移期间设置存储类别。
如需了解详情,请参阅 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 字节文件夹对象,然后将该元数据复制回目标文件系统上的文件夹,来保存文件夹元数据。因此,在中间存储桶中创建的对象数量可能大于正在转移的文件数量。