• wget同时下载多个文件


    使用wget下载文件

    # wget下载单个文件
    wget https://xxx.com/static/v1.mp4
    
    • 1
    • 2
    • 使用shell 脚本在一个命令中下载多个文件
    #!/bin/bash
    while read file; do
        wget ${file}
    done < demo.txt
    
    • 1
    • 2
    • 3
    • 4

    demo.txt 包含所有必须下载的文件,每个文件都有自己的一行

    https://xxx.com/static/v1.mp4
    https://xxx.com/static/v2.mp4
    https://xxx.com/static/v3.mp4
    
    • 1
    • 2
    • 3

    这种方法还是串行的下载文件,并不能节省下载时间。还可以通过并行下载文件来加快速度。

    使用 wget并行下载

    • Bash 方法

    使用& 将wget进程发送到后台

    #!/bin/bash
    while read file; do
        wget ${file} &
    done < demo.txt
    
    • 1
    • 2
    • 3
    • 4

    对wget每次调用都被派生到后台并在其自己单独的子 shell 中异步运行。
    尽管在并行下载文件,但这种方法不能反馈出错的信息。

    • wget Fork

    使用-b参数,让wget将自己Fork到后台

    #!/bin/bash
    while read file; do
        wget ${file} -b
    done < demo.txt
    
    • 1
    • 2
    • 3
    • 4

    就像&运算符一样,每个调用都被派生到后台并异步运行。但不同的是-b参数还提供了每次下载的日志文件。
    可以grep这些日志文件来检查没有发生错误

    • 使用xargs

    优雅的解决方案就是使用xargs,可以设置同时运行的最大进程数

    #!/bin/bash
    cat rumenz.txt | xargs -n 1 -P 2 wget -q
    
    • 1
    • 2

    使用-q静默方式。如果不设置xargs会将所有进程的输出重定向到 stdout,会输出很多信息。如果没有发生错误,它将以 0 值退出,否则以 1 值退出。

  • 相关阅读:
    c# --- 实现MyList列表
    【phpMyadmin】MYSQL突破secure_file_priv写shell提权
    Golang:uiprogress在终端实现进度条功能
    Spring之注解开发
    JavaScript学习笔记02
    Java 基础考核(一)
    【英语小作文】-相关
    JavaScript中的Null+浮点数你了解多少?
    hexo踩坑之点击页面跳转变下载文件
    计算机设计大赛 深度学习的动物识别
  • 原文地址:https://blog.csdn.net/ximaiyao1984/article/details/126883726