如何查询远程 rsync 服务器(守护进程)的版本号?

如何查询远程 rsync 服务器(守护进程)的版本号?

如何查询远程 rsync 服务器(或守护进程)的版本号?

我可以使用以下命令找到本地 rsync 客户端的版本号--version

% rsync --version
rsync  version 3.2.7  protocol version 31
Copyright (C) 1996-2022 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
...[details elided]...
rsync comes with ABSOLUTELY NO WARRANTY. ...Licence for details.

但发送--version到远程服务器似乎没有任何效果,即使我要求远程服务器详细显示:

% rsync -nvv -M--version -M-vvv myserver.local::
opening tcp connection to myserver.local port 873
sending daemon args: --server --sender -vvnde.LsfxCIvu --version -vvv . /  (7 args)
my_share1       
my_share2           
...[details elided]...
my_sharex       

上下文:myserver.local是具有有限 Linux 操作系统的网络附加存储 (NAS) 服务器。其目的是备份另一台主服务器。它附带 rsync 3.0.7,但我安装了 rsync 3.2.7(如果我没记错的话,是通过 Entware 包管理器安装的)。我不得不做一些启动脚本技巧,以使较新的 rsync 优先于较旧的 rsync 运行。我想我做对了,但我想确认一下。我想确保当我的主服务器联系时myserver.local,应答的 rsync 版本实际上是较新的版本。

相关但独立的问题:从myserver.localshell 中,以 root 身份登录,如何查询rsync我可以通过 ps 看到的守护进程的版本号?

# ps | grep rsync
12682 admin        88 S   rsync --daemon --config=/etc/rsyncd.conf 

(我或许应该将其移到其本身的问题中。)

答案1

虽然我不知道有内置方法可以确定远程 rsyncd 守护进程的版本,但您可以通过 telnet 到端口 873 查看其响应来了解一下。它将向您显示其支持的协议版本。

telnet myserver.local 873
Trying 127.0.0.1...
Connected to myserver.local.
Escape character is '^]'.
@RSYNCD: 31.0 sha512 sha256 sha1 md5 md4

这是 rsyncd 的响应3.1.3

rsync 3.0.7应该使用协议二十六

rsync 3.2.7应该使用协议三十二

对于您关于正在运行的守护进程版本的最后一个问题,一种方法是找出二进制文件的完整路径,然后使用 运行它--version。您可以通过查看 /proc 文件系统来执行此操作,如下所示(以 php 为例):

$ ps ax | grep php
 1995 ?        Ss     5:20 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)
$ ls -l /proc/1995/exe
lrwxrwxrwx 1 root root 0 Mar 11 07:09 /proc/1995/exe -> /usr/sbin/php-fpm8.1

相关内容