看来--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"