我在正确获取我的 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
语句的各种其他组合,但要么继续没有结果,要么得到所有内容,就好像没有设置包含或排除选项一样.
有人知道怎么做吗?
最佳答案
问题是 --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/
(相同的概念,但对包含的目录更加挑剔)。
关于linux - 使用 Rsync 包含和排除选项按模式包含目录和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952000/