在Linux系统中,通过FTP(File Transfer Protocol)下载文件是常见的文件传输需求,尤其适用于跨平台、大文件传输或服务器管理场景,本文将详细介绍Linux环境下使用命令行工具和图形界面工具下载FTP文件的方法,包括基础操作、进阶技巧及注意事项,帮助用户高效完成文件传输任务。
Linux下FTP下载的基础命令行工具
Linux系统提供了多种FTP客户端工具,其中最常用的是ftp
(基础工具)、lftp
(增强工具)和wget
(支持HTTP/FTP的下载工具),可根据需求选择使用。
使用ftp
命令下载文件(基础工具)
ftp
是Linux系统自带的FTP客户端,支持基本的文件上传、下载、目录浏览等功能,适合简单操作。
基本操作步骤:
-
连接FTP服务器:
在终端输入ftp [服务器IP/域名]
,若需指定端口(非默认21端口),可使用ftp -p [端口] [服务器IP]
。ftp 192.168.1.100
连接后需输入FTP服务器的用户名和密码(若为匿名服务器,用户名通常为
anonymous
,密码留空或使用邮箱)。 -
浏览目录:
登录成功后,使用ls
列出当前目录文件,cd [目录名]
切换目录。ls cd /data/files
-
下载文件:
- 下载单个文件:使用
get [文件名]
,例如下载example.txt
:get example.txt
默认下载到当前本地目录(可通过
lcd [本地目录]
切换本地下载路径)。 - 下载多个文件:使用
mget [文件名1] [文件名2] ...
,或结合通配符批量下载,例如下载所有.txt
文件:mget *.txt
- 下载单个文件:使用
-
退出FTP:
完成下载后,输入bye
或quit
退出FTP连接。
注意事项:
ftp
命令不支持断点续传,若下载中断需重新开始;- 传输过程中无法显示进度条,需通过执行本地命令(如
!ls
查看本地文件)。
使用lftp
命令下载文件(增强工具)
lftp
是功能更强大的FTP客户端,支持断点续传、多线程下载、镜像同步等高级功能,适合大文件或批量下载场景,若系统未安装,可通过包管理器安装(如Ubuntu/Debian:sudo apt install lftp
;CentOS/RHEL:sudo yum install lftp
)。
基本操作步骤:
-
连接FTP服务器:
支持直接在命令中指定用户名和密码,lftp ftp://用户名:密码@服务器IP
匿名登录可省略用户名密码:
lftp ftp://服务器IP
。 -
浏览目录:
使用ls
或dir
列出文件,cd [目录名]
切换目录,pwd
显示当前路径。 -
下载文件:
- 下载单个文件:使用
get [文件名]
,支持断点续传(默认开启),get large_file.zip
- 批量下载:使用
mget [文件名1] [文件名2] ...
,或结合通配符,例如下载所有.zip
文件:mget *.zip
- 下载整个目录(镜像):使用
mirror [远程目录] [本地目录]
,例如将远程/data/files
目录完整下载到本地~/download
:mirror /data/files ~/download
参数说明:
-r
(递归下载)、-c
(断点续传)、-n
(不覆盖已存在文件)。 - 多线程下载:使用
pget -n [线程数] [文件名]
,例如用5线程下载大文件:pget -n 5 large_file.iso
- 下载单个文件:使用
-
退出
lftp
:
输入exit
或quit
。
优点:
- 支持断点续传、多线程,传输效率高;
- 可设置被动模式(
set ftp:passive-mode on
),解决防火墙连接问题; - 支持后台下载(
&
符号,如get file &
)。
使用wget
命令下载FTP文件(多功能工具)
wget
是常用的下载工具,支持HTTP、FTP、HTTPS协议,适合脚本自动化下载或批量处理。
基本语法:
wget [选项] FTP://[用户名:密码@服务器IP/文件路径]
常用选项及示例:
-
下载单个文件:
wget ftp://用户名:密码@192.168.1.100/data/example.txt
匿名下载可省略用户名密码:
wget ftp://192.168.1.100/pub/example.txt
。 -
断点续传:
使用-c
选项,若下载中断,再次执行命令可从断点继续:wget -c ftp://用户名:密码@服务器IP/large_file.zip
-
批量下载(递归):
使用-r
(递归下载)、-np
(不下载父目录)、-nH
(不创建主机目录),例如下载远程/data/files
下的所有文件:wget -r -np -nH ftp://用户名:密码@服务器IP/data/files
-
后台下载:
使用-b
选项,日志保存在wget-log
文件中:wget -b -c ftp://用户名:密码@服务器IP/large_file.iso
优点:
- 支持脚本自动化,适合定时任务(如
cron
); - 可结合
-i
选项从文件中读取URL列表批量下载; - 默认支持被动模式,无需额外配置。
FTP工具对比与选择
为方便用户选择工具,以下是ftp
、lftp
、wget
的对比:
工具名称 | 适用场景 | 优点 | 缺点 | 常用命令示例 |
---|---|---|---|---|
ftp |
简单单文件/小批量下载 | 系统自带,无需安装;操作直观 | 无断点续传、无进度条;功能单一 | get file.txt 、mget *.zip |
lftp |
大文件、批量下载、镜像同步 | 支持断点续传、多线程;功能强大 | 需额外安装;命令稍复杂 | mirror /remote /local 、pget -n 5 file |
wget |
脚本自动化、批量下载 | 支持HTTP/FTP/HTTPS;适合定时任务 | 批量下载时目录结构可能复杂 | wget -c -r ftp://.../data |
注意事项与常见问题
-
被动模式配置:
部分FTP服务器需开启被动模式(PASV)才能正常传输数据,在ftp
中可通过passive
命令开启,在lftp
中通过set ftp:passive-mode on
设置,wget
默认支持被动模式。 -
防火墙与端口:
FTP默认使用21号端口(控制端口)和20号端口(数据端口),若防火墙拦截,需开放对应端口,被动模式下数据端口可能随机,建议开放1024-65535端口范围。 -
权限问题:
确保本地下载目录有写入权限(如chmod 755 ~/download
),FTP服务器用户对目标文件有读取权限。 -
文件名编码:
若FTP服务器文件名包含中文,可能出现乱码,可通过lftp
的set file:charset utf8
设置编码为UTF-8。
相关问答FAQs
Q1:Linux下下载FTP文件时提示“Permission denied”,如何解决?
A:通常由本地权限或服务器权限问题导致。
- 本地权限:检查下载目录的写入权限,例如执行
chmod 755 /path/to/download
; - 服务器权限:确认FTP服务器用户对目标文件有读取权限,若为匿名服务器,检查
ftpusers
文件是否禁止匿名访问,或服务器配置是否允许下载。
Q2:如何批量下载FTP服务器上某个目录下的所有子目录及文件?
A:可根据工具选择不同方法:
- 使用
lftp
的mirror
命令:lftp ftp://用户名:密码@服务器IP mirror -r /remote/dir /local/dir # -r表示递归下载整个目录
- 使用
wget
的递归下载:wget -r -np -nH -R index.html ftp://用户名:密码@服务器IP/remote/dir
参数说明:
-np
(不下载父目录)、-nH
(不创建主机目录)、-R index.html
(排除默认的首页文件)。
通过以上方法,可高效完成Linux下的FTP文件下载任务,根据实际需求选择合适的工具和参数,确保传输稳定性和效率。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/29088.html