SSH で Rsync ワイルドカード拡張が機能しない

SSH で Rsync ワイルドカード拡張が機能しない

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/

以下はローカルの例です。少なくとも 1 つのディレクトリが一致しています/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または--recursiveフラグが役立ちます。

関連情報