如何从 url 中提取文件而不下载整个文件?

如何从 url 中提取文件而不下载整个文件?

我有一个系统,需要每天从一个非常大的公共文件中获取最新的 200 行。该文件通过 URL 公开。目前,我运行一个简单的脚本,该脚本执行 a 操作,wget然后将最后 200 行拖到另一个文件中,之后再次删除原始文件。

由于原始文件很大(约 250MB),脚本运行的大部分时间都花在下载文件上。

我的系统运行良好,但它花费的时间太长,这很烦人,因为我经常只是在等待它。

我发现了一些建议,例如这个,但这基本上与我现在所做的相同;下载整个文件并对其进行跟踪。

有人知道有什么方法可以让我不用完全下载公共文件就可以跟踪它吗?欢迎提供各种提示!

答案1

如果存储文件的服务器支持继续下载,那么您可以使用选项从任意偏移量开始--start-pos下载wget

您需要获取文件大小(使用类似的方法curl -I),计算最后 200 行的粗略估计值并使用差值作为起始偏移量。

答案2

如果您使用该-c|--continue选项,wget只需下载缺失的部分并将其添加到您现有的副本中:

-c
--continue
    Continue getting a partially-downloaded file. This is useful when you want to finish up 
    a download started by a previous instance of Wget, or by another program. For instance:

    wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z

    If there is a file named ls-lR.Z in the current directory, Wget will assume that it
    is the first portion of the remote file, and will ask the server to continue the 
    retrieval from an offset equal to the length of the local file. 

这并不意味着服务器必须支持 HTTP 的“Range”选项,就像--start-pos@efotinis 的回答中的选项一样。这被称为字节服务

相关内容