设置RSYNC_RSH不起作用,但--rsh选项是。为什么?
rsync正确地使用了--rsh选项:
$ rsync --rsh "echo" invalid invalid::invalid
rsync: server sent "invalid rsync --server --daemon ." rather than greeting
rsync error: error starting client-server protocol (code 5) at main.c(1657) [sender=3.1.3]但我预计RSYNC_RSH也会起同样的作用,但事实并非如此:
$ RSYNC_RSH=echo rsync invalid invalid::invalid
rsync: getaddrinfo: invalid 873: Name or service not known
rsync error: error in socket IO (code 10) at clientserver.c(127) [sender=3.1.3]我已经尝试过3.1.2-1+deb9u1和3.1.3-5.fc29.x86_64的rsync版本。
发布于 2019-03-05 12:36:18
这是按设计工作的。
您使用的是rsync“守护进程”语法:hostname::module。当您将它与--rsh一起使用时,它使用远程shell (例如ssh)连接到服务器,然后使用rsyncd.conf。当不使用--rsh时,它会尝试在TCP端口873上建立到rsync服务器的未加密网络连接。
设置RSYNC_RSH不会导致rsync“守护进程”语法使用远程shell。
RSYNC_RSH是一个“环境变量”。它是为您的整个环境而设计的。当您不使用rsync“守护进程”语法时,它会更改远程shell rsync使用的内容。这在古代很有用,因为有几个不同的远程shell,所以rsync可能不知道您最常使用的是哪一个。
https://unix.stackexchange.com/questions/504485
复制相似问题