仅下载文件的一部分

Modified on: Sat, 30 Jun 2018 09:22:30 +0800

我试图找到是否可以通过axelaria2或任何其他可用工具下载文件的一部分(任何文件)。

例如,有一个电影文件(因为在A / V文件中做这种事情是有意义的)。我怎么能从文件的第一个下载最后50MB或第三个60Mb?

作者:r004

最佳答案

是否可以下载文件的一部分取决于用于传输内容的协议。

如果文件可通过HTTP / 1.1获得,那么任何正确支持Range标头的服务器(请参阅RFC 2616的第14.35节)都应允许您下载文件的部分内容。

考虑以下文件:

$ cat testfile.txt
12345

如果我使用支持Range标头的网络服务器nginx提供服务,我可以下载部分内容(为了便于阅读而插入换行符):

$ curl --header "Range: bytes=2-3" https://localhost/testfile.txt -k
34
$ curl --header "Range: bytes=0-1" https://localhost/testfile.txt -k
12 
$ curl --header "Range: bytes=4-" https://localhost/testfile.txt -k
5

这与curl,wget和其他HTTP客户端用于“恢复”中断传输的功能相同。

FTP协议通过RESTART(REST)命令提供给定偏移量的文件传输恢复(参见RFC 959的4.1.3节)。使用与上面相同的testfile.txt,由FTP提供:

$ touch testfile.txt
$ ftp localhost
Connected to localhost.
220 (vsFTPd 2.2.2)
Name (localhost:steve): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> rest 3
restarting at 3. execute get, put or append to initiate transfer
ftp> get testfile.txt
local: testfile.txt remote: testfile.txt
200 PORT command successful. Consider using PASV.
350 Restart position accepted (3).
150 Opening BINARY mode data connection for testfile.txt (6 bytes).
226 Transfer complete.
3 bytes received in 0.00 secs (19.1 kB/s)
ftp> 221 Goodbye.
$ cat testfile.txt
45

我不熟悉许多FTP客户端,所以我不知道是否有任何这样做,但是很可能通过使用REST命令读取任何字节子集,然后只要你有数量的你想要的字节。

aria2似乎能够使用-c标志恢复HTTP和FTP传输。这可能使用上述功能,因为它仅支持HTTP和FTP。但是,它似乎本身不支持仅下载文件的末尾或中间段。可以通过在磁盘上创建虚拟文件来利用--continue标志。如果这个文件有N个字节,那么aria可能会从文件的N + 1个字节开始。

作者:,Steven D

相关问答

添加新评论