如何检索网站的大小?

如何检索网站的大小?

我想知道网站上托管的文档的大小。

一个解决方案可能是使用 等工具下载该网站的所有内容wget -r。但是,这个特定的网站托管了许多大文件,数据量可能超过 3To。我无法承受使用这样的带宽和托管这么多数据。

第二个解决方案是通过 ftp 连接到此网站。但我没有此服务器的 ftp 访问权限。

还有其他方法可以解决我的问题吗?总之,我想知道网站上托管的目录有多大,而我只有读取和浏览权限。

PS:我使用的是 Linux(Debian),特别欢迎与之兼容的所有解决方案。

答案1

如上所述,您可以使用Content-LengthHTTP 标头中的项目。各种工具都可以获取标头信息,例如,

$ lynx -dump -head http://localhost
HTTP/1.1 200 OK
Date: Wed, 18 Nov 2015 11:21:40 GMT
Server: Apache
Last-Modified: Sun, 10 Nov 2013 20:02:38 GMT
ETag: "bf2-4ead818dfd380"
Accept-Ranges: bytes
Content-Length: 3058
MS-Author-Via: DAV
Content-Type: text/html
Connection: close

但是,您仍然需要检索给定的网页以从中提取 URL。Lynx 在转储末尾提供了一个列表,例如。

$ lynx -dump http://localhost
...
References

   1. http://localhost/NetBeans-ROR-plugin/updates/updates.xml
   2. http://localhost/webcal
   3. http://localhost/changepassword
   4. http://localhost/profilemanager
   5. http://www.apple.com/server/

综合起来,就可以编写一个脚本,从页面中检索 URL,然后遍历引用的 URL 列表,首先执行“head”(可能比读取整个引用页面更快),检查和Content-LengthContent-Type查看该信息是否可用,如果可用,则检查它是否指向另一个要抓取的网页。

以供参考:

因为你只想要尺寸,当脚本指向已知内容长度的非 HTML 项目时,它就可以简单地使用标题信息。

答案2

使用 curl-I选项仅获取响应头(即不下载文件)

$ curl -sI REMOTE_FILE_LOCATION | grep Content-Length

或者如果你只想提取数字

$ curl -sI REMOTE_FILE_LOCATION | grep Content-Length | cut -d' ' -f2

curl通常在 Linux 上默认安装,因此您无需安装它。为了使用lynx上一个答案中的功能,您必须下载并安装它。

相关内容