我正在运行类似以下内容的内容:rsync -av -e "ssh" --include="dir1/***" --include="file1.txt" --exclude="*" superuser@remote-server:/var/www/ /var/
,我收到的只是以下消息:
receiving incremental file list
sent 276 bytes received 10 bytes 21.19 bytes/sec
total size is 0 speedup is 0.00
并且没有文件正在传输。
答案1
您包括 dir1 的子目录,但 dir1 本身被排除。所以没有看到它的孩子。
从rsync
手册页:
当使用尾随“*”规则时,路径排除的概念尤其重要。例如,这是行不通的:
+ /some/path/this-file-will-not-be-found + /file-is-included - *
这会失败,因为父目录“some”被“*”规则排除,因此 rsync 永远不会访问“some”或“some/path”目录中的任何文件。一种解决方案是要求使用单个规则包含层次结构中的所有目录:“+ */”(将其放在“- *”规则之前的某个位置),并且可能使用该
--prune-empty-dirs
选项。另一个解决方案是为所有需要访问的父目录添加特定的包含规则。例如,这组规则就可以正常工作:+ /some/ + /some/path/ + /some/path/this-file-is-found + /file-also-included - *