wget 的下载进度以相反的顺序排列?

wget 的下载进度以相反的顺序排列?

我不知道发生了什么,但突然它开始以相反的顺序显示进度条......

HTTP 请求已发送,等待响应...200 OK
长度:4102725632 (3.8G) [application/octet-stream]
保存到:`******.***'

-64% [=================>................] -1,603,353,961 14.3K/秒 预计2天 17小时

而不是通常这样:

HTTP 请求已发送,等待响应...200 OK
长度:1913641 (1.8M) [application/pdf]
保存至:`InformationBrochure.pdf'

11% [===========>................] 216,000 19.7K/s 预计到达时间 89 秒

我怎样才能将其改回正常的递增顺序?

编辑: 仅针对我正在下载的 4gb 以上文件(windows 10 iso)显示这种情况.... 对于所有其他下载,一切正常。这背后的原因是什么?

答案1

这看起来像是一个整数溢出问题。我猜测(没有查看代码)在您的特定平台上,wget下载进度和文件大小可能在内部表示为已下载字节数(有符号)的 32 位计数。

有符号的 32 位变量将在大约 +21.5 亿处回绕,此时它从 -21.5 亿开始向上计数。这对应于 2 GiB 的文件大小。

如果我的假设正确,这个问题没有真正的“解决办法”对于您作为普通用户来说;当您下载大于 2,147,483,647 字节的文件时,就会出现此问题。

可能就是那个64 位版本的 wget更好地处理大型下载的进度显示,因为在文件大小非常大的情况下,回绕会发生,您根本不会遇到这种情况。另一方面,我们过去也经常这样说多个 GB 的单个文件……

从好的方面来看,这应该是一个纯粹的美容问题。 下载本身几乎肯定不会受到影响。


假设你正在运行 wget 的最新版本,我建议你将此报告为wget 项目的错误跟踪器这样就可以修复它。确保包含有关硬件和操作系统的详细信息;具体来说,您的 CPU、操作系统和 wget 二进制文件(分别)是 32 位还是 64 位,以及您正在运行的确切操作系统和版本。

相关内容