从FTP服务器下载文件,最通用且高效的命令是Linux/macOS环境下的wget和curl,而Windows环境则可以使用系统自带的ftp命令或PowerShell。下面我按照不同操作系统和真实使用场景,把完整的操作过程和细节讲清楚。
Linux从FTP服务器下载文件命令:wget实例详解
在Linux服务器或本地终端操作时,wget是我最推荐的工具,它的优势在于支持断点续传、递归下载,而且参数简洁,适合脚本自动化。
wget下载单个文件的基本命令
打开终端,直接输入以下格式即可完成下载:
wget ftp://用户名:密码@服务器地址/文件路径
我需要从内网服务器168.1.100的/pub目录下载名为backup.tar.gz的备份文件,用户是admin,密码是123456,命令就是:
wget ftp://admin:123456@192.168.1.100/pub/backup.tar.gz
下载完成后,文件会保存在当前目录,这里提醒一个细节:包含特殊字符的密码必须URL编码,例如密码为P@ssw0rd时,需要将写作%40,以避免和连接符冲突。
使用curl命令的备选方案
部分最小化安装的Linux发行版没有预装wget,此时可以用curl:
curl -O ftp://admin:123456@192.168.1.100/pub/backup.tar.gz
-O参数表示将远端文件保存为本地同名文件,如果你需要另存为自定义文件名,把-O换成小写的-o 新文件名即可。
递归下载整个目录的命令
当你需要把某个FTP目录下的所有文件都拉取到本地,wget的递归参数可以一次搞定:
wget -r ftp://admin:123456@192.168.1.100/pub/
-r表示递归下载,命令执行后会在本地生成一个名为pub的目录,内部结构与服务器完全一致,如果后续还需要增量更新,可以追加-c参数做断点续传,避免重复下载已完成的大文件。
Windows的FTP服务器下载文件命令与PowerShell方案
Windows系统的处理方式和Linux差异较大,因为系统自带的ftp.exe是交互式命令,不支持在命令行直接拼接下载指令,很多人初次使用时会发现输入命令后卡在ftp>提示符下,这是正常的。
利用系统自带ftp命令完成登录与下载
打开CMD窗口(Win+R后输入cmd),按以下流程操作:

ftp 192.168.1.100
系统提示输入用户名,输入admin后回车,再输入密码123456,看到ftp>提示符后,依次输入:
cd pub get backup.tar.gz bye
get是下载单个文件的指令,如果要下载目录下所有文件,将get替换为mget,此时系统会逐个询问是否下载,逐个输入y比较繁琐,建议在ftp>提示符下先输入prompt关闭交互询问,再执行mget ,这样就能连续下载全部文件。
PowerShell直接下载的具体写法
在PowerShell 5.0及以上版本中,微软提供了更丰富的命令支持,使用System.Net.WebClient类可以实现非交互式下载:
$ftpUrl = "ftp://192.168.1.100/pub/backup.tar.gz" $user = "admin" $pass = "123456" $webclient = New-Object System.Net.WebClient $webclient.Credentials = New-Object System.Net.NetworkCredential($user, $pass) $webclient.DownloadFile($ftpUrl, "D:downloadbackup.tar.gz")
这段脚本将远端文件直接保存到D盘download目录,实际使用中,建议把这段代码保存为.ps1文件,方便重复执行。
FTP命令行批量下载文件方法:脚本化操作
单次手动下载适合临时使用,但在真实运维场景中,经常需要定时批量同步文件,这里分享一个我常用的Linux Shell脚本思路,特别适合游戏服务器每日备份同步或日志归档场景。
利用lftp实现多文件并行下载
lftp是一个比wget更强大的FTP客户端,支持多线程并行下载,先安装:
yum install -y lftp # CentOS apt install -y lftp # Ubuntu
然后执行:
lftp -u admin,123456 192.168.1.100 -e "cd /pub; mget .tar.gz; quit"
这个命令会下载远端/pub目录下所有以.tar.gz结尾的文件。lftp内置了断点续传和自动重连机制,传输大文件时比wget更稳定,在弱网环境下优势明显。
配置定时任务的完整步骤
如果你希望每天凌晨自动从FTP拉取最新数据,参考下面的脚本:
#!/bin/bash cd /data/ftp_backup lftp -u admin,123456 192.168.1.100 -e "mirror --only-newer /pub ./; quit"
mirror命令会对比本地与远端文件的时间戳,只下载新增或更新的文件,将该脚本保存为

