wget开始下载,然后停止“无法写入”


13

我正在使用wget将某些文件从一台服务器镜像到另一台服务器。我正在使用以下命令:

wget -x -N -i http://domain.com/filelist.txt

-x =因为我想保留目录结构

-N =时间戳记以仅获取新文件

-i =要从外部文件下载文件列表,每行一个。

我正在测试的小文件(例如326kb大文件)就可以了。

但是另一个5gb只会下载203mb,然后停止(提供或占用几千字节总是203mb)

显示的错误消息是:

无法写入“ path / to / file.zip”

(我不确定为什么前后会有奇怪的字符。我在Windows中使用Putty,这可能与它无关,所以我把它们留在了。我想不是。)

完整的响应如下:(我已替换了路径,ip和域名)

--2012-08-31 12:41:19-- http://domain.com/filelist.txt正在解析domain.com ... MY_IP正在连接到domain.com | MY_IP | :: 80...。HTTP请求已发送,正在等待响应... 200 OK长度:161 [text / plain]服务器文件不比本地文件“ domain.com/filelist.txt”更新

--2012-08-31 12:41:19-- http://domain.com/path/to/file.zip已连接到domain.com | MY_IP | :: 80...。HTTP请求已发送,正在等待响应... 200 OK长度:5502192869(5.1G)[application / zip]大小不匹配(本地213004288)-正在检索。

--2012-08-31 12:41:19-- http://domain.com/path/to/file.zip已连接到domain.com | MY_IP | :: 80...。HTTP请求已发送,正在等待响应... 200 OK长度:5502192869(5.1G)[application / zip]保存到:âdomain.com/ path / to /file.zipâ

3%[====>
] 213,003,412在24秒内8.74M / s

无法写入“ domain.com/path/to/file.zip”

路径目录已经存在或动态创建似乎没有什么区别。

有谁知道为什么停止它以及如何解决它?

任何帮助,将不胜感激。

编辑:我也尝试过只是做一个wget,没有文件输入并重命名该文件。这次,它下载了超过3GB的内存,然后给出了相同的无法写入错误。

wget -x -N http://domain.com/path/to/file.zip -O files/bigfile.zip

您的路径中是否有特殊字符?
JMeterX 2012年

如果在命令前键入“ cd / tmp &&”,它可以按预期工作吗?

您的磁盘已满吗?
珍妮D

磁盘肯定不满,没有特殊字符。尽管路径的长度为87个字符,但有些谷歌搜索显示长名称存在一些问题(尽管文件名只有29个字符),但在tmp中失败的方式相同。
约翰·梅勒

@FreezeDriedPop由于您的文件名相对较长,您可以使用此-O选项进行更改,因此wget -O test.zip http://link
JMeterX'Aug 31'2012

Answers:


7

如果磁盘空间不足,则会出现此错误。运行df,您将看到您要写入的目录是否位于100%


4

长网址是一个问题。我也面对过。因此,我使用了bit.ly并缩短了网址。奇迹般有效!


你确定吗?当问题与URL有关时,下载似乎不太可能在某个时候开始并中断,URL仅在事务开始时才使用。
菲利克斯·弗兰克

是。我有同样的问题。尝试一下。
Namchester

我认为问题出在linux无法识别长网址。
Namchester

我想你是说贝壳吗?因为内核绝对是这种失败的原因。即使对于shell也不可能,但是如果是这种情况,再次,下载甚至无法启动-shell甚至在分叉预期wget过程之前都会出错。
菲利克斯·弗兰克

1
对我来说,它是网址上的查询字符串wget http://dltr.org/skin/frontend/lowes/default/css/custom.css?001
Damodar Bashyal

1

我只是增加了一个-tar的wget后的管后命令

我有

wget https://example.com/path/to/file.tar.gz -O -|tar -xzf -C /path/to/file

然后将其更改为

wget https://example.com/path/to/file.tar.gz -O - | tar -xzvf - -C /path/to/file

也不要忘记tar的`-`:)。
Shital Shah

0

如果它开始保存大文件并写入203 MB,我可能会怀疑您的接收端有完整的文件系统,或者网络连接正在超时。

您可以在接收服务器上使用df -h来查看文件系统是否已满

查看此答案以了解wget的超时问题:

/programming/2291524/does-wget-timeout

另外,重试失败的传输,并省略-N timestamp选项

另外,运行ulimit -a以查看接收服务器上是否有文件大小限制


我不是专家,但我认为它正在运行CentOS6。而且我不确定如何检查字符表示。尽管它确实可以开始下载并可以下载其他较小的文件,但我认为这听起来不是问题。
约翰·梅勒

它成功下载的文件名称中是否包含任何有趣的字符?
DisgruntledUser

不,根本没有奇怪的字符,除非点是一个奇怪的字符,例如“ megapack_4.11.zip”。但是我再次尝试使用“ bigfile.zip”这个名称,并且发生了同样的问题。
约翰·梅勒

也许只有Putty设置了与UTF-8不同的char表示形式
DisgruntledUser 2012年

是的,我真的不认为这是问题所在,我只是在复制和粘贴Putty时提到了它。不能写的真正问题。
约翰·梅勒


0

我正在做类似的事情:

wget -x -N -i http://domain.com/filelist.txt

我收到了:

--2016-12-09 07:44:23--  https://www.example.com/dir/details?abc=123&def=456
Resolving www.example.com (www.example.com)... 1.2.3.4
Connecting to www.example.com (www.example.com)|1.2.3.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
details?abc=123&def=456: No such file or directory

Cannot write to ‘details?abc=123&def=456’ (Success).

在等效的filelist.txt文件中,我有一个类似以下的URL:

https://www.example.com/dir/details?abc=123&def=456

因此,为了调试,我尝试创建wget试图创建的相同文件:

touch "details?abc=123&def=456"
touch: cannot touch ‘details?abc=123&def=456’: No such file or directory

中提琴!看起来好像?是问题所在,但良好的做法是从文件名中删除所有特殊字符,想象一下&如果不转义该怎么办。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.