![如何检索网站的大小?](https://linux22.com/image/1473902/%E5%A6%82%E4%BD%95%E6%A3%80%E7%B4%A2%E7%BD%91%E7%AB%99%E7%9A%84%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
我想知道网站上托管的文档的大小。
一个解决方案可能是使用 等工具下载该网站的所有内容wget -r
。但是,这个特定的网站托管了许多大文件,数据量可能超过 3To。我无法承受使用这样的带宽和托管这么多数据。
第二个解决方案是通过 ftp 连接到此网站。但我没有此服务器的 ftp 访问权限。
还有其他方法可以解决我的问题吗?总之,我想知道网站上托管的目录有多大,而我只有读取和浏览权限。
PS:我使用的是 Linux(Debian),特别欢迎与之兼容的所有解决方案。
答案1
如上所述,您可以使用Content-Length
HTTP 标头中的项目。各种工具都可以获取标头信息,例如,
$ 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-Length
以Content-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
上一个答案中的功能,您必须下载并安装它。