首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google存储Rsync排除

Google存储Rsync排除
EN

Stack Overflow用户
提问于 2015-09-14 18:22:20
回答 2查看 651关注 0票数 0

我正在尝试使用gcloud rsync实用程序来只同步与特定日期字符串(例如:14-9.2015)匹配的文件。

文件结构如下:bucket/123/CODE_14-Sep-2015.txt

因此,当我rsync时,我只想同步与特定日期匹配的文件。这是因为我们偶尔会从本地系统中删除旧文件,并且不希望继续对这些旧文件进行同步。

以下是我所尝试的:

gsutil -m rsync -n -x '[0-9]+/[A-Za-z0-9]+_((?!15-Aug-2015).*)' -r gs://bucket folder;

当我在测试环境中测试regex时,它似乎工作得很好,但它仍然在提取其他不符合日期的文件。

你知道为什么这不像预期的那样有效吗?有比rsync更好的方法来实现这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-15 16:06:28

我的regexp是正确的,但由于某种原因,我的python/gsutil版本没有工作。不过,我找到了一种更简单的方法来达到预期的效果。

只需使用副本:

代码语言:javascript
复制
gsutil cp -r gs://bucket_name/*/*15-Sep-2015.txt destination_folder

它只是使用通配符,不需要regexp。

注意: cp似乎没有复制像rsync这样的目录结构,例如.

gs://bucket/123/file.txt被复制到/目标区_文件夹/file.txt,而不是/目的地_文件夹/123/file.txt

更新:

因此,复制功能与文档一样工作,不幸的是,对我来说似乎有点违背直觉,但我找到了使用rsync的工作解决方案。

我有一个不匹配的额外目录层,所以它破坏了我的整个regexp。因此,值得注意的是,为了使regexp正常工作,必须在桶名之后匹配整个路径。

工作答案:

代码语言:javascript
复制
gsutil -m rsync -n -x '[0-9]+/[A-Za-z0-9]+_((?!15-Aug-2015).*)' -r gs://bucket/subfolder folder;
票数 1
EN

Stack Overflow用户

发布于 2015-09-14 19:52:24

(?!15-Aug-2015)的regex将匹配每一个日期,不包括15-2015年8月.如果您想要匹配特定日期的文件,最好使用积极的前瞻性,例如:

代码语言:javascript
复制
[0-9]+/[A-Za-z0-9]+_((?=14-Sep-2015)).*

演示

但是,如果是关于排除,也许您应该在(?!15-Aug-2015)之后添加所需的格式,如果没有它,它将匹配与[0-9]+/[A-Za-z0-9]+_匹配的每个文件,而后者后面没有排除的部分(无效匹配示例的演示)。为了避免这种情况,试着:

代码语言:javascript
复制
[0-9]+/[A-Za-z0-9]+_((?!15-Sep-2015))\d{2}-[A-Za-z]{3}-\d{4}

演示

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

https://stackoverflow.com/questions/32571431

复制
相关文章

相似问题

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