rsync 如何区分目标是目录名中带有“:”和“@”的本地目录,还是远程 SSH?

rsync 如何区分目标是目录名中带有“:”和“@”的本地目录,还是远程 SSH?

从技术上讲,我们可以创建一个名为的本地目录[email protected]:(这是一个有效的 UNIX 路径,不是吗?),那么rsync内部如何知道是否:

rsync test/ [email protected]:/test/

方法:

出于好奇,rsync使用的决策规则是什么?

答案1

这相当复杂。

中建议的解决方案rsync:文件名中的冒号似乎一般情况下都有效,但也有很多可能的极端情况。

示例:rsync 如何知道目标是远程还是本地?它可以是目录名称中包含和 的 本地路径。 或者它可能是一个带有用户名(奇怪的 Unix 用户名,但可能!尝试一下!)、主机和路径的远程主机。rsync src ./[email protected]:/test/
./[email protected]:/test/:@
./hellouseraddb.com/test/

这里是 OpenSSH 实现中解析 URI 的代码scp,值得一读。

IETF 草案中对规则进行了解释https://datatracker.ietf.org/doc/html/draft-ietf-secsh-scp-sftp-ssh-uri-04

相关内容