为什么在单个 shell 脚本中运行多个针对 ENA 的 wget 命令时 wget 会失败?

问题描述 投票:0回答:1

我想从欧洲核苷酸档案库下载与特定生物项目 (PRJEB21446) 相关的 FASTQ 文件。有一个按钮可以生成和下载 shell 脚本,其中包含与 BioProject 关联的所有 FASTQ 文件的 wget 命令。伟大的!这给了我一个包含以下命令的脚本:

wget -nc [ftp-link-to-sample1.fastq.gz]
wget -nc [ftp-link-to-sample2.fastq.gz]
...
wget -nc [ftp-link-to-sample40.fastq.gz]

编辑: 这是 ENA 脚本的前 5 行:

wget -nc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/004/ERR2014384/ERR2014384_1.fastq.gz
wget -nc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/006/ERR2014386/ERR2014386_1.fastq.gz
wget -nc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/001/ERR2014361/ERR2014361_1.fastq.gz
wget -nc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/009/ERR2014369/ERR2014369_1.fastq.gz
wget -nc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/007/ERR2014367/ERR2014367_1.fastq.gz

但是,当我尝试使用

sh script_from_ENA.sh
运行脚本时,第一个文件下载没有任何问题,但之后的所有文件都卡在 0% 大约 20 秒,然后显示以下内容:

2023-08-14 10:54:01 (0.00 B/s) - Data transfer aborted.
Retrying.

wget
然后尝试一遍又一遍地下载同一文件,但没有成功。

花了整个上午尝试各种解决方法后,我最终通过将所有 URL 放入一个文件中并在 for 循环中运行

wget
解决了问题,如下所示:

sed 's/wget -nc //' script_from_ENA.sh > url-list
for i in `cat url-list` ; do wget -nc $i ; done

这就像一个魅力,下载的文件没有任何问题,但我仍然很好奇为什么 ENA 生成的脚本不起作用。是

wget
的问题还是 ENA 服务器切断了我的连接?

如果有人可以提供见解或解释,我将非常感激 - 谢谢!

bash bioinformatics wget fastq
1个回答
0
投票

请注意,如果您有 URL 列表,则无需执行此操作

sed 's/wget -nc //' script_from_ENA.sh > url-list
for i in `cat url-list` ; do wget -nc $i ; done

as

wget
对于这种情况有选项,即
-i file
--input-file=file
,正如
wget
手册页
所说的那样

从本地或外部文件读取 URL。

就您而言,如果您有

urls.txt
,就像这样

ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/004/ERR2014384/ERR2014384_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/006/ERR2014386/ERR2014386_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/001/ERR2014361/ERR2014361_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/009/ERR2014369/ERR2014369_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR201/007/ERR2014367/ERR2014367_1.fastq.gz

你可以这样做

wget -i urls.txt
© www.soinside.com 2019 - 2024. All rights reserved.