Утилита curl прекрасно скачивает файлы с удалённого сервера и загружает файлы. Утилита обладает докачкой. Для этого передайте флан -C. Если скачивание остановилось и сервер поддерживает докачку, то вы сможете докачать файлы. Этой утилитой легко пользоваться, но вся сложность в запоминании ключей + понимание настроек удалённого сервера. Если на сервере стоит защита от user-agent: curl, то вы должны подменить user-agent.
curl ya.ru
# тут будет пустой вывод
# -i, --include Включение заголовков ответов протокола в выходные данные
curl -i ya.ru
HTTP/1.1 302 Moved temporarily
Report-To: { "group": "network-errors", "max_age": 100, "endpoints": [{"url": "https://dr.yandex.net/nel", "priority": 1}, {"url": "https://dr2.yandex.net/nel", "priority": 2}]}
X-Yandex-Req-Id: 1737216747514191-49299169578570416-balancer-l7leveler-kubr-yp-sas-257-BAL
NEL: {"report_to": "network-errors", "max_age": 100, "success_fraction": 0.001, "failure_fraction": 0.1}
X-Yandex-Captcha: captcha
Set-Cookie: spravka=dD0xNzA1NjgwNzQ3O2k9OTUuMjUuMTY1LjM1O0Q9QjFDQzkyNTlCRDQ1N0VGMjk1MjZFMzFEODJDRTBFNDg2OEUwMDI1M0I4NkQxN0QwQjIyMDFFM0M5NkY0MDA4QjQ0QzRDMDMyMTBFQjE1MzM7dT0xNzA1NjgwNzQ3NTE1NDQ3MDY0O2g9MmUzOWQyNmMzMDYwZjUxZmIwNjIxYTU0N2I3OGRkMWI=; domain=.ya.ru; path=/; expires=Mon, 17 Feb 2025 16:12:27 GMT
Set-Cookie: _yasc=c0qAgHPu7v9vOLoExk8KSF0mcpUBNvHYT7pZmj4zfoF0/EgDT1HM1iCcuUJh6VJU/2sA; domain=.ya.ru; path=/; expires=Tue, 16 Jan 2035 16:12:27 GMT; secure
Set-Cookie: receive-cookie-deprecation=1; Path=/; Domain=.ya.ru; Expires=Sun, 18 Jan 2026 16:12:27 GMT; SameSite=None; Secure; HttpOnly; Partitioned
Set-Cookie: bh=YOulr7wGagP7rwI=; Path=/; Domain=.ya.ru; Expires=Sun, 22 Feb 2026 16:12:27 GMT
X-Content-Type-Options: nosniff
Transfer-Encoding: chunked
Accept-CH: Sec-CH-UA-Platform-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA, Sec-CH-UA-Full-Version-List, Sec-CH-UA-WoW64, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Platform, Sec-CH-UA-Full-Version, Viewport-Width, DPR, Device-Memory, RTT, Downlink, ECT, Width
Location: http://ya.ru/showcaptcha?cc=1&mt=B7115BD489807792A7F5E433EAB8C694C628A8834A059EC24F27BF6E446CA036E4178737B93C313858C469C0327A0DA7C61CC364F604B7183D16B0E574815ED836ABF602E8BD947733637EF794692E9528F0E15131278D1545B09BF61306D36E844EC766AD66998D45C443AB93CE44EDE7A4914936EC212B9490EB155833A363B2A3DE540B7368233DF179E7CF7957E030F3BF3689ADBA7AE613DB1826DA9CD465894063953C7B592E4BAAA812031B8259E96F65EDF21A5C47423C86C2AD077B41436CC2C7F0A74BD3373DE210B01E039DCC9515001B93AEC3A4F437&retpath=aHR0cDovL3lhLnJ1Lz8%2C_cfcec211dd8127ff9f1b1b7552ed0186&t=2/1737216747/18dc9f5d844601e3e0d3034feaf51cb4&u=5902178005215652560&s=fead7edec843f84072e17ffce44169c7
X-Yandex-EU-Request: 0
# скачивание файла с докачкой
curl -L -O -C document.pdf
# -L, --location Следить за перенаправлениями
# -O, --remote-name Записывать выходные данные в файл с именем удаленного файла(ов)
# -C, --continue-at Возобновленное передачи данных
# файл помощи
curl --help
-d, --data HTTP POST data
-f, --fail Быстрый сбой без вывода об ошибках HTTP
-h, --help Получение справки по командам
-i, --include Включать заголовки ответов протокола в выходные данные
-o, --output <файл> Запись в файл вместо стандартного вывода
-O, --remote-name Записывать выходные данные в файл с именем удаленного файла(ов)
-s, --silent бесшумный режим
-T, --upload-file Передача локального ФАЙЛА в пункт назначения
-u, --user Пользователь сервера и пароль
-A, --user-agent Отправить User-Agent <имя> на сервер
-v, --verbose Делает операцию более понятной
-V, --version Показывает номер версии и завершает работу
# полный файл помощи
curl --help all