rsync路径列表

时间:2012-09-20 11:36:58

标签: rsync

我喜欢同步来自两个位置的路径/文件子集的更改。我有所有更改的路径,比如某些版本管理工具会列出,但没有信息它们发生了什么。听起来很简单,但似乎几乎不可能......这里有一些警告:

使用多个源参数并将其与/./类似

固定
rsync -a --delete /some/path/./file1 /some/path/./subfolder/file2 host:/some/path

除了已移动或已删除的文件之外,它的工作原理在源端不再存在。这些是rsync投诉,而不是在目标方面删除。

所以我尝试使用过滤器代替多个来源,例如--include=/subfolder/file1 --exclude=*。但是,如果在省略dir的情况下停止递归,则它会在顶层停止,并且不会同步任何文件。

所以我在exclude语句之前添加了--include=*/,以便再次启用递归。然后,我列表中不存在的任何文件夹将自动同步,例如。它的元数据是同步的。同样使用-v我最终得到了所有文件夹的混乱输出。

所以我按照一些人的建议添加了-m,修剪了'空'的导演(这些导演并非真空,但是由排除部分渲染)。但是,这确实与--delete交互,因为现在列出了所有目录以供删除。与其他过滤器相比,-m似乎也将匹配的空目录放入删除列表。

现在我的想法已经不多了......

1 个答案:

答案 0 :(得分:0)

刚出现这个问题。通常--files-from=F,其中F包含要更新的路径列表,很好,除非要删除F中的某些路径,在这种情况下它会抱怨它无法统计源文件。

所以,我构建了一个include-from文件。假设你有路径a / b / c和p / q / r来镜像,写一个文件“filter”包含:

+ a
+ a/b
+ a/b/c
+ a/b/c/**
+ p
+ p/q
+ p/q/r
+ p/q/r/**
- *

然后使用命令

rsync [-v] -r --delete --include-from=filter source/ target