downloading with curl using multiple connections

user1030749 picture user1030749 · Dec 4, 2011 · Viewed 12.4k times · Source

I'm trying to tranfer a multi-gb file from one server to another; problem is RTT is 150ms+. Ive already tried using aria2 but its limited to 16 connections, lftp doesn't have any protection against stalled transfers.

I'm wondering if its possible to download one file with multiple connections using curl cli.

Answer

alijandro picture alijandro · Nov 25, 2016

It's possible. Fetch the total file size with -I option in curl.

Then you can fork many process in a shell, every curl connection with a different Content-Length header to download different part of the file.

After all the tasks finish, then merge all the download slices to a big file.

I have written a simple script and it's available here mcurl.sh, with -s option you can specify how many tasks you create to download the big file.