递归下载ftp服务器上的文件

最近遇到一个问题,想下载http://ftp.ebi.ac.uk/pub/databases/metagenomics/mgnify_genomes/zebrafish-fecal/v1.0/all_genomes/MGYG0002993/文件夹下嵌套的子目录及文件,使用wget下载

wget -r -np -nH --cut-dirs=5  -P ./ http://ftp.ebi.ac.uk/pub/databases/metagenomics/mgnify_genomes/zebrafish-fecal/v1.0/all_genomes/MGYG0002993/

-r:递归下载。下载指定目录下的所有内容,包括子目录和文件。
-np:不向上导航。只下载指定目录及其子目录中的内容,不会下载父目录中的文件。防止 wget 超出指定的目录层级,避免下载不相关的文件。
-nH:不创建主机名目录。默认情况下,wget 会在当前目录下创建一个以主机名命名的目录(如 ftp.ebi.ac.uk),并将下载的文件放入其中。使用 -nH 可以避免创建此主机名目录,使文件直接下载到指定的本地目录中。
--cut-dirs=5:去掉前导目录层级。这个选项用于去掉 URL 中指定数量的目录层级。在这个例子中,--cut-dirs=5 表示去掉 URL 中前 5 个目录
-P ./:指定本地保存目录。

结果如下


image.png

进入到v1.0下面的目录,最终只有一个index.html


image.png

下载单个文件没问题

wget http://ftp.ebi.ac.uk/pub/databases/metagenomics/mgnify_genomes/zebrafish-fecal/v1.0/all_genomes/MGYG0002993/MGYG000299300/genomes1/MGYG000299300.gff.gz

后来了解到把http改为ftp就好了

wget -r -np -nH --cut-dirs=5  -P ./ ftp://ftp.ebi.ac.uk/pub/databases/metagenomics/mgnify_genomes/zebrafish-fecal/v1.0/all_genomes/MGYG0002993/

ftp (File Transfer Protocol) 代表文件传输协议,http代表浏览网页和下载内容的协议。单个文件下载时以http开头却可以成功是因为这里http服务器可以充当ftp服务器的代理。但是http没有内置的递归目录传输功能,导致递归下载是不行的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容