如何将GCP云存储某文件夹内所有文件移动到另一文件夹?
gsutil 移动云存储文件夹全量文件操作方法
gsutil 原生的mv命令就可以完成文件夹内全量文件的移动,不需要单独写脚本遍历文件,具体操作如下:
- 常规场景移动(覆盖源文件夹下所有非隐藏文件、嵌套子目录及子目录内全部内容)
加-m参数可以开启多线程并行操作,大幅提升大量文件场景下的移动速度,命令格式:# 同存储桶内移动 gsutil -m mv gs://<源存储桶名>/<源文件夹路径>/* gs://<源存储桶名>/<目标文件夹路径>/ # 跨存储桶移动只需要替换目标路径的桶名即可 gsutil -m mv gs://<源存储桶名>/<源文件夹路径>/* gs://<目标存储桶名>/<目标文件夹路径>/ - 包含隐藏文件的移动
上面命令里的通配符*默认不会匹配以.开头的隐藏文件(比如.tmp、.htaccess这类),如果你的源文件夹下有这类文件,补充执行下面的命令即可,gsutil会自动忽略路径下的.和..特殊目录,不会报错:gsutil -m mv gs://<源存储桶名>/<源文件夹路径>/.* gs://<目标存储桶名>/<目标文件夹路径>/
路径写法注意:如果源路径末尾不带
*通配符,比如直接写gs://源桶/源文件夹,执行后会把整个源文件夹本身作为子目录放到目标文件夹下,而不是把源文件夹内的内容平铺到目标目录,写路径的时候要注意区分。
执行移动前建议先做校验,避免路径写错误移动文件:
- 先执行ls命令查看通配符匹配到的文件列表,确认和你要移动的范围一致:
gsutil ls gs://<源存储桶名>/<源文件夹路径>/* - 同存储桶、同区域内的移动属于纯元数据操作,速度快且不产生外网流量费用;跨存储桶、跨区域的移动本质是复制完成后删除源文件,会产生对应请求、流量费用。
内容的提问来源于stack exchange,提问作者DISCO
相关产品推荐
相关产品推荐

