Загрузите только часть файла

Я пытаюсь найти, если можно загрузить часть файла (любой файл) через axel или aria2 или любые другие доступные инструменты.

Например, есть файл фильма (потому что это делает смысл в A / V-файлах). Как я могу загрузить только последние 50 МБ или 3-й 60 Мб из первого файла?

    Независимо от того, загружаете ли вы часть файла, зависит от протокола, используемого для передачи содержимого.

    Если файлы доступны через HTTP / 1.1, то любой сервер, который правильно поддерживает заголовок Range (см. Раздел 14.35 RFC 2616), должен позволить вам загружать части файла.

    Рассмотрим следующий файл:

     $ cat testfile.txt 12345 

    Если я обслуживаю это с помощью nginx, веб-сервера, который поддерживает заголовок Range, я могу загрузить его части (новые строки вставлены для удобочитаемости):

     $ 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 

    Это та же функция, что и зависание, wget и другие HTTP-клиенты для «возобновления» прерванных передач.

    Протокол FTP обеспечивает возобновление передачи файла при заданном смещении с помощью команды RESTART (REST) ​​(см. Раздел 4.1.3 RFC 959). Используя тот же файл 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 может возобновить передачу HTTP и FTP с помощью флага -c . Вероятно, это использует вышеописанные функции, поскольку поддерживается только для HTTP и FTP. Однако он, похоже, не поддерживает загрузку только конечного или среднего сегмента файла. Можно было бы использовать флаг --continue , создав фиктивный файл на диске. Если этот файл имеет N байтов, возможно, ария начнется с N + 1 байта файла.