我正在尝试将具有模式*/ls
的文件从文件夹 /bin 同步到文件夹 test:
mkdir test
rsync -avv --exclude='*' --include=*/ls /bin/ test/
ls test
从输出中包含过滤器无法工作:
[sender] hiding file ls because of pattern *
有谁知道怎么了?
我正在尝试将具有模式*/ls
的文件从文件夹 /bin 同步到文件夹 test:
mkdir test
rsync -avv --exclude='*' --include=*/ls /bin/ test/
ls test
从输出中包含过滤器无法工作:
[sender] hiding file ls because of pattern *
有谁知道怎么了?
从左到右评估排除和包含过滤器。在您的命令行中,这意味着所有内容都被排除在外。包含过滤器没有任何效果,因为排除模式已经匹配了所有可能的名称。
相反,要复制
ls
从/bin
或其任何子目录调用的每个文件,请使用将包含模式放在首位,最后排除所有未明确包含的内容。您将需要
*/
与包含模式匹配,因为您可能希望进入子目录(至少在一般情况下)。我还添加了-m
,如果其中没有文件,它会避免在目标上创建目录。如果您不需要递归并希望使用
/bin/ls
复制,请rsync
使用此处显示的两个命令中目标路径名末尾的斜杠是不必要的,但如果
test
不是目录,则会强制命令失败。在某种程度上,它起到了断言的作用。