我有一个包含许多文件的大型目录树,例如;
/abc2/def/thumbnail.jpg
/abc1/def/thumbnail.jpg
/abc1/def/geh/someothertextfile.txt
/abc1/defe/geh/thumbnail.jpg
我想将所有与 thumbnail.jpg 匹配的目录和文件 rsync 到另一棵树。
我试过;
rsync -r --exclude-from=/tmp/exclude src dst
排除包含的文件;
# cat /tmp/exclude
+ /thumbnail.jpg
+ thumbnail.jpg
+ /**/thumbnail.jpg
+ **/thumbnail.jpg
- *
但这不符合任何一个。
答案1
使用查找
find / -name "thumbnail.jpg" -exec rsync -avz --compress --progress {} dst \;
答案2
好的,所以实际上 RTFM 最终总是有效的......
将命令改为;
rsync -r --prune-empty-dirs --exclude-from=/tmp/exclude src dst
并将排除文件更改为;
# cat /tmp/exclude
+ */
+ thumbnail.jpg
- *
奇迹般有效。
答案3
您的问题是 final- *
排除了所有目录(这告诉 rsync 不仅不要复制它们,而且不要遍历它们)。使用
+缩略图.jpg + */ -*
并传递--prune-empty-dirs
命令rsync
行。