我喜欢同步来自两个位置的路径/文件子集的更改。我有所有更改的路径,例如某些版本管理工具会列出,但没有信息发生在他们身上。听起来很简单,但似乎几乎是不可能的......这里有一些警告:
使用几个源参数并用/./
like固定它们
rsync -a --delete /some/path/./file1 /some/path/./subfolder/file2 host:/some/path
除了源端不再存在的已移动或删除的文件外,此方法有效。这些是 rsync 的投诉,并没有在目标端删除。
所以我尝试使用过滤器而不是多个来源,比如--include=/subfolder/file1 --exclude=*
. 但是,由于如果省略了 dir,则递归停止,它会在顶层停止,并且不会同步任何文件。
所以我--include=*/
在排除语句之前添加了,再次启用递归。然后任何不在我列表中的文件夹都会自行同步,例如。它的元数据是同步的。此外,-v
我最终得到了所有文件夹的混乱输出。
因此,我-m
按照某些人的建议添加了删除“空”目录(实际上并不是空的,而是由排除项呈现的)。但是,这确实与 交互--delete
,因为现在列出了所有目录以供删除。似乎与其他过滤器相比,-m
也将匹配的空目录放入删除列表。
现在我的想法已经用完了......