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
здесь были бы полезны.