有一组удаленных主机,其中rsync-сервер. 它接受带有文件的文件夹并将其放入特定目录。
这些文件和文件夹从服务器发送到nodejs客户rsync端。
问题:是否可以从 nodejs 服务器端向远程主机上的 rsync 服务器询问特定目录的哈希和?
目的实现业务版本监控以及系统解决方案所必需的,本质上是一个反馈更新系统。只是信息系统已经实现了将需要的文件传输到公司远程服务器使用rsync.
hash sum需要和更新系统服务的数据库中记录的hash sum进行比较,以此来判断某个1s报告的版本是否正确,比如在一个分支中。
更新:如果被问到,你能建议另一个可以处理类似任务的实用程序吗?(总有一个选项可以自己写,但我想把好的留到以后再写)
upd:如果你尝试将文件发送到远程 rsync 服务器,如果它有一个,它不会返回类似“我已经拥有它,不需要传输它”的反馈作为反馈吗?事实上,这将是解决问题的方法,因为 rsync 很可能通过哈希和进行比较,在这种情况下,可以理解一切正常,如果没有,那么我们首先了解它,然后其次,立即传输正确的文件。
目前 nodejs 服务器使用rsync 包发送文件,它看起来像这样:
var Rsync = require('rsync');
// Build the command
var rsync = new Rsync()
.shell('ssh')
.flags('az')
.source('/path/to/source')
.destination('server:/path/to/destination');
// Execute the command
rsync.execute(function(error, code, cmd) {
// we're done
});

不,那是不可能的。你只能自己做哈希。
第一个选项:哈希文件
安装
用法
或者在命令行上:
第二种选择:nodejs本身
crypto.createHash(算法)
据我所知,没有rsync服务器/客户端实现支持您需要的功能。他们解决其他问题。
但是,根据您提供的代码判断,ssh协议用于与服务器通信。因此,您只需运行该程序即可直接在服务器上计算所需文件的校验和
并解析响应:
该程序
md5sum用于使用md5算法计算校验和,但gnu/coreutils包中包含许多与其他加密算法一起使用的其他程序。ssh客户端的实现
node.js不止于此:一、二、三等。无法询问目录的哈希和,但可以在不执行实际复制操作的情况下询问哪些文件已更改。您只需要指定一个标志
dry-run:然后,从命令的输出中,获取已更改文件的列表。如果您没有明确禁止这样做,那么比较将完全按照您的意愿进行,即使用校验和。
通过指定一个选项
out-format,您可以仅获取文件列表而没有任何内容,例如,以这种形式: