Answers:
rsync的手册页(添加了重点)说明了您的命令不起作用的原因:
- 删除
这告诉rsync从接收方删除无关的文件(不在发送方的文件),但仅针对正在同步的目录。 您必须已经要求rsync发送整个目录(例如“ dir”或“ dir /”),而不使用通配符作为目录内容(例如“ dir / *”),因为通配符已被外壳扩展,因此rsync得到一个请求传输单个文件,而不是文件的父目录。 除非您使用--delete-excluded选项或将规则标记为仅与发送方匹配,否则也将从删除中排除从传输中排除的文件(请参阅“过滤规则”部分中的“包括/排除”修饰符)。
因此,当您跑步时
$ rsync -d --delete SRC:{*.jpg,*.txt} DEST
DEST中不需要的文件不会被删除,因为您实际上并没有要求同步一个目录,而只是要求一些特定的文件。要获得所需的结果,请尝试如下操作:
rsync -d --delete-excluded --include '*.jpg' --include '*.txt' --exclude '*' SRC/ DEST/
请注意,include和exclude指令的顺序很重要。本质上,每个文件都按照包含或排除模式出现的顺序进行检查。因此,具有.jpg或.txt扩展名的文件将被同步,因为它们在与排除的“ *”模式匹配之前便与“包含”模式匹配。该--exclude '*'
模式排除了其他所有内容。该--delete-excluded
选项可确保删除DEST端的排除文件。