Azure Blob迁移至GCP Bucket:如何保留文件日期并添加元数据
Azure容器文件迁移至GCP Bucket并保留创建日期及添加原始元数据方案
核心思路
提取Azure Blob的创建时间元数据,迁移时将该时间同步到GCP对象的修改时间,同时添加自定义元数据记录原始创建时间,实现双重保留需求。
步骤1:导出Azure Blob的创建时间元数据
用Azure CLI批量导出目标容器内所有文件的名称和创建时间到CSV文件:
az storage blob list --account-name <你的Azure存储账户名> --container-name <目标容器名> --query "[].{name:name, creationTime:properties.creationTime}" --output csv > azure_blobs_metadata.csv
注意:替换命令中的占位符为实际信息;若涉及多个容器,可循环执行命令并合并结果。
步骤2:批量迁移并配置元数据
编写Bash脚本读取CSV文件,逐个处理文件迁移与元数据设置:
#!/bin/bash # 替换为你的实际账户信息 AZURE_STORAGE_ACCOUNT="你的Azure存储账户名" AZURE_CONTAINER="目标容器名" GCP_BUCKET="你的GCP Bucket名" while IFS=, read -r blob_name creation_time do # 跳过CSV表头 if [ "$blob_name" = "name" ]; then continue; fi # 临时下载Azure Blob到本地 az storage blob download --account-name "$AZURE_STORAGE_ACCOUNT" --container-name "$AZURE_CONTAINER" --name "$blob_name" --file "/tmp/$blob_name" # 将本地文件时间戳替换为Azure原始创建时间 touch -d "$creation_time" "/tmp/$blob_name" # 上传到GCP Bucket,保留时间戳(对应GCP对象的修改时间) gsutil cp -p "/tmp/$blob_name" "gs://$GCP_BUCKET/$blob_name" # 添加自定义元数据记录原始创建时间 gsutil setmeta -h "x-goog-meta-original-creation-time:$creation_time" "gs://$GCP_BUCKET/$blob_name" # 清理临时文件 rm "/tmp/$blob_name" done < azure_blobs_metadata.csv
说明:
-p参数会同步本地文件的修改/访问时间到GCP对象元数据,满足"保留创建日期"的直观展示需求;x-goog-meta-original-creation-time为自定义元数据键,可根据需求修改名称。
步骤3:验证迁移结果
用gsutil stat命令检查目标文件的元数据:
gsutil stat gs://<你的GCP Bucket名>/<文件名>
输出中会看到:
Updated字段与Azure原始创建时间一致;- 自定义元数据
x-goog-meta-original-creation-time完整记录了原始时间字符串。
大文件量替代方案
如果文件规模极大,可使用GCP Dataflow或Azure Data Factory构建无服务器迁移管道:
- 在管道中读取Azure Blob时提取
creationTime元数据; - 写入GCP Bucket时,将该时间作为自定义元数据附加,并通过管道配置文件时间戳。
内容的提问来源于stack exchange,提问作者Preethi
相关产品推荐
相关产品推荐

