首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GCP : gsutil -m cp -rn /Downloads gs://my-/Downloads-如何跳过已复制的文件

GCP : gsutil -m cp -rn /Downloads gs://my-/Downloads-如何跳过已复制的文件
EN

Stack Overflow用户
提问于 2018-04-14 12:46:57
回答 1查看 844关注 0票数 0

enter image description here

当我恢复复制文件时,它在两个进程上工作: 1)跳过复制的文件;2)复制文件。正因为如此,这需要很长时间。有什么方法可以在这个过程中跳过这个已经复制的文件吗?

EN

回答 1

Stack Overflow用户

发布于 2018-04-14 15:35:25

是的,这可以通过使用gsutil rsync命令来实现。

gsutil rsync命令通过仅复制缺少的文件来同步源目录和目标目录的内容。因此,它比标准的普通cp命令效率高得多。但是,如果您在cp命令中使用-n开关,这将强制cp命令跳过已复制的文件。因此,使用gsutil rsync是否比gsutil cp -n更快还存在争议,而且可能取决于不同的场景。

要使用gsutil rsync,您可以运行类似这样的命令( -r标志使命令成为递归的):

代码语言:javascript
运行
复制
gustil rsync -r source gs://mybucket/

有关gsutil rsync命令的更多详细信息,请查看here

我知道您对这两个命令计算需要复制哪些文件所花费的时间有些担忧。由于gsutil cp -ngsutil rsync命令都需要在源目录和目标目录之间进行比较,因此在复制过程的顶部总是会有一定数量的开销/延迟,特别是对于非常大的集合。

如果您想要完全删除这部分过程,并且只想复制低于特定时间的文件,您可以在源代码中指定这一点,并使用标准的gsutil copy命令来查看这样做是否更快。但是,这样做会消除gsutil cp -ngsutil rsync的一些优点,因为源目录和目标目录之间将不再有直接比较。

例如,您可以在最近修改的文件的源代码中生成一个变量,例如,在前一天内。然后,您可以使用标准的gsutil cp命令仅复制这些文件。

例如,要创建一个包含前一天修改的文件列表的变量:

代码语言:javascript
运行
复制
modified="$(find . -mtime -1)"

然后使用该变量作为copy命令的目标。

代码语言:javascript
运行
复制
gsutil -m cp $modified gs://publicobject/

你需要弄清楚这是否适用于你的用例,因为尽管它可能会更快,但其他两种方法的一些优点已经丧失(目录的自动同步)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49828032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档