如何使用 axel 命令将输出文件保存到 /dev/null?

如何使用 axel 命令将输出文件保存到 /dev/null?

我想从另一台服务器下载一个文件,然后将其保存到 /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/nullaxel会尝试创建并将进度写入一个不可能存在的状态文件,因为它试图将其写入/dev/null

一个解决方案有效的方法是在当前目录中启动下载以axel创建所需的状态文件,然后使用Ctrl+立即停止下载C,并使用 将实际下载数据的输出文件(所以不是一个*.st)创建为符号链接/dev/null

ln -f -s /dev/null <your_file>

<your_file>创建的输出文件在哪里axel。然后您可以重新运行axel刚刚运行的相同命令,所有下载的数据将转发到/dev/null。然后您可以删除<your_file>以删除符号链接。

相关内容