利用bash脚本批量下载数据(并行)

利用bash脚本批量下载数据(并行)

首先在下载目录中创建包含以下内容的.sh脚本:

1
2
#!/bin/bash
cat list.txt | xargs -n 1 -P 5 wget

这个命令会做以下事情:

  1. cat list.txt - 打开名为 list.txt 的文件,并将其内容输出到标准输出(通常是命令行窗口)。
  2. | - 管道操作符,将 cat list.txt 的输出作为下一个命令 xargs 的输入。
  3. xargs -n 1 -P 5 wget - xargs 命令用来构建和执行命令(wget),-n 1 表示每次传递一个参数给 wget-P 5 表示同时运行 5 个 wget 命令。

因此,整个命令的目的是从 list.txt 文件中读取每一行作为一个 URL,并使用 wget 命令来同时下载这些 URL 所指向的资源,最多同时运行 5 个下载任务。

其次在下载目录中创建包含所需全部下载链接的list.txt文档:

1
2
3
http://esgf-data1.llnl.gov/thredds/fileServer/css03_data/CMIP6/CMIP/MIROC/MIROC6/historical/r1i1p1f1/day/psl/gn/v20191016/psl_day_MIROC6_historical_r1i1p1f1_gn_18500101-18591231.nc
http://esgf-data1.llnl.gov/thredds/fileServer/css03_data/CMIP6/CMIP/MIROC/MIROC6/historical/r1i1p1f1/day/psl/gn/v20191016/psl_day_MIROC6_historical_r1i1p1f1_gn_18600101-18691231.nc
http://esgf-data1.llnl.gov/thredds/fileServer/css03_data/CMIP6/CMIP/MIROC/MIROC6/historical/r1i1p1f1/day/psl/gn/v20191016/psl_day_MIROC6_historical_r1i1p1f1_gn_18700101-18791231.nc

注意list.txt文档的文件格式编码需设置为unix格式:

1
2
3
4
5
6
7
8
# 打开文件
vi test.sh

# 修改编码格式
:set ff=unix

# 保存退出
:wq

注:Chrome浏览器有个很好用的插件叫Link Grabber可以获取网页的全部下载链接,搭配使用更方便。