我的问题是,我正在开发的专有 SaaS 平台仅通过 WebDav 提供日志文件。在开发过程中,这些日志文件到一天结束时可能会变得非常大(大约 200 Mb 以上),但在尝试追踪“一般错误”时非常详细且有用。
现在我的情况是,为了查看日志文件,我每次都必须下载 200 Mb 的文件(如果我删除它,它不会自动重新创建 :(),这意味着即使在良好的连接下,您也必须等待 1-2 分钟才能下载文件。
所以实际问题又来了:是否有任何工具可以每 5 秒查看一次(例如)文件的时间戳并仅下载添加的块(使用计算出的大小差异)。
答案1
1. zsync
抽象的:本文档介绍了 zsync 背后的思想,这是一种新的文件传输程序,可以实现仅高效下载接收方尚不知道的文件内容。zsync 使用 rsync 算法,但在客户端实现,因此只需要在服务器上进行一次性预计算,使用 zsync 不需要特殊的服务器软件或新协议。
更新:
根据 rsync 算法:
一端计算每个不同数据块的校验和,并将其发送到另一端。然后另一端对其文件进行滚动校验和,识别共同的数据块,然后找出不共同且必须传输的数据块。
在 rsync 中,服务器完成所有艰苦的工作,而在 zsync 中,请求数据的客户端完成应用 rsync 滚动校验和并与下载的校验和列表进行比较的所有艰苦的工作。
从 [4]
...因此,我们将其设置为计算每个不同块的校验和的服务器。由于它只需要为每个数据块计算一个校验和,并且这不是特定于任何特定客户端的,因此可以缓存数据。我们可以将这些数据保存到元文件中,客户端请求这些数据作为该过程的第一步。这个元文件可以简单地位于同一台服务器(甚至是不同的服务器)上的另一个 URL 上。
zsync 客户端将提取此元文件。然后,它会遍历已有的数据,应用 rsync 滚动校验和并与下载的校验和列表进行比较。这样,它便可识别出目标文件中已有的数据。然后,它会向服务器请求剩余的数据。由于它知道需要哪些数据,因此它可以简单地使用 HTTP Range 请求来提取数据。...
- 因此服务器端需要支持HTTP Range标头。
2. zsync 的替代方案
参考:
答案2
如果客户端是 Windows 计算机,请尝试以下操作:将 webdav 共享映射为网络驱动器并运行尾巴文件上的命令。