在Linux/Unix中怎样使用curl下载文件?

时间:2019-11-20 08:53:22  来源:igfitidea点击:

如何在shell脚本中使用curl下载文件?

cURL既是命令行实用程序又是库。

可以使用它通过许多不同的协议(例如HTTP,HTTPS,FTP,SFTP等)来下载文件

使用curl下载单个文件

使用-O选项,不需要指定-o或--output选项,就可以下载文件。
保存在本地的文件名和服务器的一样。

例如:

curl -O https://www.theitroad.local/download/databak1902.tar

curl如何处理HTTP 301重定向文件

下载文件时,远程HTTP服务器可能返回的是其他状态码。
比如HTTP/301状态代码告诉客户端:到另外一个URL去获取文件。

在curl中,我们可以使用-L选项来处理重定向的问题。

curl -L -O http://www.theitroad.local/download/databak1902.tar

如何使用curl下载多个文件

类似如下命令:

curl -O url1 -O url2
curl -O https://www.theitroad.local/download/databak1902.tar \
     -O https://www.theitroad.local/download/etc.tar.gz

如何使用curl下载受密码保护的文件

使用以下语法之一:

curl ftp://username:[email protected]:21/path/to/backup.tar.gz
curl --ftp-ssl -u UserName:PassWord ftp://ftp1.theitroad.local:21/backups/07/07/2012/mysql.blog.sql.tar.gz
curl https://username:[email protected]/file/path/data.tar.gz
curl -u Username:Password https://server1.theitroad.local/file/path/data.tar.gz

curl设置代理服务器下载文件

语法如下:

curl -x proxy-server-ip:PORT -O url
curl -x 'http://Hyman:[email protected]:3128' -v -O https://dl.theitroad.local/pdfdownloads/b8bf71be9da19d3feeee27a0a6960cb3/569b7f08/cms/631.pdf

使用curl下载文件

curl命令可以提供有用的信息,尤其是HTTP标头。因此,可以使用此类信息来调试服务器问题。让我们看一下curl命令的一些例子。传递-v以查看完整的请求发送和从Web服务器接收的响应。

curl -v url
curl -o output.pdf -v https://www.theitroad.local/files/sticker/sticker_book.pdf

在不下载文件的情况下获取HTTP标头信息

另一个有用的选项是获取HTTP标头。所有HTTP服务器都具有命令HEAD,该命令用于获取文档的标头。例如,当您只想查看HTTP响应标头而不下载数据或实际文件时:

curl -I url
curl -I https://www.theitroad.local/files/sticker/sticker_book.pdf -o output.pdf

使用curl时如何跳过SSL验证?

传递-k选项可以跳过SSL检查。

curl -k url
curl -k https://www.theitroad.local/

curl如何限制下载速度?

使用--limit-rate选项可以限制curl传输文件的速度。默认是字节/秒。

curl --limit-rate {speed} url
curl --limit-rate 200 https://www.theitroad.local/
curl --limit-rate 3m https://www.theitroad.local/

curl如何设置用户代理

通过-A选项来设置用户代理。

curl -A 'user agent name' url
curl -A 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0' https://google.com/

使用CURL上传文件

curl不仅可以下载文件,还可以上传文件:

curl -F "var=@path/to/local/file.pdf" https://url/upload.php