Ansible 生成:
/usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh -S none -o StrictHostKeyChecking=no -C -o ControlMaster=auto -o ControlPersist=60s -o PreferredAuthentications=publickey -o ExitOnForwardFailure=yes -o User=ansible' --rsync-path="sudo rsync" --out-format='<<CHANGED>>%i %n%L' template.ephemeric.local:/home/*/bin/ /tmp/test/
我把它剥下来:
/usr/bin/rsync --rsh 'ssh -o User=ansible' template.ephemeric.local:/home/*/bin/ /tmp/test/
并得到:
rsync: change_dir "/home/*/bin" failed: No such file or directory (2)
这有效:
/usr/bin/rsync --rsh ssh template.ephemeric.local:/home/*/bin/ /tmp/test/
receiving incremental file list
./
new4
sent 33 bytes received 164 bytes 394.00 bytes/sec
total size is 0 speedup is 0.00
这到底是什么?一旦我添加任何 SSH 选项,它就会破坏通配符扩展......
非常感谢任何帮助/解决方法。
谢谢。
答案1
与 的参数数量无关--rsh
。只是您的远程用户ansible
无法看到扩展/home/*/bin/
这是一个当地的例子。我至少有一个目录匹配,/home/*/bin
但没有匹配/home/*/bins
:
rsync --rsh 'ssh -o User=roaima' remotehost:/home/*/bin/ /tmp/bins/
skipping directory .
rsync --rsh 'ssh -o User=roaima' remotehost:/home/*/bins/ /tmp/bins/
rsync: change_dir "/home/*/bins" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [Receiver=3.1.2]
第一次尝试的响应skipping directory .
告诉我没有什么可传输的 - 主要是因为我省略了指示rsync
应该使用递归。--archive
or标志--recursive
在这里很有用。