我每天需要将存储区中的文件同步到本地计算机,存储区中包含2万个文件。我只需要仅下载以* some_naming_convention.csv结尾的更改文件。 最好的方法是什么?在下载源中使用通配符给我一个错误。
答案 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>
其他选择,也许有些牵强,那就是将这些文件复制/移动到文件夹,然后使用该文件夹进行同步。
我希望这对您有用;)