我在正确设置rsync语法时遇到问题,并且想知道我的场景是否可以实际使用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语句的各种其他组合,但是要么没有获得任何结果,要么获得了所有内容,就好像没有设置任何include或exclude选项一样。
有人知道如何执行此操作吗?
问题是--exclude="*"说要排除(例如)1260000000/目录,所以rsync永远不要检查该目录的内容,所以永远不会注意到目录包含您的--include。
--exclude="*"
1260000000/
rsync
--include
我认为最接近您想要的是:
rsync -nrv --include="*/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/
(将包括所有目录以及所有与匹配的文件file_11*.jpg,但不包括其他文件),或者 也许是 这样的:
file_11*.jpg
rsync -nrv --include="/[0-9][0-9][0-9]0000000/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/
(相同的概念,但将包含的目录更加挑剔)。