Wget 下载的数据比实际文件多

Wget 下载的数据比实际文件多

我使用 wget 下载了 lubuntu 镜像,文件大小为 694MB,但实际下载的文件大小为 789MB。当我执行 wget -c 时,它显示文件已下载。但文件大小比给出的要大 100MB。

下载的文件大小可以在这里看到:

-rw-rw-r-- 1 alex alex  98537904 Jun  1  2011 R284575.exe
-rw-rw-r-- 1 alex alex      4928 Sep 25 11:06 wget-log
-rw-rw-r-- 1 alex alex 827390116 Sep 25 11:06 lubuntu-14.04-desktop-amd64.iso
-rw-rw-r-- 1 alex alex    148598 Sep 25 11:44 lubuntu-14.04-desktop-amd64.iso.1

在这里我们可以看到当开始新的下载时 lubuntu 镜像的大小

wget--limit-rate=40k http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/lubuntu-14.04-desktop-amd64.iso
wget--limit-rate=40k: command not found
alex@dracula:~/Downloads$ wget http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/lubuntu-14.04-desktop-amd64.iso
--2014-09-25 11:44:45--  http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/lubuntu-14.04-desktop-amd64.iso
Resolving cdimage.ubuntu.com (cdimage.ubuntu.com)... 91.189.92.174, 2001:67c:1360:8c01::20
Connecting to cdimage.ubuntu.com (cdimage.ubuntu.com)|91.189.92.174|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 727711744 (694M) [application/x-iso9660-image]
Saving to: ‘lubuntu-14.04-desktop-amd64.iso.1’

 0% [                                                                                                             ] 1,44,218    20.8KB/s  eta 9h 29m 
^C

我该如何解决这个问题?我确信我可以从下载的文件中检索所需的文件。有人能告诉我这个方向吗?

答案1

一些评论:

a)网络服务器通过http标头条目告诉您(如果它是一个好的网络服务器)即将传输的内容长度。参见:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13这可能是事实,也可能不是。

b) 如果网络服务器在达到内容长度后没有停止发送数据,那么网络服务器要么对内容长度撒了谎,要么做了其他事情。

c) 你的 wget 和网络服务器之间的一些相关方篡改了数据。

所以,我至少会使用“https”来使c)变得更加困难。

文件列表http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/sha256sum downloaded_file显示服务器本身认为内容长度约为 694mb。检查下载的文件是否与服务器上的文件完全相同(按位)的唯一有效方法是对照http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/SHA256SUMS

你也可以尝试那里的 torrent 版本,或者你也可以尝试 zsync-links(例如,http://cdimage.ubuntu.com/lubuntu/releases/14.04/release/lubuntu-14.04-desktop-amd64.iso.zsync)。什么是 zsync?好吧:http://zsync.moria.org.uk/

“zsync 是一个文件传输程序。它允许您从远程服务器下载文件,您的计算机上已经有该文件旧版本的副本。zsync 仅下载文件的新部分。”

为了“我确信我可以从下载的文件中检索所需的文件”,您必须确保您下载的数据至少“一些块”等于原始文件的某些块。那么,如何测试呢?您对下载文件的块进行校验,并与原始文件的块的校验和进行检查。恭喜,您已经重新发明了 rsync 协议,这就是 zsync 所使用的(仅下载丢失的块)。

相关内容