文章

Linux文件下载

Linux文件下载

  • 背景

    在Linux中常用的命令行下载工具:wgetcurl

  • wget

    参考地址:https://www.cnblogs.com/jianlilistu/p/10006234.html

    选项:
    -a<日志文件>:在指定的日志文件中记录资料的执行过程;
    -A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;
    -b:进行后台的方式运行wget;
    -B<连接地址>:设置参考的连接地址的基地地址;
    -c:继续执行上次终端的任务;
    -C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on;
    -d:调试模式运行指令;
    -D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔;
    -e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令;
    -h:显示指令帮助信息;
    -i<文件>:从指定文件获取要下载的URL地址;
    -l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔;
    -L:仅顺着关联的连接;
    -r:递归下载方式;
    -nc:文件存在时,下载文件不覆盖原有文件;
    -nv:下载时只显示更新和出错信息,不显示指令的详细执行过程;
    -q:不显示指令执行过程;
    -nh:不查询主机名称;
    -v:显示详细执行过程;
    -V:显示版本信息;
    --passive-ftp:使用被动模式PASV连接FTP服务器;
    --follow-ftp:从HTML文件中下载FTP连接文件。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
    # 下载整个http或者ftp站点
    # 下载首页
    wget http://place.your.url/here
    # 使用-x会强制建立服务器上一模一样的目录
    wget -x http://place.your.url/here
      
    # 下载单个文件
    wget http://www.linuxde.net/testfile.zip
      
    # 下载并以不同的文件名保存
    wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
      
    # 断点续传
    wget -c http://www.linuxde.net/testfile.zip
      
    # 限速下载
    wget --limit-rate=300k http://www.linuxde.net/testfile.zip
      
    # 后台下载
    wget -b http://www.linuxde.net/testfile.zip
      
    # 测试下载链接
    wget --spider URL
      
    # 增加重试次数
    wget --tries=40 URL
      
    # 下载多个文件
    wget -i filelist.txt(该文件中保存着多个文件下载地址,以换行符分割)
    或者
    wget URL1 URL2 URL3 URL4 ...
      
    # FTP下载
    wget ftp-url
    wget --ftp-user=USERNAME --ftp-password=PASSWORD url
      
    # 使用wget –mirror镜像网站 
    ## 下面的例子是下载整个网站到本地。 
    wget –mirror -p –convert-links -P ./LOCAL URL 
    > –miror:开户镜像下载 
    > -p:下载所有为了html页面显示正常的文件 
    > –convert-links:下载后,转换成本地的链接 
    > -P ./LOCAL:保存所有文件和目录到本地指定目录 
    
  • curl

    参考地址:https://www.cnblogs.com/hujiapeng/p/8470099.html

    选项:
    -A/--user-agent <string>              	设置用户代理发送给服务器
    -b/--cookie <name=string/file>    			cookie字符串或文件读取位置
    -c/--cookie-jar <file>                  操作结束后把cookie写入到这个文件中
    -C/--continue-at <offset>            		断点续转
    -D/--dump-header <file>              		把header信息写入到该文件中
    -e/--referer                            来源网址
    -f/--fail                               连接失败时不显示http错误
    -o/--output                             把输出写到该文件中
    -O/--remote-name                      	把输出写到该文件中,保留远程文件的文件名
    -r/--range <range>                      检索来自HTTP/1.1或FTP服务器字节范围
    -s/--silent                             静音模式。不输出任何东西
    -T/--upload-file <file>                 上传文件
    -u/--user <user[:password]>      				设置服务器的用户和密码
    -w/--write-out [format]                	什么输出完成后
    -x/--proxy <host[:port]>              	在给定的端口上使用HTTP代理
    -#/--progress-bar                       进度条显示当前的传送状态
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    # 请求某地址,返回字符串页面
    curl https://www.linux.com
      
    # 下载文件,并设置下载后保存的文件名
    curl -o newname.sh http://www.linux.com/hello.sh
      
    # 下载文件,使用源文件的文件名
    curl -O http://www.linux.com/hello.sh
      
    # 下载多个文件
    curl -O 地址1 -O 地址2 -O 地址3 ...
      
    # 下载文件【可能重定向】
    curl -O -L http://www.linux.com/hello.sh
      
    # 访问https下载https文件
    curl -k --tlsv1 -O "https://xxx.com/1.png"
    参数说明:
    > -k/--insecure            允许不使用证书到SSL站点
    > -1/--tlsv1               使用TLSv1(SSL)
    > -o/--output              把输出写到该文件中
    > -O/--remote-name         把输出写到该文件中,保留远程文件的文件名
    > -r/--range <range>       检索来自HTTP/1.1或FTP服务器字节范围
      
    # 伪造referer(盗链)
    curl -e "www.linux.com" http://mail.linux.com
      
    # 循环下载
    curl -O http://www.linux.com/dodo[1-5].JPG
      
    # 分块下载
    curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
    curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
    curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
    cat dodo1_part* > dodo1.JPG
      
    # 通过ftp下载文件
    curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG
    curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG
      
    # 显示下载进度条
    curl -# -O http://www.linux.com/dodo1.JPG
      
    # 断点续传
    curl -C -O http://www.linux.com/dodo1.JPG
      
    # 上传文件
    curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/
    
本文由作者按照 CC BY 4.0 进行授权