curl是一款免费开源的数据传输工具。可以支持的协议有:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP。
目前市面上出现的机型几乎都支持,一个字很牛。有人问了,这么好的东西哪里可以买到那?无需购买直接取用(http://curl.haxx.se/)
废话少说,直接开始。功能很强大,参数很多,只记录偶用过的参数。
1:-o/--output <file> 以文件名<file>保存至本地也就是重命名
-O/--remote-name 该参数以源端的名字保存
curl -o c:\page.html http://blog.youkuaiyun.com/jim_xsy/article/details/7284021
curl -O http://blog.youkuaiyun.com/jim_xsy/article/details/7284021
curl -O www.haxx.se//index.html -O curl.haxx.se//download.html 下载两个文件
2: -x/--proxy <host[:port]> 使用HTTP Proxy
-U/--proxy-user <user[:password]> 配置 HTTP Proxy用户名和密码
curl -x 10.11.11.30:8080 -U proxy:passwd -o c:\test.html http://blog.youkuaiyun.com/jim_xsy/article/details/7284021
3:-u/--user <user[:password]> 设置Server的用户名和密码
curl -u ftpname:ftppasswd ftp://ftp_ip:port/full/path/to/file
等价于:curl ftp://ftpname:ftppasswd@ftp_ip:port/full/path/to/file
4:-0(数字零), --http1.0 使用HTTP1.0,默认使用HTTP1.1
5:-r/--range <range> 下载指定字节大小文件
curl -r 0-99 http://www.get.this/ 获取文件前100bytes
curl -r 100- http://www.get.this/ 获取文件剩下的字节数
curl -r 0-99 ftp://www.get.this/README
6:-C, --continue-at <offset> 当之前传输失败后,使用该参数进行断点续传
C:\>curl -r 0-10240 -o H:\test.tar ftp://ftptest:123456@19.16.11.10:21/test.tar 下载前10240bytes
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10241 100 10241 0 0 128k 0 --:--:-- --:--:-- --:--:-- 115k
C:\>curl -C 10241 -o H:\test.tar ftp://ftptest:123456@19.16.11.10:21/test.tar 从10241bytes处恢复下载
** Resuming transfer from byte position 10241
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12.9M 100 12.9M 0 0 1457k 0 0:00:09 0:00:09 --:--:-- 1478k
如果不知道从哪里开始,使用命令"-C -" 自动判断。
7:[] 和 {} 用于批量传输
C:\>curl -o H:\Curl_Test\#2_#1.txt ftp://ftptest:123456@19.16.11.10:21/{aa,bb,cc}/[1-20].txt
#1是变量,指的是{aa,bb,cc}这部分,第一次取值aa,第二次取值bb,第三次取值cc
#2代表的变量,则是第二段可变部分---[1-20],取值从1逐一加到20
运行结果:
获取ftpserver上目录aa bb cc 下1.txt --- 20.txt 至本地目录H:\Curl_Test下。
下载后的文件名为:1_aa.txt --- 20_aa.txt
1_bb.txt --- 20_bb.txt
1_cc.txt --- 20_cc.txt
8:-T/--upload-file <file> 上传文件
curl -T H:\Curl_Test\1.txt -u ftptest:123456 ftp://19.16.11.10:21/dd/1.txt
9:-s/--silent 关闭信息的输出
不加该选项执行curl会输出下载文件的进度等信息,加了该参数则无输出。
10:-S/--show-error 该参数和-s一起使用,确保错误信息可以输出
11 --retry <num> 当数据传输发生错误时,持续连接num次
--retry-delay <seconds> 配置每次连接的间隙时间
--retry-max-time <seconds> 配置尝试连接的最大时间
EX:
C:\Program Files\PowerCmd>curl -# --retry 3 -T H:\Curl_Test\1.txt -u ftptest:12 ftp://19.16.11.10/dd/1.txt #使用错误的密码
Warning: Transient problem: FTP error Will retry in 1 seconds. 3 retries left.
Warning: Transient problem: FTP error Will retry in 2 seconds. 2 retries left.
Warning: Transient problem: FTP error Will retry in 4 seconds. 1 retries left.
curl: (67) Access denied: 530
12: -m/--max-time <seconds> 限制数据传输的最大时间
--max-filesize <bytes> 定义下载文件的最大字节数,如果需要下载的文件大于此值则不下载。 (HTTP/FTP专用选项)
Ex:
C:\>curl -m 3 -T H:\test.tar -u ftptest:123456 ftp://19.16.11.10/dd/test.tar #只持续下载3秒钟
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
40 12.9M 0 0 40 5376k 0 1767k 0:00:07 0:00:03 0:00:04 1780k
curl: (28) Operation timed out after 3000 milliseconds with 5505024 bytes received
C:\>curl --max-filesize 1024 -o H:\test.tar -u ftptest:123456 ftp://19.16.11.10/dd/test.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (63) Maximum file size exceeded
12:-v/--verbose 开启传输的详细日志输出
--trace <file> 输出整个Debug信息至文件file中
--trace-ascii <file> 和--trace作用类似,区别在于不输出十六进制的信息
--trace-time 在Debug日志中添加时间信息
13:-w/--write-out [format] 传输结束之后输出指定的信息,可以用于判断结束使用
-#/--progress-bar Display transfer progress as a progress bar
Ex:
C:\>curl -# -w "Transfer File 1.txt Successfull." -T H:\Curl_Test\1.txt -u ftptest:123456 ftp://19.16.11.10/dd/1.txt
######################################################################## 100.0%
Transfer File 1.txt Successfull.
C:\>
14:-i/--include 包含HTTP头信息
-I/--head 只输出HTTP头信息,FTP协议则输出文件的大小和修改时间等信息
-D/--dump-header <file> 输出协议头部信息至指定文件中
Ex:
C:\>curl -I curl.haxx.se/
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2012 06:15:45 GMT
Server: Apache
Last-Modified: Thu, 01 Mar 2012 06:05:05 GMT
ETag: "1a09a7-2e06-4ba283dcb8fb0"
Accept-Ranges: bytes
Content-Length: 11782
Vary: Accept-Encoding
Content-Type: text/html
C:\>curl -I -u ftptest:123456 ftp://19.16.11.10/dd/test.tar
Last-Modified: Thu, 01 Mar 2012 08:35:33 GMT
Content-Length: 13537280
Accept-ranges: bytes
14:-y/--speed-time 下载速度低于某一值(--speed-limit)超过此规定时间中断下载
-Y/--speed-limit 如果每秒下载速度低于此值则中断下载
--limit-rate <rate> 限制下载速度
Ex:
curl -Y 3000 -y 60 www.far-away-site.com #如果下载速度低于3000 bytes/sec超过1分钟,则中断下载
C:\>curl --limit-rate 100k -o H:\test.tar -u ftptest:123456 ftp://19.16.11.10/dd/test.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
15 12.9M 15 2099k 0 0 100k 0 0:02:11 0:00:20 0:01:51 99k
参考文档:http://www.cs.sunysb.edu/documentation/curl/
http://curl.haxx.se/docs/manpage.html
目前市面上出现的机型几乎都支持,一个字很牛。有人问了,这么好的东西哪里可以买到那?无需购买直接取用(http://curl.haxx.se/)
废话少说,直接开始。功能很强大,参数很多,只记录偶用过的参数。
1:-o/--output <file> 以文件名<file>保存至本地也就是重命名
-O/--remote-name 该参数以源端的名字保存
curl -o c:\page.html http://blog.youkuaiyun.com/jim_xsy/article/details/7284021
curl -O http://blog.youkuaiyun.com/jim_xsy/article/details/7284021
curl -O www.haxx.se//index.html -O curl.haxx.se//download.html 下载两个文件
2: -x/--proxy <host[:port]> 使用HTTP Proxy
-U/--proxy-user <user[:password]> 配置 HTTP Proxy用户名和密码
curl -x 10.11.11.30:8080 -U proxy:passwd -o c:\test.html http://blog.youkuaiyun.com/jim_xsy/article/details/7284021
3:-u/--user <user[:password]> 设置Server的用户名和密码
curl -u ftpname:ftppasswd ftp://ftp_ip:port/full/path/to/file
等价于:curl ftp://ftpname:ftppasswd@ftp_ip:port/full/path/to/file
4:-0(数字零), --http1.0 使用HTTP1.0,默认使用HTTP1.1
5:-r/--range <range> 下载指定字节大小文件
curl -r 0-99 http://www.get.this/ 获取文件前100bytes
curl -r 100- http://www.get.this/ 获取文件剩下的字节数
curl -r 0-99 ftp://www.get.this/README
6:-C, --continue-at <offset> 当之前传输失败后,使用该参数进行断点续传
C:\>curl -r 0-10240 -o H:\test.tar ftp://ftptest:123456@19.16.11.10:21/test.tar 下载前10240bytes
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10241 100 10241 0 0 128k 0 --:--:-- --:--:-- --:--:-- 115k
C:\>curl -C 10241 -o H:\test.tar ftp://ftptest:123456@19.16.11.10:21/test.tar 从10241bytes处恢复下载
** Resuming transfer from byte position 10241
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12.9M 100 12.9M 0 0 1457k 0 0:00:09 0:00:09 --:--:-- 1478k
如果不知道从哪里开始,使用命令"-C -" 自动判断。
7:[] 和 {} 用于批量传输
C:\>curl -o H:\Curl_Test\#2_#1.txt ftp://ftptest:123456@19.16.11.10:21/{aa,bb,cc}/[1-20].txt
#1是变量,指的是{aa,bb,cc}这部分,第一次取值aa,第二次取值bb,第三次取值cc
#2代表的变量,则是第二段可变部分---[1-20],取值从1逐一加到20
运行结果:
获取ftpserver上目录aa bb cc 下1.txt --- 20.txt 至本地目录H:\Curl_Test下。
下载后的文件名为:1_aa.txt --- 20_aa.txt
1_bb.txt --- 20_bb.txt
1_cc.txt --- 20_cc.txt
8:-T/--upload-file <file> 上传文件
curl -T H:\Curl_Test\1.txt -u ftptest:123456 ftp://19.16.11.10:21/dd/1.txt
9:-s/--silent 关闭信息的输出
不加该选项执行curl会输出下载文件的进度等信息,加了该参数则无输出。
10:-S/--show-error 该参数和-s一起使用,确保错误信息可以输出
11 --retry <num> 当数据传输发生错误时,持续连接num次
--retry-delay <seconds> 配置每次连接的间隙时间
--retry-max-time <seconds> 配置尝试连接的最大时间
EX:
C:\Program Files\PowerCmd>curl -# --retry 3 -T H:\Curl_Test\1.txt -u ftptest:12 ftp://19.16.11.10/dd/1.txt #使用错误的密码
Warning: Transient problem: FTP error Will retry in 1 seconds. 3 retries left.
Warning: Transient problem: FTP error Will retry in 2 seconds. 2 retries left.
Warning: Transient problem: FTP error Will retry in 4 seconds. 1 retries left.
curl: (67) Access denied: 530
12: -m/--max-time <seconds> 限制数据传输的最大时间
--max-filesize <bytes> 定义下载文件的最大字节数,如果需要下载的文件大于此值则不下载。 (HTTP/FTP专用选项)
Ex:
C:\>curl -m 3 -T H:\test.tar -u ftptest:123456 ftp://19.16.11.10/dd/test.tar #只持续下载3秒钟
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
40 12.9M 0 0 40 5376k 0 1767k 0:00:07 0:00:03 0:00:04 1780k
curl: (28) Operation timed out after 3000 milliseconds with 5505024 bytes received
C:\>curl --max-filesize 1024 -o H:\test.tar -u ftptest:123456 ftp://19.16.11.10/dd/test.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (63) Maximum file size exceeded
12:-v/--verbose 开启传输的详细日志输出
--trace <file> 输出整个Debug信息至文件file中
--trace-ascii <file> 和--trace作用类似,区别在于不输出十六进制的信息
--trace-time 在Debug日志中添加时间信息
13:-w/--write-out [format] 传输结束之后输出指定的信息,可以用于判断结束使用
-#/--progress-bar Display transfer progress as a progress bar
Ex:
C:\>curl -# -w "Transfer File 1.txt Successfull." -T H:\Curl_Test\1.txt -u ftptest:123456 ftp://19.16.11.10/dd/1.txt
######################################################################## 100.0%
Transfer File 1.txt Successfull.
C:\>
14:-i/--include 包含HTTP头信息
-I/--head 只输出HTTP头信息,FTP协议则输出文件的大小和修改时间等信息
-D/--dump-header <file> 输出协议头部信息至指定文件中
Ex:
C:\>curl -I curl.haxx.se/
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2012 06:15:45 GMT
Server: Apache
Last-Modified: Thu, 01 Mar 2012 06:05:05 GMT
ETag: "1a09a7-2e06-4ba283dcb8fb0"
Accept-Ranges: bytes
Content-Length: 11782
Vary: Accept-Encoding
Content-Type: text/html
C:\>curl -I -u ftptest:123456 ftp://19.16.11.10/dd/test.tar
Last-Modified: Thu, 01 Mar 2012 08:35:33 GMT
Content-Length: 13537280
Accept-ranges: bytes
14:-y/--speed-time 下载速度低于某一值(--speed-limit)超过此规定时间中断下载
-Y/--speed-limit 如果每秒下载速度低于此值则中断下载
--limit-rate <rate> 限制下载速度
Ex:
curl -Y 3000 -y 60 www.far-away-site.com #如果下载速度低于3000 bytes/sec超过1分钟,则中断下载
C:\>curl --limit-rate 100k -o H:\test.tar -u ftptest:123456 ftp://19.16.11.10/dd/test.tar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
15 12.9M 15 2099k 0 0 100k 0 0:02:11 0:00:20 0:01:51 99k
参考文档:http://www.cs.sunysb.edu/documentation/curl/
http://curl.haxx.se/docs/manpage.html