使用Rsync包含和排除选项以包含模式的目录和文件

我有问题得到我的rsync语法的权利,我想知道如果我的scheme实际上可以用rsync处理。 首先,我已经确认rsync在我的本地主机和远程主机之间正常工作。 在目录上进行直接同步是成功的。

这是我的文件系统的样子:

uploads/ 1260000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 1270000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 1280000000/ file_11_00.jpg file_11_01.jpg file_12_00.jpg 

我想要做的只是在子目录中以“file_11_”开头的文件运行rsync,我希望能够运行一个rsync作业来同步子目录中的所有这些文件。

这是我正在尝试的命令:

rsync -nrv --include="**/file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/

这会导致0个文件在我的空运行中被标记为传输。 我试过了各种其他的–include和–exclude语句的组合,但是仍然没有得到任何结果,或者得到了一切,就好像没有包含或排除选项一样。

任何人有任何想法如何做到这一点?

Solutions Collecting From Web of "使用Rsync包含和排除选项以包含模式的目录和文件"

问题是,–exclude --exclude="*"说排除(例如) 1260000000/目录,所以rsync从不检查该目录的内容,所以从来没有注意到该目录包含的文件将被匹配的--include

我认为最接近你想要的是这样的:

rsync -nrv --include="*/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/

(将包括所有目录,以及所有匹配file_11*.jpg文件,但不包含其他文件),或者可能是这样的:

rsync -nrv --include="/[0-9][0-9][0-9]0000000/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/

(相同的概念,但它会包含的目录更挑剔)。

将-m添加到上面的建议答案中以修剪空目录。