最近遇到一個問題,想下載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:遞歸下載。下載指定目錄下的所有內(nèi)容,包括子目錄和文件。
-np:不向上導航。只下載指定目錄及其子目錄中的內(nèi)容,不會下載父目錄中的文件。防止 wget 超出指定的目錄層級,避免下載不相關的文件。
-nH:不創(chuàng)建主機名目錄。默認情況下,wget 會在當前目錄下創(chuàng)建一個以主機名命名的目錄(如 ftp.ebi.ac.uk),并將下載的文件放入其中。使用 -nH 可以避免創(chuàng)建此主機名目錄,使文件直接下載到指定的本地目錄中。
--cut-dirs=5:去掉前導目錄層級。這個選項用于去掉 URL 中指定數(shù)量的目錄層級。在這個例子中,--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) 代表文件傳輸協(xié)議,http代表瀏覽網(wǎng)頁和下載內(nèi)容的協(xié)議。單個文件下載時以http開頭卻可以成功是因為這里http服務器可以充當ftp服務器的代理。但是http沒有內(nèi)置的遞歸目錄傳輸功能,導致遞歸下載是不行的。