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

如何在GCS同存储桶内保留原目录层级仅迁移所有.py文件

GCS 同存储桶 Python 文件层级迁移实现方案

方案一:gsutil 命令行实现(无需写代码,效率最高)

提前安装好 Google Cloud SDK 并完成账号认证后,直接执行对应命令即可:

1. 仅复制.py文件到目标目录(源目录文件保留)

使用rsync命令自动匹配文件并保留原有目录结构:

gsutil -m rsync -r \
  --include='*/' \
  --include='*.py' \
  --exclude='*' \
  gs://<替换为你的存储桶名>/FOLDER_A/ \
  gs://<替换为你的存储桶名>/FOLDER_B/

参数说明:

  • -m:开启多线程操作,大幅提升大批量文件迁移速度
  • -r:递归遍历所有子目录
  • 过滤规则顺序为先包含所有子目录(保证rsync能遍历到深层的.py文件),再包含所有.py后缀的文件,最后排除所有其他类型文件
  • 首次执行可加 -n 参数做试运行,只会输出待操作的文件列表,不会实际执行迁移,确认匹配的文件正确后再去掉 -n 正式运行

2. 完全迁移(源目录的.py文件执行后删除)

先执行上面的复制命令,确认文件都同步到FOLDER_B后,执行以下命令删除源目录下的所有.py文件:

gsutil -m rm gs://<替换为你的存储桶名>/FOLDER_A/**/*.py

删除操作同样可以先加 -n 参数试运行,确认待删除文件无误后再正式执行。

方案二:Python 脚本实现(适合需要自定义逻辑的场景)

如果需要做额外的逻辑判断、日志记录等操作,可以用Google Cloud官方的Python SDK实现:

1. 先安装依赖

pip install google-cloud-storage

2. 迁移脚本示例

from google.cloud import storage

def migrate_py_files(bucket_name, source_prefix="FOLDER_A/", target_prefix="FOLDER_B/"):
    # 初始化GCS客户端,提前通过gcloud auth application-default login完成认证
    storage_client = storage.Client()
    bucket = storage_client.bucket(bucket_name)
    
    # 遍历源目录下所有文件
    for blob in bucket.list_blobs(prefix=source_prefix):
        # 只处理.py后缀的文件
        if blob.name.endswith(".py"):
            # 替换路径前缀得到目标路径
            target_blob_name = blob.name.replace(source_prefix, target_prefix, 1)
            target_blob = bucket.blob(target_blob_name)
            
            # 同桶内直接复制
            target_blob.copy_from(blob)
            # 如果需要完全迁移(删除源文件),取消注释下面一行
            # blob.delete()
            print(f"已迁移:{blob.name} -> {target_blob_name}")

if __name__ == "__main__":
    # 替换为你的存储桶名称
    migrate_py_files(bucket_name="你的存储桶名")

注意事项

  • 操作前建议先开启存储桶版本控制或对数据做备份,避免误操作导致数据丢失
  • 同存储桶同区域内的文件迁移不会产生外网流量,仅会产生极少量的操作费用
  • 大批量文件迁移建议优先使用gsutil命令,性能比自行编写的脚本更高

内容的提问来源于stack exchange,提问作者Abhinav Dhiman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:02