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