gsutil rsync仅匹配模式的文件

时间:2018-09-18 06:48:43

标签: rsync gsutil

我每天需要将存储区中的文件同步到本地计算机,存储区中包含2万个文件。我只需要仅下载以* some_naming_convention.csv结尾的更改文件。 最好的方法是什么?在下载源中使用通配符给我一个错误。

2 个答案:

答案 0 :(得分:0)

Rsync可让您包含和排除文件匹配模式。

rsync为每个文件应用匹配的第一个补丁,如果只想同步选定的文件,则需要将其包含在内,然后排除所有其他文件。

将以下内容添加到您的rsync选项中:

--include='*some_naming_convention.csv' --exclude='*'

如果所有文件都在一个目录中,那就足够了。如果您还想搜索子文件夹,则需要更多一点:

--include='*/' --include='*some_naming_convention.csv' --exclude='*'

这将复制所有目录树,但仅复制所需的文件。如果那会留下您不想要的空目录,请添加--prune-empty-dirs

答案 1 :(得分:0)

我认为您无法使用Rsynch做到这一点。正如Christopher告诉您的那样,您可以使用“ -x”标志跳过文件,而不仅仅是同步那些[1]。我代表您[2]创建了一个公共功能请求,供您在此关注更新。

正如我在FR中所说,恕我直言,我认为这不符合rsynch的目的,因为它是为了使文件夹/存储桶保持同步,而只是同步其中的一些不符合该目的。

使用gsutil cp复制文件,而使用-n跳过已经存在的文件,可能有一种“解决方法”。针对您的情况的整个命令应为:

gsutil -m cp -n <bucket>/*some_naming_convention.csv <directory>

其他选择,也许有些牵强,那就是将这些文件复制/移动到文件夹,然后使用该文件夹进行同步。

我希望这对您有用;)