如何从 rsync 中排除 .* 目录但包含 .vnc 目录?

如何从 rsync 中排除 .* 目录但包含 .vnc 目录?

看来--exclude '.*'和的组合--include '.vnc'不起作用:

rsync -vvrR --recursive --exclude Downloads --exclude '.*'  --include '.vnc/' "pi@$host:{/home/pi,/etc/systemd/system}" $dir

.vnc 目录未同步

[sender] hiding file /home/pi/.bash_history because of pattern .*
[sender] hiding directory /home/pi/.ssh because of pattern .*
....
[sender] hiding directory /home/pi/.vnc because of pattern .*

答案1

--include和 的顺序--exclude对于 来说很重要rsync

参见man rsync=>FILTER RULES部分:

在建立要传输的文件/目录列表时,rsync 会依次根据包含/排除模式列表检查要传输的每个名称,并且第一个匹配的模式被作用于:如果它是排除模式,那么将跳过该文件;如果它是包含模式,那么将不会跳过该文件名;如果未找到匹配的模式,那么将不会跳过该文件名。

(我强调)

对于您来说,这意味着:

rsync -vvrR --recursive --exclude Downloads --include '.vnc/' --exclude '.*' "pi@$host:{/home/pi,/etc/systemd/system}" "$dir"

相关内容