How To Download Files with curl Command on Linux
This post will guide you how to download remote files using curl command from the command line on your Linux system. How do I download multiple files with curl command on Linux or unix systems.
- Curl Command
- Downloading Single Files
- Downloading Single Files with a Different File Name
- Downloading Multiple Files
- Downloading Files with Authentication
- Downloading Fiels Using a Proxy Server
Curl Command
curl is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP). The command is designed to work without user interaction.
curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer resume, Metalink, and more. As you will see below, the number of features will make your head spin!
The syntax of the Curl command is as follows:
curl [options] [URL...]
Options:
-o, --output <file>
Write output to <file> instead of stdout. If you are using {} or [] to fetch multiple documents, you can use ‘#’ followed by a number in the <file> specifier. That variable will be replaced with the current string for the URL being fetched. Like in: curl http://{one,two}.example.com -o “file_#1.txt”
-O, --remote-name
Write output to a local file named like the remote file we get. The file will be saved in the current working directory. If you want the file saved in a different directory, make sure you change the current working directory before invoking curl with this option.
-u, --user <user:password>
Specify the user name and password to use for server authentication. Overrides -n, –netrc and –netrc-optional.
-x, --proxy [protocol://]host[:port]
Use the specified proxy. The proxy string can be specified with a protocol:// prefix. No protocol specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://, socks5:// or socks5h:// to request a specific SOCKS version to be used. (The protocol support was added in curl 7.21.7)
Downloading Single Files
If you want to download a sigle file from remote server on your Linux system, and you can use the curl
command with -O
option to download a file and save it in the current working directory with the remote file name, type:
$ curl -O https://git.kernel.org/torvalds/t/linux-5.4-rc2.tar.gz
Outptus:
devops@devops-ubuntu:~$ curl -O https://git.kernel.org/torvalds/t/linux-5.4-rc2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 162 100 162 0 0 99 0 0:00:01 0:00:01 --:--:-- 99 devops@devops-ubuntu:~$ ls -al linux-5.4-rc2.tar.gz -rw-rw-r-- 1 devops devops 162 Oct 9 22:25 linux-5.4-rc2.tar.gz
Downloading Single Files with a Different File Name
If you want to specifiy a new file name when download a single file using curl command from remote server, and you can pass the -o option to the curl command.
For example, you want to save the downloaded file to a specific directory “/tmp
” with a given name “mycurltest.tar.gz
“, type:
$ curl -o /tmp/mycurltest.tar.gz https://git.kernel.org/torvalds/t/linux-5.4-rc2.tar.gz
outputs:
devops@devops-ubuntu:~$ curl -o /tmp/mycurltest.tar.gz https://git.kernel.org/torvalds/t/linux-5.4-rc2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 162 100 162 0 0 92 0 0:00:01 0:00:01 --:--:-- 92 devops@devops-ubuntu:~$ ls -al /tmp/mycurltest.tar.gz -rw-rw-r-- 1 devops devops 162 Oct 9 22:29 /tmp/mycurltest.tar.gz
Downloading Multiple Files
You can also download multiple files from multiple remote servers using curl
command.
For example, you want to download two tar.gz file from kernel.org site and save those two file in the current direcotry with same file names. type:
$ curl -O https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.148.tar.xz -O https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.16.75.tar.xz
Outputs:
devops@devops-ubuntu:~$ curl -O https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.148.tar.xz -O https://cdn.kernel.org/pub/linux/kernel/v3.x /linux-3.16.75.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 96.4M 100 96.4M 0 0 2940k 0 0:00:33 0:00:33 --:--:-- 3284k
100 77.3M 100 77.3M 0 0 4769k 0 0:00:16 0:00:16 --:--:-- 5355k
devops@devops-ubuntu:~$ ls linux-*
linux-3.16.75.tar.xz linux-4.14.148.tar.xz
Downloading Files with Authentication
If you want to download a password protected file from remote server using curl
command, and you need to pass the -u
option with username
and password
to the curl command.
Downloading a file from ftp server with authentication,type:
$ curl -u username:password -O ftp://myserver.test/mytest.tar
Downloading a file from Http server with authentication, tyep:
$ curl -u username:password -O https://git.kernel.org/torvalds/t/linux-5.4-rc2.tar.gz
Downloading Fiels Using a Proxy Server
If you need to use a proxy server to download remote files from the remote server using curl
command, and you need to pass the -x
option to the curl
command, type:
$ curl -x 192.168.3.50:3128 -O https://git.kernel.org/torvalds/t/linux-5.4-rc2.tar.gz
Conclusion
You should know that how to download a single or multiple files using curl command from the command line in your CentOS or RHEL or Ubuntu Linux.
More Curl Examples: How to Install and Use cURL Command on Ubuntu or CentOS Linux