我想将本地目录同步到Google云端存储中的存储分区。我想复制远程不存在的本地文件,跳过已经存在的远程和本地文件。使用GSUtil可以做到这一点吗?我似乎无法为GSUtil找到“同步”选项或“不要覆盖”。可以编写这个脚本吗?
我在Linux(Ubuntu 12.04)上?
答案 0 :(得分:16)
gsutil现在支持cp命令上的noclobber标志(-n)。将gsutil更新到最新版本(使用gsutil update),然后在执行复制时使用-n标志。
此标志将跳过目的地已存在的文件。
答案 1 :(得分:5)
您需要在Google Cloud Platform上正式提到的命令中添加(-n):
-n :No-clobber。指定时,不会覆盖目标中的现有文件或对象。此选项跳过的任何项目都将被报告为被跳过。此选项将执行额外的GET请求,以在尝试上载数据之前检查项是否存在。这将节省重传数据,但额外的HTTP请求可能会使较小的对象传输速度变慢且成本更高。
示例(使用多线程):
gsutil -m cp -n -a public-read -R large_folder gs://bucket_name
答案 2 :(得分:1)
gsutil不支持同步操作,但您可以使用gsutil ls编写脚本来查找远程存在的文件。