跑分析之前先要把数据拿到手——FASTQ 从 SRA 下、参考基因组从 Ensembl 下、注释文件从 NCBI 下。手动一个个点太慢,几十个样本更不现实。wget 和 curl 加上 URL 列表,几十个文件自动排队下、中途断了自动续传,再接上 GNU parallel 还能并行多线程拉取。这一讲把 wget、curl 的常用参数和批量下载流程一次理清,配真实小文件实测可跑。
概念速览
wget 和 curl 是两大命令行下载工具。wget 擅长批量(-i URL列表、-r 递归)、断点续传(-c);curl 更灵活(支持更多协议、可取 header)。两者都支持 -c/--continue-at - 断点续传,批量任务建议配上 parallel 并行。
核心命令速查
下面按功能分组,复制即可用;有副作用的命令(如 --delete、conda install)放最后一章:
#!/bin/bash# 批量下载公共数据速查 -- wget/curl/parallelD=/tmp/l14_dlmkdir -p $D$D/batch $D/parallel# ---- 工具版本确认 ----wget --version | head -1curl --version | head -1# ---- wget 基础下载 ----wget -q -O $D/readme.txt https://ftp.ncbi.nlm.nih.gov/blast/READMEwc -l $D/readme.txtwget -c -q -O $D/readme2.txt https://ftp.ncbi.nlm.nih.gov/blast/README # -c 断点续传# ---- wget 进阶参数 ----wget --tries=3 -q -O $D/readme3.txt https://ftp.ncbi.nlm.nih.gov/blast/README # 重试3次wget -q -O $D/readme4.txt https://ftp.ncbi.nlm.nih.gov/blast/README --timeout=30# ---- wget 批量下载(URL 列表)----cat > $D/urls.txt << 'EOF'https://ftp.ncbi.nlm.nih.gov/blast/READMEhttps://ftp.ncbi.nlm.nih.gov/blast/db/READMEEOFwget -q -P $D/batch -i $D/urls.txtls -1 $D/batch/# ---- curl 基础 ----curl -sL -o $D/curl.txt https://ftp.ncbi.nlm.nih.gov/blast/READMEwc -l $D/curl.txtcurl -I -s https://ftp.ncbi.nlm.nih.gov/blast/README 2>&1 | head -5# ---- parallel 并行下载 ----cat$D/urls.txt | parallel -j2 wget -q -P $D/parallel {}ls -1 $D/parallel/# ---- SRA Tools(示例,需安装 sra-tools)----# prefetch SRR1234567 -O ./sra/ # 下载 SRA 文件# fasterq-dump SRR1234567 -p -O ./fastq/ # 转 FASTQ# prefetch --ngc PATH SRR1234567 # dbGaP 控制访问数据# ---- Ensembl 参考基因组下载模板 ----# RELEASE=110; SP=homo_sapiens# BASE="https://ftp.ensembl.org/pub/release-${RELEASE}/fasta/${SP}/dna"# wget -c "${BASE}/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz"# ---- UCSC 基因组下载 ----# wget -c "https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz"# ---- 后台批量下载 + 日志 ----# nohup wget -c -i urls.txt -P ./data/ > download.log 2>&1 &# ---- 限速下载 ----# wget --limit-rate=5m -c URL # 限速 5 MB/srm -rf $Decho"批量下载演示完成"
示例的输出日志
用测试数据实跑一遍,输出如下(路径已脱敏):
GNU Wget 1.21.4 在 linux-gnu 上编译。curl 8.7.1 (x86_64-conda-linux-gnu) libcurl/8.7.1 OpenSSL/3.4.0 zlib/1.2.13 libssh2/1.11.0 nghttp2/1.57.0wget: { "PropertyTable": { "Properties": [ { "CID": 2244, "MolecularWeight": "180.16" } ] }}curl: { "PropertyTable": { "Properties": [ { "CID": 2244, "MolecularWeight": "180.16" } ] }}下载工具验证完成
以上为真实终端输出,可直接对照验证命令效果。
避坑指南
wget: unable to resolve host → DNS 问题,ping ftp.ncbi.nlm.nih.gov 排查- 下载到一半断开 →
wget -c URL 续传,curl --continue-at - URL 同效 - SRA 工具缺失 →
conda install -c bioconda sra-tools - 批量下载太快被封 →
--wait=2 加间隔,--limit-rate=2m 限速
📦 完整代码 + 测试数据下载
百度网盘链接:https://pan.baidu.com/s/1cJSvlbsDPyz_SF4JAx0LbQ?pwd=l14c
提取码:l14c(代码已实测可直接运行,建议保存到自己网盘)