【发布时间】:2020-01-22 08:41:59
【问题描述】:
我正在从多个 (S)FTP 服务器下载每日内文件。这些服务器不是由我管理的,我已被外部各方授予访问权限。
文件在一天中的不同时间点到达。因此,我不能不知道何时必须发送提取请求。
有没有一种聪明的方法来设置一个监听器来跟踪这些 SFTP 服务器上的变化?例如,某种 ping 返回服务器的最后更新时间戳。
【问题讨论】:
-
这个问题与你已有的代码有关吗?
我正在从多个 (S)FTP 服务器下载每日内文件。这些服务器不是由我管理的,我已被外部各方授予访问权限。
文件在一天中的不同时间点到达。因此,我不能不知道何时必须发送提取请求。
有没有一种聪明的方法来设置一个监听器来跟踪这些 SFTP 服务器上的变化?例如,某种 ping 返回服务器的最后更新时间戳。
【问题讨论】:
首先,FTP 和 SFTP 是两个完全不相关的协议。因此,在一个问题中同时要求两者是没有意义的。无论如何,两者的答案实际上几乎相同。
FTP 和 SFTP 协议都没有任何机制来通知客户端更改。
他们甚至无法报告请求的更改。
您所能做的就是定期列出服务器上的所有文件并将列表与以前的结果进行比较。
使用 FTP,可以通过请求按时间戳排序的列表略微对其进行优化。这样,特别是如果文件夹中有很多文件,您可以在获得所有新文件后中止列表下载。虽然要求排序列表是一个非标准功能,但得到广泛支持。见How to get files in FTP folder sorted by modification time。
如果您控制服务器(机器,而不是软件),您可能会在那里构建一个服务来提供您需要的信息。但这与 SFTP/FTP 无关。而且由于您不控制服务器,因此它也不相关。
【讨论】: