Rsync 通配符擴展被 SSH 破壞

Rsync 通配符擴展被 SSH 破壞

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應該使用遞歸。--archiveor標誌--recursive在這裡很有用。

相關內容