Google云端存储 - GSUtil - 复制文件,跳过现有文件,不覆盖
问题描述:
我想将本地目录同步到Google云端存储中的存储分区。我想复制远程不存在的本地文件,跳过远程和本地已存在的文件。这可能与GSUtil做到这一点?我似乎找不到GSUtil的“同步”选项或“不覆盖”。是否可以编写脚本?Google云端存储 - GSUtil - 复制文件,跳过现有文件,不覆盖
我在Linux上(Ubuntu 12.04)?
答
gsutil现在支持cp命令上的noclobber标志(-n)。将gsutil更新到最新版本(使用gsutil update),然后在执行复制时使用-n标志。
该标志将跳过已存在于目的地的文件。
答
你需要(-n)添加到命令,在Google Cloud Platform正式提到:
-n:无撞。指定时,目标上的现有文件或对象不会被覆盖。任何由此选项跳过的项目都将被报告为跳过。此选项将执行额外的GET请求,以在尝试上载数据之前检查项目是否存在。这将节省重新传输的数据,但额外的HTTP请求可能会使较小的对象传输变得更慢并且更昂贵。
例(使用多线程):
gsutil -m cp -n -a public-read -R large_folder gs://bucket_name
答
使用rsync,您可以复制丢失/修改的文件/对象:
gsutil -m rsync -r <local_folderpath> gs://<bucket_id>/<cloud_folderpath>
此外,如果你使用-d
选项,你会也删除您的存储桶中不再存在的文件/对象。
另一个选择可能是使用Object Versioning,因此您将使用本地数据替换存储桶中的文件/对象,但您始终可以回到以前的版本。
更新:gsutil现在(2014年5月)支持rsync选项。 – 2014-06-02 01:43:44