【问题标题】:rsync in non-daemon非守护进程中的 rsync
【发布时间】:2012-08-22 13:29:21
【问题描述】:

我想知道 rsync 在非守护模式下是如何工作的,它到底是什么?

从 rsync 手册页,我了解了守护程序模式的工作原理。 我对守护程序模式有所了解。守护进程是一个在后台持续监听连接的进程。

现在,场景是,我不想使用守护模式,因为它需要一些专用端口始终处于监听状态。

我想知道,非守护模式下的客户端(比如本地机器)如何在技术上调用服务器(比如远程机器)上的 rsync 监听器,反之亦然? 这种方法的原因是,*我不希望客户端事先知道服务器的端口号 *。 任何详细的解释将不胜感激。

【问题讨论】:

  • 你查看rsync的源代码了吗?也许它默认调用daemon(3),或者避免调用!您也可以使用strace 来查找。
  • 没有守护进程的 rsync 只使用 SSH/RSH。
  • 嘿,Basile 谢谢你。我对 strace 命令的使用仅限于跟踪系统调用和信号。但是,我的查询问,如何在非守护模式下确定远程系统的端口号?是的,我查看了 rsync 的代码,这也太复杂了,无法找到调用 daemon(3) 的位置。那么,请解释一下如何使用 strace 来获得原始查询的解决方案?

标签: c linux rsync


【解决方案1】:

来自 rsync 手册页:

rsync 有两种不同的方式联系远程 系统: 使用远程 shell 程序作为传输(例如 ssh 或 rsh)或 直接通过 TCP 联系 rsync 守护进程。

因此,在非守护程序模式下,您可以使用 ssh 连接和更新您的客户端。在这种情况下,通过 ssh 的初始连接将设置客户端,以便 rsync 可以在不知道端口号的情况下进行连接。

【讨论】:

  • hey perreal ,我想详细了解 ssh 将如何设置客户端的详细信息。如,它究竟经历了什么过程来做同样的事情?
【解决方案2】:

这回答了我的问题:

我发现它是如何在非守护进程模式下调用远程 rsync 的。 在本地端:如果命令是:- rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 此命令将在本地启动另一个进程:- ssh -l remoteuser 192.168.xx.xxx -vlogDtprze.iLsf 。 /远程/目录

这个 ssh 命令调用 rsync on remote on remote box 如下: rsync --server -vlogDtprze.iLsf 。 /远程/目录/

并以任意端口号开头。但是数据通信是通过 ssh 进行的(需要打开 22 端口)。

【讨论】:

    【解决方案3】:

    它通过 ssh 调用 rsync 在这种情况下你不需要运行守护进程

    【讨论】:

    • 很好。但是,我问ssh如何知道远程端的端口号?请提供技术细节。
    • rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/
    • 我发现了它是如何在非守护模式下调用远程 rsync 的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2018-05-14
    相关资源
    最近更新 更多