rsync – 守护进程如何知道它正在运行的方式?

我想通过SSL / TLSencryption连接运行rsync。 它不直接这样做,所以我正在探索选项。 stunnel程序看起来很有希望,虽然比devise更复杂,因为需要使用-r选项跳转连接。 但是,我发现有一个-l选项来运行一个程序。 我假设这有两个过程,一个是执行SSL / TLS工作,另一个是客户端与之通信的工作者。 然后这些通过pipe道对或两者之间的沟通。

当我调查了大量的网页以了解如何正确地设置这个网页时,我感到奇怪的是,无论作为独立的守护进程运行,还是在像inetd这样的超级守护进程下,rsync的参数都是一样的。 rsync –daemon如何知道它是否应该打开一个套接字,并在它上面监听多个连接,或者通过与stdin / stdout描述符进行通信来服务一个连接,在启动时会有这种情况(这真的会经历额外的过程处理encryption,描述和SSL / TLS协议层)?

然后,我需要find一种方法来包装客户端,让它在一个简单的命令中执行SSL / TLS(与stunnel似乎青睐的连接跳转相反)。

rsync(1)手册页中的--daemon部分:

如果标准input是一个套接字,那么rsync将假定它正在通过inetd运行,否则它将从当前terminal分离,并成为一个后台守护进程。

您可以通过运行以下命令来查看适用于守护进程模式的命令行参数:

 rsync --daemon --help 

然后,我需要find一种方法来包装客户端,让它在一个简单的命令中执行SSL / TLS(与stunnel似乎青睐的连接跳转相反)。

rsync有一个--rsh选项来产生stunnel并在客户端使用stdin / stdout,stunnel有一个exec选项来在服务器端产生rsync – 结合这两个将得到你想要的。 有关更多信息,请参阅dozzie的rsync over SSL ,以及随时可用的脚本来运行此configuration(需要git下载)。