使用FTP命令行下载文件是许多系统管理员和开发人员在服务器管理、数据迁移或日常文件传输中常用的技能,FTP(File Transfer Protocol,文件传输协议)是一种基于TCP/IP协议的应用层协议,支持客户端与服务器之间的文件传输,相比图形化工具,命令行FTP具有高效、自动化和跨平台的优势,尤其适合批量处理或脚本化操作,本文将详细介绍FTP命令行下载的使用方法,包括连接服务器、浏览目录、传输文件等核心步骤,并附上常见问题的解答。

FTP命令行连接与登录
在使用FTP命令行下载文件前,首先需要与FTP服务器建立连接,打开终端(Windows下为cmd或PowerShell,Linux/macOS下为Terminal),输入以下命令:
ftp [服务器IP或域名]ftp ftp.example.com,如果服务器使用非默认端口(如21),可通过ftp -p [端口号] [服务器IP]指定,连接成功后,服务器会提示输入用户名和密码,如果是匿名FTP,用户名通常为anonymous,密码可留空或使用邮箱地址,登录成功后,命令行会显示ftp>提示符,表示已进入FTP交互模式。
FTP基本操作命令
在FTP交互模式下,需通过命令控制文件传输,以下是常用命令及其功能:
| 命令 | 功能 | 示例 |
|---|---|---|
ls | 列出当前目录下的文件和子目录 | ls |
dir | 列出文件详细信息(类似ls -l) | dir |
cd [目录名] | 切换到指定目录 | cd /pub |
pwd | 显示当前所在目录 | pwd |
get [远程文件名] | 下载单个文件 | get example.txt |
mget [文件名1] [文件名2] ... | 批量下载多个文件 | mget *.txt |
bin | 切换到二进制传输模式(推荐用于非文本文件) | bin |
ascii | 切换到ASCII模式(适用于文本文件) | ascii |
prompt | 关闭交互式提示(用于批量下载时避免确认) | prompt |
bye | 退出FTP连接 | bye |
文件下载步骤详解
切换到二进制模式:
下载非文本文件(如压缩包、图片、程序等)前,必须先执行bin命令,确保文件以二进制格式传输,避免内容损坏,文本文件(如.txt、.csv)可使用ascii模式,但现代FTP工具默认推荐二进制模式以兼容所有文件类型。
(图片来源网络,侵删)浏览并定位文件:
使用ls或dir列出服务器目录内容,通过cd命令进入目标文件所在目录,若文件位于/home/user/download,则依次执行cd home、cd user、cd download,可通过pwd确认当前路径。下载单个文件:
使用get命令下载文件,下载report.zip,输入get report.zip,默认情况下,文件会保存在本地当前目录(执行FTP命令前所在的终端目录),若需指定本地保存路径,可在get命令后添加本地路径,如get report.zip C:\Downloads\report.zip(Windows)或get report.zip /home/localuser/Downloads/report.zip(Linux)。批量下载文件:
若需下载多个文件,可使用mget命令,结合通配符可简化操作,例如mget *.zip下载所有.zip文件,默认情况下,mget会对每个文件提示确认,输入y继续,若需跳过提示,先执行prompt命令关闭交互模式,再运行mget。验证下载结果:
下载完成后,可通过本地系统的ls或dir命令检查文件是否成功保存,或使用md5sum(Linux)或certutil -hashfile(Windows)校验文件哈希值,确保与服务器文件一致。
(图片来源网络,侵删)
高级技巧与注意事项
- 被动模式(PASV):若客户端位于防火墙后,需启用被动模式以避免连接问题,执行
pasv命令后,数据传输会由客户端主动发起,适用于NAT环境。 - 断点续传:部分FTP服务器支持断点续传,若下载中断,重新执行
get命令时,FTP会从断点继续传输(需服务器支持REST命令)。 - 脚本化操作:可通过编写批处理脚本(Windows)或Shell脚本(Linux)实现自动化下载,在Linux中创建
download.sh:#!/bin/bash ftp -n <<EOF open ftp.example.com user username password bin cd /remote/path get file1.zip get file2.zip bye EOF
其中
-n表示自动跳过登录提示,<<EOF与EOF为FTP命令序列。 - 安全性问题:FTP传输未加密,密码和文件内容可能被窃取,敏感操作建议使用SFTP(基于SSH的文件传输协议)或FTPS(FTP over SSL/TLS)替代。
相关问答FAQs
Q1: FTP下载时提示“Permission denied”,如何解决?
A: 此错误通常由权限不足引起,可尝试以下方法:
- 确认FTP用户对目标文件有读取权限(联系服务器管理员调整权限);
- 检查当前目录是否正确(使用
pwd确认); - 若文件属于其他用户,尝试切换到对应目录或使用
get时指定完整路径(如get /home/user/file.txt)。
Q2: 如何通过FTP命令行下载整个目录?
A: FTP本身不支持直接递归下载目录,但可通过组合命令实现:
- 在本地创建临时目录,切换至该目录;
- 使用
mget *下载目录下所有文件; - 若需下载子目录文件,需手动进入子目录后重复
mget操作。
更高效的方式是使用wget(支持-r递归参数)或lftp(支持mirror命令),lftp -u username,password ftp.example.com -e "mirror /remote/path /local/path; exit"
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/457118.html<
