首先,直接在ENA上检索想要下载的数据,如:

有两个信息很重要,MD5值和Aspera链接。
选择TSV下载格式将信息下载下来,然后使用R进行处理,获得最终要的数据格式。R代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| rm(list = ls())
dir("data/生信挖掘/水稻多效基因/data/ENA下载信息/") %>% as.data.frame() %>% magrittr::set_names("file") -> df.file
all.ena = NULL
for (i in unique(df.file$file)) { sprintf("data/生信挖掘/水稻多效基因/data/ENA下载信息/%s", i) %>% readr::read_delim() %>% magrittr::set_names(c("Run", "md5", "link")) %>% dplyr::mutate(md5 = stringr::str_split(md5, ";"), link = stringr::str_split(link, ";")) %>% tidyr::unnest() %>% dplyr::mutate(file = stringr::str_split(link, "/") %>% sapply("[", 7)) %>% dplyr::select(Run, file, md5, link) %>% dplyr::bind_rows(all.ena) -> all.ena }
all.ena %>% dplyr::select(file, md5, link) %>% readr::write_delim("data/生信挖掘/水稻多效基因/data/ena.info.txt", delim = "\t", col_names = FALSE)
|
得到的文件长这样:

把这个文件上传到服务器,就可以开始下载了。批量下载代码(代码来自生信技能树微信公众号):
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 49 50 51 52 53 54
| #!/bin/bash
FILE_LIST="ena.info.txt"
MAX_RETRIES=10
if [ ! -f "$FILE_LIST" ]; then echo "文件列表文件 $FILE_LIST 不存在。" exit 1 fi
while read -r filename md5sum download_url; do echo "处理文件: $filename"
download_path="$filename"
retries=0
while [ $retries -lt $MAX_RETRIES ]; do echo "尝试下载文件 (尝试次数: $((retries + 1)) / $MAX_RETRIES)..."
ascp -QT -l 100m -P33001 -k 1 -i ~/mambaforge/envs/tools4bioinf/etc/asperaweb_id_dsa.openssh era-fasp@$download_url .
actual_md5=$(md5sum "$download_path" | awk '{print $1}')
if [ "$actual_md5" = "$md5sum" ]; then echo "文件 $filename 下载成功,并且MD5校验和正确。" break else echo "文件校验失败,正在重试..." rm "$download_path" retries=$((retries + 1)) fi done
if [ $retries -eq $MAX_RETRIES ]; then echo "文件 $filename 下载和校验失败,已达到最大重试次数。" fi done < "$FILE_LIST"
|
直接后台运行即可:
1 2
| nohup bash dl.sh > dl.log 2>&1 & echo 1646575 > dl.id
|
输出日志:
1 2 3 4 5 6
| 处理文件: SRR12976775_1.fastq.gz 尝试下载文件 (尝试次数: 1 / 10)... SRR12976775_1.fastq.gz 100% 1420MB 10.7Mb/s 10:12 Completed: 1454518K bytes transferred in 612 seconds (19438K bits/sec), in 1 file. 文件 SRR12976775_1.fastq.gz 下载成功,并且MD5校验和正确。
|