sync_ftp.sh,赋予执行权限后用crontab添加定时规则:
chmod +x sync_ftp.sh crontab -e # 添加以下行,每天凌晨2点执行 0 2 /bin/bash /data/ftp_backup/sync_ftp.sh
使用mget下载时跳过交互确认的实用技巧
如果你不喜欢lftp,坚持用系统自带ftp,批量下载时频繁确认文件名的操作确实让人头疼,可以先登录后在ftp>提示符后输入prompt,让mget命令不再逐文件确认,这是Windows和Linux自带ftp工具都支持的通用操作。
下载时常见的认证、端口与断点续传问题
即使命令本身正确,实际操作中仍会遇到各类问题,我梳理了三个高频故障点。
端口不一定是21:指定非默认端口的命令写法
部分FTP服务器出于安全考虑使用非标准端口,比如2121,wget和curl都支持端口指定:
wget ftp://admin:123456@192.168.1.100:2121/pub/backup.tar.gz
Windows的ftp命令则使用以下写法:
ftp 192.168.1.100 2121
连接超时或登录失败的排查方向
FTP协议存在主动模式(PORT)和被动模式(PASV)之分,如果你发现命令执行后卡在连接服务器或227 Entering Passive Mode阶段,大概率是服务器防火墙限制了FTP数据端口,wget和curl默认使用被动模式,而Windows的ftp命令默认使用主动模式。当一端在内网、一端在外网时,优先尝试被动模式连接,lftp可以通过set ftp:passive-mode on强制指定:
lftp -u admin,123456 192.168.1.100 -e "set ftp:passive-mode on; mget .zip; quit"
大文件下载中断后的续传操作
网络波动导致下载中断很常见,wget直接加上-c参数继续下载:
wget -c ftp://admin:123456@192.168.1.100/pub/large_file.zip
对于Windows的ftp命令,在ftp>提示符下输入reget,同样可以实现断点续传:
ftp> reget large_file.zip
图形化工具的效率对比与适用场景
如果你操作频率较低,或者不熟悉命令行,图形化工具是更直观的选择,但明确一点:图形化工具本质上是将上述命令封装成了可视化按钮。
FileZilla Client与Xftp的功能对比
FileZilla是最流行的跨平台FTP客户端,支持站点管理器保存多台服务器信息,拖拽上传下载,操作直观,Xftp则与Xshell配合默契,在Windows上经常成对出现,下表总结了两个工具的核心差异:

| 对比维度 | FileZilla Client | Xftp |
|---|---|---|
| 平台支持 | Windows/macOS/Linux | Windows |
| 多标签连接 | 支持 | 支持 |
| 与Xshell联动 | 不支持 | 支持(直接拖拽打开远程文件) |
| 传输速度 | 支持多线程(需配置) | 依赖单线程,大文件略慢 |
| 免费情况 | 免费 | 家庭/学校免费 |
实际上多数情况下两者都能胜任日常任务,工程实践中,批量同步务必选命令行,零散操作选图形化更省心。
浏览器直接访问FTP的局限性
在浏览器地址栏输入ftp://192.168.1.100也能访问FTP并下载文件,但Chrome从版本72以后移除了对FTP协议的原生支持,Edge和Firefox也逐步淘汰,因此在这类浏览器中直接访问FTP链接会失败,不建议再使用这种方式。
Q&A:从FTP服务器下载文件用什么命令最稳定
Q1:从FTP服务器下载文件用什么命令最稳定?
Linux环境优先推荐wget -c,它支持断点续传且内置超时重试机制;Windows环境推荐安装lftp或使用PowerShell脚本,系统自带的ftp命令功能单一且无脚本化能力,仅适合临时应急。
Q2:如何区别主动模式和被动模式下命令参数的不同?
wget默认使用被动模式,无需额外参数,如果服务器要求主动模式,可以添加--no-passive-ftp参数切换,lftp需要在交互环境中使用set ftp:passive-mode off指定主动模式,Windows的ftp命令默认主动模式,但可以在提示符下输入literal PASV切换为被动模式。
Q3:wget与curl下载FTP文件时,哪个更节省服务器资源?
wget在下载过程中占用内存更少,且原生支持递归下载与断点续传,更适合批量操作;curl的优势在于支持更多协议和更细粒度的参数控制,适合写复杂脚本,日常运维下载FTP文件,行业共识认为wget的性价比最高。
从FTP服务器下载文件的核心逻辑并不复杂:掌握wget和curl的基础用法应对Linux场景,熟悉Windows的ftp命令和PowerShell方案覆盖日常所需,再配合lftp解决批量与自动化难题,这套组合足以应对绝大多数工作需求。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/793571.html


评论列表(1条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是使用部分,给了我很多新的思路。感谢分享这么好的内容!