带有正则表达式的 Rsync 文件
Rsync file with regex
somehost中的文件夹如下
/strbase/logs/service
在众多文件中有以下文件:
service.fix.20151109.log.gz
我想使用 rsync 将此文件传输到我的本地主目录,但我必须使用正则表达式
^service\.fix\.20151109\.log\.gz$
这根据 regex101.com 工作。
我尝试了以下命令,但没有传输任何内容。
/usr/local/bin/rsync -a --bwlimit=1333 --include="^service\.fix\.20151109\.log\.gz$" --exclude="*" --rsync-path=/usr/bin/rsync somehostname:/strbase/logs/service ~
我错过了什么?
两件事。
首先,你的过滤器规格有误,应该是:
--include="service.fix.20151109.log.gz"
rsync 不使用正则表达式(它使用手册页中描述的模式),默认情况下从字符串的开头到结尾匹配。
其次,--exclude="*"
完全隐藏文件夹 /service
,它是要包含的文件的父文件夹。它应该是 exclude=/strbase/logs/service/*
而不是。
最终命令应如下所示:
/usr/local/bin/rsync -a --bwlimit=1333 \
--include="/strbase/logs/service/service.fix.20151109.log.gz" \
--exclude="*" \
--rsync-path=/usr/bin/rsync \
somehostname:/strbase/logs/service ~
但是,这对于演示问题是有意义的。在现实生活中,我会简单地 rsync 那个单个文件,就像这样:
rsync -a server:/path/to/file ~
虽然它没有回答如何将 rsync 与正则表达式一起使用的原始问题,但要传输文件 service.fix.20151109.log.gz
我使用了:
/usr/local/bin/rsync -a --bwlimit=1333 --rsync-path=/usr/bin/rsync somehostname:/strbase/logs/service/service.fix.20151109.log.gz ~
我把include和exclude去掉了。
somehost中的文件夹如下
/strbase/logs/service
在众多文件中有以下文件:
service.fix.20151109.log.gz
我想使用 rsync 将此文件传输到我的本地主目录,但我必须使用正则表达式
^service\.fix\.20151109\.log\.gz$
这根据 regex101.com 工作。
我尝试了以下命令,但没有传输任何内容。
/usr/local/bin/rsync -a --bwlimit=1333 --include="^service\.fix\.20151109\.log\.gz$" --exclude="*" --rsync-path=/usr/bin/rsync somehostname:/strbase/logs/service ~
我错过了什么?
两件事。
首先,你的过滤器规格有误,应该是:
--include="service.fix.20151109.log.gz"
rsync 不使用正则表达式(它使用手册页中描述的模式),默认情况下从字符串的开头到结尾匹配。
其次,--exclude="*"
完全隐藏文件夹 /service
,它是要包含的文件的父文件夹。它应该是 exclude=/strbase/logs/service/*
而不是。
最终命令应如下所示:
/usr/local/bin/rsync -a --bwlimit=1333 \
--include="/strbase/logs/service/service.fix.20151109.log.gz" \
--exclude="*" \
--rsync-path=/usr/bin/rsync \
somehostname:/strbase/logs/service ~
但是,这对于演示问题是有意义的。在现实生活中,我会简单地 rsync 那个单个文件,就像这样:
rsync -a server:/path/to/file ~
虽然它没有回答如何将 rsync 与正则表达式一起使用的原始问题,但要传输文件 service.fix.20151109.log.gz
我使用了:
/usr/local/bin/rsync -a --bwlimit=1333 --rsync-path=/usr/bin/rsync somehostname:/strbase/logs/service/service.fix.20151109.log.gz ~
我把include和exclude去掉了。