Google云端存储 - GSUtil - 复制文件,跳过现有文件,不要覆盖

ECI*_*CII 14 linux copy sync google-cloud-storage

我想将本地目录同步到Google云端存储中的存储分区.我想复制远程不存在的本地文件,跳过已经存在的远程和本地文件.使用GSUtil可以做到这一点吗?我似乎无法为GSUtil找到"同步"选项或"不要覆盖".可以编写这个脚本吗?

我在Linux上(Ubuntu 12.04)?

rei*_*ein 20

gsutil现在支持cp命令上的noclobber标志(-n).将gsutil更新到最新版本(使用gsutil update),然后在执行复制时使用-n标志.

此标志将跳过目标中已存在的文件.

  • 更新:gsutil now(2014年5月)支持rsync选项. (7认同)

tas*_*hka 10

使用rsync,您可以复制丢失/修改的文件/对象:

gsutil -m rsync -r <local_folderpath> gs://<bucket_id>/<cloud_folderpath>
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用该-d选项,您还将删除存储桶中不再存在于本地的文件/对象。

另一种选择是使用Object Versioning,因此您将使用本地数据替换存储桶中的文件/对象,但您始终可以返回到以前的版本。


Geo*_*oub 8

您需要在Google Cloud Platform上正式提到的命令中添加(-n):

-n:No-clobber.指定时,不会覆盖目标中的现有文件或对象.此选项跳过的任何项目都将被报告为被跳过.此选项将执行额外的GET请求,以在尝试上载数据之前检查项是否存在.这将节省重传数据,但额外的HTTP请求可能会使较小的对象传输更慢且更昂贵.

示例(使用多线程):

gsutil -m cp -n -a public-read -R large_folder gs://bucket_name
Run Code Online (Sandbox Code Playgroud)