在Linux下用ftp和lftp从FTP站点下载文件

背景介绍

最近我需要通过FTP站点下载合作者提供的测序数据,因此研究了一下怎么快速地从FTP站点下载文件。

测试的工具主要是ftplftp

什么是FTP?

FTP,全称为“File Transfer Protocol”(文件传输协议),是互联网上的一种老牌协议,用于在网络上的计算机之间传输文件。想象一下,FTP就像是一位资深的邮差,专门负责把文件从一个地方送到另一个地方。

使用FTP下载数据

安装ftp

Linux系统上一般自带了ftp这个命令行工具,如果没有的话你得安装一下(需要管理员权限):

# Debian and Ubuntu
sudo apt-get install ftp
# centos
sudo yum install ftp

登陆FTP站点

安装完成后,我们就可以登录FTP站点了。在终端输入:

ftp your-ftp-host

一般而言,这个host是一个ip地址。

然后输入用户名密码,你就连接上FTP啦。

下载文件

在FTP站点,你可以使用get命令加上文件名下载文件。输入:

get your-file

但是我实测完发现这个比较慢,所以我转头搜了一下有没有别的命令,然后就找到了一个叫lftp的命令。

🚀 什么是lftp

lftp 要比刚刚介绍的 ftp 功能更加强大和灵活。它支持FTP, HTTP, SFTP, FISH等协议,并且拥有一大堆令人眼花缭乱的特性,比如镜像下载、断点续传、并行下载和带宽限制等。简而言之,用lftp 就完事儿了。

安装lftp

可以用conda一键安装lftp

conda install -c conda-forge lftp

帮助文档如下:

lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]

基本常用的选项就是-p-u

登陆FTP站点

使用lftp登录FTP站点与使用ftp类似。在终端输入:

lftp your-ftp-host

然后输入用户名和密码,即可进入FTP站点。
当然,也可以直接一步到位:

lftp -u <USER>,<PassWD> <host>
# 例如:
lftp -u test,test123 127.0.0.1

登录上之后就可以用类似于linux的一些命令来查询ftp站点里的信息,例如输入ls可以列出所有的文件和文件夹,或者使用find在ftp站点里进行快速查找文件。详细的可用命令的列表可以参考:

https://lftp.yar.ru/lftp-man.html

如何用lftp下载文件

如果你就下载单个文件,可以使用lftpget或者pget

使用lftpget下载

lftpget,它允许你不用登录FTP站点,直接从命令行直接下载文件:

lftpget ftp://username:password@your-ftp-host/path/to/your-file

当然,你也可以写循环来完成多个文件的下载


for i in `ls *md5`
do 
lftpget -v -c  ftp://<USER>:<PassWD>@<IP host>/Project/${i%.*}
done

用pget进行单个文件下载

如果你想加速单个文件的下载,可以使用pget命令,它可以使用多线程进行下载,加快下载速度。

首先用lftp登录ftp站点,然后在lftp的提示符下输入:

pget -c -n 10 Project/test_R1.fastq.gz

这里-c是断点续传,-n可以指定并行的数量。

这样pget就可以使用多个连接来加速文件的下载啦。

用mget进行多文件的下载

如果你要下载多个文件,可以使用mget
下面是 mget 命令的基本语法:

mget [options] <file1> [<file2> ...]

这里 <file1>, <file2>, ... 是你要下载的文件的名称或通配符。

mget 命令支持以下选项:

  • -c:继续之前被中断的下载。
  • -O <directory>:设置下载文件的输出目录。
  • -E: 在成功传输后删除源文件
  • -e: 在传输前删除目标文件
  • --exclude=<pattern>:排除与给定模式匹配的文件。
  • --include=<pattern>:仅包含与给定模式匹配的文件。

这里-e和-E分别是:

  • -E:此选项用于在文件成功从远程服务器下载到本地之后,删除远程服务器上的源文件。这意味着文件已经被成功下载,然后才会删除远程的副本。
  • -e:此选项用于在从远程服务器下载文件之前,先删除本地的目标文件。这通常在您希望覆盖本地已有的同名文件时使用。删除本地文件是为了确保不会有冲突或错误,然后从远程服务器下载新的文件。

-E选项涉及到远程服务器上的文件,而-e选项涉及到本地的文件。在任何情况下,文件的删除都是在传输完成或开始之后进行的,以确保不会丢失数据。

举例:

  1. 使用默认设置下载一个目录中的所有文件:
lftp -c 'mget ftp://example.com/path/to/directory/*'
  1. 从一个目录下载所有的 .txt 文件,并将它们保存到本地的 my_downloads 目录:
lftp -c 'mget -O my_downloads ftp://example.com/path/to/directory/*.txt'
  1. 使用排除和包含选项下载指定类型的文件:
lftp -c 'mget --include=*.txt --exclude=*backup* ftp://example.com/path/to/directory/*'

请注意,使用 mget 下载大量文件时,可能会占用大量的网络带宽和系统资源。在使用此命令时要谨慎,并考虑可能对网络和服务器的影响。

萌哥碎碎念

断更了很久,一方面当时确实是要准备oral exam,没有精力持续更新。

另一方面是,我突然找不到更新的理由。

或者说,我没想明白我更新这个公众号的意义是什么。

人嘛,就经常会陷入寻找意义和找不到意义的循环和陷阱里。现在大概想明白一些了,持续输出本身就是一种意义。

另外,这也是一种能力和核心价值的体现。

并且是一种很好的对自我的整理和锻炼。

不管是为了自己而写,还是为了在座的各位,反正,不输出、不展示别人就不知道你有多厉害。

让世界看到我的价值。

对了,为了让自己写起来更轻松愉快,我让GPT4给我写个初稿,然后在上面改。目前感觉GPT生成的初稿还不是很合我的心意,接下来多调试一些prompt让它更聪明一些。又多了一种乐趣。

祝你心情愉快。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容