Python 谷歌存储Rsync排除

Python 谷歌存储Rsync排除,python,regex,google-cloud-storage,google-cloud-platform,Python,Regex,Google Cloud Storage,Google Cloud Platform,我正在尝试使用gcloud rsync实用程序仅同步与特定日期字符串匹配的文件,例如:2015年9月14日 文件结构如下:bucket/123/code_14-Sep-2015.txt 因此,当我rsync时,我只想同步与特定日期匹配的文件。这是因为我们偶尔会从本地系统中删除旧文件,而不想继续重新同步这些旧文件 以下是我正在尝试的: gsutil-m rsync-n-x'[0-9]+/[A-Za-z0-9]+(2015年8月15日)。*)-r gs://bucket folder 当我在一个测试

我正在尝试使用gcloud rsync实用程序仅同步与特定日期字符串匹配的文件,例如:2015年9月14日

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

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

以下是我正在尝试的:

gsutil-m rsync-n-x'[0-9]+/[A-Za-z0-9]+(2015年8月15日)。*)-r gs://bucket folder

当我在一个测试环境中测试regex时,它似乎工作得很好,但它仍然在拉其他与该日期不匹配的文件

你知道为什么这样做没有达到预期效果吗?是否有比rsync更好的方法来实现这一点?

使用
(!2015年8月15日)
regex将匹配每个日期,不包括2015年8月15日。如果要匹配具有特定日期的文件,最好使用正向前瞻,如:

[0-9]+/[A-Za-z0-9]+_((?=14-Sep-2015)).*

但是如果是关于排除,也许您应该在
(?!2015年8月15日)
之后添加所需的格式,如果没有它,它将匹配与
[0-9]+/[A-Za-z0-9]+
匹配的每个文件,该文件后面没有排除的部分()。要避免这种情况,请尝试:

[0-9]+/[A-Za-z0-9]+_((?!15-Sep-2015))\d{2}-[A-Za-z]{3}-\d{4}
带有
(?!2015年8月15日)
正则表达式将匹配每个日期,不包括2015年8月15日。如果要匹配具有特定日期的文件,最好使用正向前瞻,如:

[0-9]+/[A-Za-z0-9]+_((?=14-Sep-2015)).*

但是如果是关于排除,也许您应该在
(?!2015年8月15日)
之后添加所需的格式,如果没有它,它将匹配与
[0-9]+/[A-Za-z0-9]+
匹配的每个文件,该文件后面没有排除的部分()。要避免这种情况,请尝试:

[0-9]+/[A-Za-z0-9]+_((?!15-Sep-2015))\d{2}-[A-Za-z]{3}-\d{4}
带有
(?!2015年8月15日)
正则表达式将匹配每个日期,不包括2015年8月15日。如果要匹配具有特定日期的文件,最好使用正向前瞻,如:

[0-9]+/[A-Za-z0-9]+_((?=14-Sep-2015)).*

但是如果是关于排除,也许您应该在
(?!2015年8月15日)
之后添加所需的格式,如果没有它,它将匹配与
[0-9]+/[A-Za-z0-9]+
匹配的每个文件,该文件后面没有排除的部分()。要避免这种情况,请尝试:

[0-9]+/[A-Za-z0-9]+_((?!15-Sep-2015))\d{2}-[A-Za-z]{3}-\d{4}
带有
(?!2015年8月15日)
正则表达式将匹配每个日期,不包括2015年8月15日。如果要匹配具有特定日期的文件,最好使用正向前瞻,如:

[0-9]+/[A-Za-z0-9]+_((?=14-Sep-2015)).*

但是如果是关于排除,也许您应该在
(?!2015年8月15日)
之后添加所需的格式,如果没有它,它将匹配与
[0-9]+/[A-Za-z0-9]+
匹配的每个文件,该文件后面没有排除的部分()。要避免这种情况,请尝试:

[0-9]+/[A-Za-z0-9]+_((?!15-Sep-2015))\d{2}-[A-Za-z]{3}-\d{4}

我的regexp是正确的,但由于某种原因,我的python/gsutil版本无法使用。不过,我找到了一种更容易达到预期效果的方法

简单地使用复制:

gsutil cp -r gs://bucket_name/*/*15-Sep-2015.txt destination_folder
它只是使用通配符,不需要regexp

注意:cp似乎不像rsync那样复制目录结构,例如。。。 gs://bucket/123/file.txt被复制到/destination\u folder/file.txt,而不是/destination\u folder/123/file.txt

更新: 因此,复制功能可以按照文档中的方式工作,不幸的是,对我来说似乎有点违反直觉,但我发现使用rsync的解决方案是可行的

我有一个额外的目录层,我不匹配,所以它打破了我的整个regexp。因此值得注意的是,您必须匹配bucket名称后的整个路径,regexp才能工作

工作答复:
我的regexp是正确的,但由于某种原因,我的python/gsutil版本无法使用。不过,我找到了一种更容易达到预期效果的方法

简单地使用复制:

gsutil cp -r gs://bucket_name/*/*15-Sep-2015.txt destination_folder
它只是使用通配符,不需要regexp

注意:cp似乎不像rsync那样复制目录结构,例如。。。 gs://bucket/123/file.txt被复制到/destination\u folder/file.txt,而不是/destination\u folder/123/file.txt

更新: 因此,复制功能可以按照文档中的方式工作,不幸的是,对我来说似乎有点违反直觉,但我发现使用rsync的解决方案是可行的

我有一个额外的目录层,我不匹配,所以它打破了我的整个regexp。因此值得注意的是,您必须匹配bucket名称后的整个路径,regexp才能工作

工作答复:
我的regexp是正确的,但由于某种原因,我的python/gsutil版本无法使用。不过,我找到了一种更容易达到预期效果的方法

简单地使用复制:

gsutil cp -r gs://bucket_name/*/*15-Sep-2015.txt destination_folder
它只是使用通配符,不需要regexp

注意:cp似乎不像rsync那样复制目录结构,例如。。。 gs://bucket/123/file.txt被复制到/destination\u folder/file.txt,而不是/destination\u folder/123/file.txt

更新: 因此,复制功能可以按照文档中的方式工作,不幸的是,对我来说似乎有点违反直觉,但我发现使用rsync的解决方案是可行的

我有一个额外的目录层,我不匹配,所以它打破了我的整个regexp。因此值得注意的是,您必须匹配bucket名称后的整个路径,regexp才能工作

工作答复:
我的regexp是正确的,但由于某种原因,我的python/gsutil版本无法使用。不过,我找到了一种更容易达到预期效果的方法

简单地使用复制:

gsutil cp -r gs://bucket_name/*/*15-Sep-2015.txt destination_folder
它只是使用通配符,不需要regexp

注意:cp似乎不像rsync那样复制目录结构,例如。。。 gs://bucket/123/file.txt被复制到/destination\u folder/file.txt,而不是/destination\u folder/123/file.txt

更新: 因此,复制功能可以按照文档中的方式工作,不幸的是,对我来说似乎有点违反直觉,但我发现使用rsync的解决方案是可行的

我有一个额外的目录层,我不匹配,所以它打破了我的整个regexp。因此值得注意的是,您必须匹配bucket名称后的整个路径,regexp才能工作

工作答复:
接近?python正则表达式不受约束吗