You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:05:04