我想从另一台服务器下载一个文件,然后将其保存到 /dev/null,以增加第一台服务器的每月流量。
正如man axel
所说,我应该使用-o file
或--output=file
,但这是问题所在:
axel -an16 -o /dev/null http://ip/file
当我运行此程序并且仅当我想将输出文件保存到null
文件时,我收到此错误:
File size: 4294967296 bytes
No state file, cannot resume!
但是当我省略-o /dev/null
它时,它就可以正常工作并开始下载。此外,当我使用-o
一些不存在的其他名称时,它也可以正常工作。虽然我可以wget -O /dev/null
毫无问题地使用。
我用 Google 搜索了一下,发现它似乎是axel
命令错误,但尚未解决。
我使用的命令正确吗?或者我在这里做错了什么?你能帮我看看这是正确的方法吗?或者我应该使用wget
命令,甚至其他方法?
答案1
正如@Frands Hansen 在评论中所说,我应该wget
为此目的使用:
axel 运行多个线程,因此需要了解正在下载的块。它在输出目录中的状态文件中执行此操作。它将状态文件写入 /dev/null,显然它无法再次从那里读取它。只需启动多个 wgets 即可。
答案2
正如 Frands Hansen 在其评论,axel
创建一个“状态文件”,以便在下载因任何原因中断的情况下知道从哪里恢复下载,因为它利用多个连接,每个连接的下载速度都不相同。
这就是为什么当您尝试将文件输出到时/dev/null
,axel
会尝试创建并将进度写入一个不可能存在的状态文件,因为它试图将其写入/dev/null
。
一个解决方案有效的方法是在当前目录中启动下载以axel
创建所需的状态文件,然后使用Ctrl
+立即停止下载C
,并使用 将实际下载数据的输出文件(所以不是一个*.st
)创建为符号链接/dev/null
:
ln -f -s /dev/null <your_file>
<your_file>
创建的输出文件在哪里axel
。然后您可以重新运行axel
刚刚运行的相同命令,所有下载的数据将转发到/dev/null
。然后您可以删除<your_file>
以删除符号链接。