使用gcloud storage cp跨云复制时,如何避免源桶目录被嵌套复制?
GCS存储桶递归复制目录结构调整方案
问题根源
使用gcloud storage cp -r gs://test-1 gs://test-3这类命令时,工具会将源桶本身视为一个目录对象,完整复制到目标桶内,导致目标路径自动添加源桶名称作为层级。
正确复制命令
要让源桶内的目录结构直接映射到目标桶根目录,只需在源路径末尾添加/**,匹配桶内所有对象(含子目录内容):
gcloud storage 命令
gcloud storage cp -r "gs://test-1/**" "gs://test-3" --encryption-key=XXXXXXXXXXXXXXXX --manifest-path=test-manifest.csv --storage-class=REGIONAL
gsutil 命令
对应gsutil的写法一致,同样通过/**指定源桶内所有内容:
gsutil cp -r "gs://test-1/**" "gs://test-3" -k XXXXXXXXXXXXXXXX -o GSUtil:manifest_path=test-manifest.csv -o GSUtil:default_storage_class=REGIONAL
rsync命令异常排查
如果rsync直接退出无输出,可按以下方式排查:
- 确认账号对源桶有读权限、目标桶有写权限
- 添加
-v参数查看详细错误日志:
gsutil rsync -r -v "gs://test-1" "gs://test-3"
注:rsync默认会将源桶内内容同步到目标桶根目录,无需额外调整路径,权限正常即可正常执行。
内容的提问来源于stack exchange,提问作者SRJ
相关产品推荐
相关产品推荐

