rsync --include-from 不起作用

rsync --include-from 不起作用

手册页没有这方面的例子。我很难告诉 rsync 只包含那些文件所在的某些文件。我不明白为什么你必须排除才能包含,为什么rsync不包括包含文件中的所有内容,而其他所有内容都将被排除。

这是我的脚本:

rsync -ruv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir remoteSrv:/tmp/.

这是我的包含文件,但它不起作用:它复制了太多东西:它复制了 /usr2/subdir 中的所有内容(包括目录subdir,很奇怪),而这些我并不需要。我只想复制目录中的 per、42f 和 xml 文件data/text_forms

+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

并且以下内容不起作用,它不会复制任何内容:

- *
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

并且下面的操作也不起作用,它没有复制任何内容:

- *
+ data/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

并且下面的操作也不起作用,它没有复制任何内容:

- *
+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*

以下方法也不起作用:

+ */
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

以下操作均不起作用:

+ /data/
+ /data/text_forms/
+ /data/text_forms/*.per
+ /data/text_forms/*.42f
+ /data/text_forms/*.xml
+ /data/text_forms/*.xml.*
- *

答案1

我找到了解决方案。我花了整整两天的时间才找到它。我希望这能帮助你节省那么多时间。

subdir第一个问题是包含了中的子目录/usr2/subdir,但我不希望包含整个目录,我只希望它成为基目录,因此它需要在末尾有一个斜杠,如/usr2/subdir/,所以我的新命令如下所示:

rsync -ruvv --rsh=ssh --include-from=zz-rsync-test.prod.incl /usr2/subdir/ remoteSrv:/tmp/.

请注意,我v在命令行中添加了一个额外选项 ( -ruvv),以获取有关运行命令时排除或包含的内容的更多详细信息。修复基本目录和额外内容后,v构建正确的包含文件会更容易一些:

+ data/
+ data/text_forms/
+ data/text_forms/*.per
+ data/text_forms/*.42f
+ data/text_forms/*.xml
+ data/text_forms/*.xml.*
- *

所有+行都必须放在 之前- *,特别是对于目录,因为我必须明确包含要扫描的每个目录,即使我不想直接获取这些目录中的文件。我做了一个测试,添加了data/anyTestFile1和 ,data/text_forms/anyTestFile2因为我不确定它们是否会被拾取,但它们没有,所以它正在做我想要的事情......终于。

相关内容