rsync使用include选项仅复制某些类型的文件

我使用以下bash脚本仅复制某些扩展名的文件(在本例中为* .sh),但是仍会复制所有文件。怎么了?

从= $ 1

至= $ 2

rsync -zarv --include =“ *。sh” $ from $ to

回答:

我认为--include过去是用来包含文件的子集,否则会被排除--exclude,而不仅仅是包括那些文件。换句话说:您必须考虑 包含 含义

请尝试:

rsync -zarv  --include "*/" --exclude="*" --include="*.sh" "$from" "$to"

对于rsync 3.0.6或更高版本,需要按以下方式修改顺序(请参见注释):

rsync -zarv --include="*/" --include="*.sh" --exclude="*" "$from" "$to"

添加该-m标志将避免在目标位置创建空目录结构。在3.1.2版中测试。

因此,如果只希望 .sh文件,则必须排除所有文件--exclude="*",包括所有目录,--include="*/"并包括所有

.sh文件--include="*.sh"

您可以在手册页的

部分中找到一些很好的示例。

以上是 rsync使用include选项仅复制某些类型的文件 的全部内容, 来源链接: utcz.com/qa/431983.html

回到顶部