Firebase项目间迁移图片存储 同名文件夹免覆盖导入方案咨询
默认cp命令的行为说明
你之前使用的gsutil cp -r gs://oldProjectAPIURL/{folder name} gs://newProjectURL命令默认开启覆盖模式,只要目标路径下存在同名文件,会直接无提示覆盖现有内容,存在同名文件夹时,文件夹内的同名文件也会被替换。
不覆盖现有内容的迁移方案
1. 先做操作预览(无实际写入)
执行带--dry-run参数的命令,仅打印将要复制的文件列表,不会修改任何存储内容,方便你提前核对迁移范围:
gsutil cp -r --dry-run gs://oldProjectAPIURL/{folder name} gs://newProjectURL
2. 执行无覆盖迁移
添加-n(no-clobber,不覆盖)参数,命令会自动跳过新项目存储桶中已经存在的文件,仅复制旧项目独有的内容,完全不会修改现有文件:
gsutil cp -rn gs://oldProjectAPIURL/{folder name} gs://newProjectURL
如果待迁移的文件数量多、体积大,可以添加-m参数开启多线程传输,大幅提升迁移速度:
gsutil -m cp -rn gs://oldProjectAPIURL/{folder name} gs://newProjectURL
其他补充说明
- 你需要迁移2个文件夹的话,可以重复执行两次命令替换
{folder name},也可以把两个文件夹路径用空格分隔写在同一条命令中:gsutil -m cp -rn gs://oldProjectAPIURL/文件夹1 gs://oldProjectAPIURL/文件夹2 gs://newProjectURL - 迁移完成后可以用
gsutil diff -r gs://oldProjectAPIURL/对应文件夹 gs://newProjectURL/对应文件夹命令对比两边文件差异,确认迁移结果符合预期。
内容的提问来源于stack exchange,提问作者Noah Iarrobino
相关产品推荐
相关产品推荐

