如何查询远程rsync守护进程的版本号,以及本地运行中的rsync守护进程版本?
如何查询远程rsync守护进程的版本号,以及本地运行中的rsync守护进程版本?
一、查询远程rsync守护进程版本
直接给远程rsync发送--version参数是没用的(这个参数只会返回本地客户端的版本),可以试试这两种实用方法:
方法1:通过netcat获取协议版本(间接推断软件版本)
rsync守护进程在TCP连接建立时,会主动返回协议版本号。用nc命令连接远程服务器的873端口(rsync默认端口):
nc myserver.local 873
你会收到类似@RSYNCD: 31的输出,这里的数字就是协议版本。协议版本和rsync软件版本的对应关系大致是:
- 协议31 → rsync 3.2.0及以上(比如你安装的3.2.7)
- 协议29 → rsync 3.0.0-3.1.3(比如NAS自带的3.0.7)
- 协议28 → rsync 2.6.x系列
方法2:通过rsync调试输出验证
请求一个不存在的共享目录,结合高 verbose 级别,能在调试信息里看到服务器的协议版本:
rsync -vvn myserver.local::nonexistent_share
输出里会出现类似server version: 31的行,再对照上面的对应关系就能推断出软件版本。
二、查询本地运行中的rsync守护进程版本
如果你已经通过ps看到了rsync daemon的进程,想要确认它的版本,可以用这两种方式:
方法1:通过进程PID获取可执行文件路径
先拿到daemon的PID(比如你例子里的12682),然后查看这个进程对应的实际可执行文件:
ls -l /proc/12682/exe
这会输出rsync二进制文件的真实路径(比如/opt/bin/rsync),直接执行这个路径的--version就能得到版本:
/opt/bin/rsync --version
方法2:检查环境默认的rsync路径
如果你的daemon是用相对路径启动的(比如命令里只有rsync --daemon),可以先看当前环境默认的rsync是哪个:
which rsync
如果输出是你通过Entware安装的路径(比如/opt/bin/rsync),那直接执行rsync --version就能确认版本——因为daemon启动时会调用这个路径的二进制文件。
另外,也可以用ps -ef | grep rsync查看完整的进程命令,如果里面是绝对路径,直接用那个路径查版本就行。
备注:内容来源于stack exchange,提问作者Jim DeLaHunt
相关产品推荐
相关产品推荐

