如何在同一GCP存储桶内移动文件并保留版本历史?
同一GCP存储桶内移动文件并保留版本历史的实现方法
首先确认你的存储桶已经开启版本控制——这是保留版本历史的前提,未开启的话不存在版本历史可保留。
情况1:仅迁移当前版本,原路径保留历史版本
直接用gsutil mv即可,同桶内的移动本质是对象重命名,原路径的历史版本会以非当前版本形式留存,新路径获得当前版本:
gsutil mv gs://your-bucket/old-path/file.txt gs://your-bucket/new-path/file.txt
情况2:迁移所有历史版本到新路径
如果要把对象的所有版本都转移到新路径,需要分两步操作:
- 复制所有版本到目标路径
使用gsutil cp加-A参数(复制所有generation版本):gsutil cp -A gs://your-bucket/old-path/file.txt gs://your-bucket/new-path/file.txt - 清理原路径的所有版本(可选)
要是不需要留着原路径的版本,用gsutil rm加-A参数删除所有版本:gsutil rm -A gs://your-bucket/old-path/file.txt注意:删除操作不可恢复,执行前务必确认。
批量处理文件夹
要批量迁移整个文件夹的所有文件及版本,用通配符配合-m(并行处理)提升速度:
# 批量复制所有版本 gsutil -m cp -A gs://your-bucket/old-folder/** gs://your-bucket/new-folder/ # 批量删除原文件夹所有版本(可选) gsutil -m rm -A gs://your-bucket/old-folder/**
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

