如何使用 rsync 传输与模式匹配的文件

how to transfer files that match a pattern with rsync

早上好, 我想将目录中的特定文件传输到远程计算机,同时保留子目录的体系结构。此外,我只想传输具有特殊扩展名(例如“.txt”)的文件。 我尝试了以下方法:

rsync -aP --include *.txt ./sourceDirectory user@hostIP:destDirectory

但它会将所有文件复制到目标 (destDirectory),而不仅仅是那些匹配 .txt 模式的文件。 谁能帮我解出这样的谜语?

P.S.: 显然,目录 sourceDirectory 包含我的 .txt 文件所在的子目录。

我以前在rsync视频到家用NAS时遇到同样的问题。如果您阅读 rsync 的手册,--include 标志的真正意思是“不排除”。它实际上必须与 --exclude 标志一起工作。

以下命令将完成您的工作:

rsync -aP --include="*/" --include="*.txt" --exclude="*" sourceDirectory destDirectory

该命令的字面意思是排除所有内容,子文件夹和 txt 文件除外。