FTP(文件传输协议)命令行工具是一种基于文本的实用程序,用于在客户端和服务器之间传输文件,它提供了比图形化界面更直接、更灵活的操作方式,尤其适合服务器管理员、开发者或需要批量处理文件的用户,FTP命令行工具的核心功能包括文件上传、下载、目录浏览、权限管理等,其操作依赖于一系列简洁的命令指令。

基本连接与身份验证
使用FTP命令行工具的第一步是建立与服务器的连接,通过在终端输入ftp [服务器地址],客户端将尝试与指定FTP服务器建立连接。ftp ftp.example.com会尝试连接到ftp.example.com,连接成功后,服务器通常会提示输入用户名和密码进行身份验证,匿名FTP服务器允许使用anonymous作为用户名,并以任意电子邮件地址作为密码,若需退出FTP会话,可输入quit或bye命令。
目录操作
连接成功后,用户需要浏览服务器上的目录结构。ls命令用于列出当前目录下的文件和子目录,类似于Linux系统中的ls命令;若需更详细的文件信息(如权限、大小、修改时间),可使用dir命令,切换目录通过cd [目录名]实现,例如cd public会进入名为public的子目录;返回上一级目录则使用cd ..,本地目录的切换命令为lcd [本地目录路径],用于指定上传文件时本地文件的存储位置或下载文件的保存路径。
文件传输
文件传输是FTP的核心功能,上传文件使用put [本地文件名] [远程文件名],例如put local.txt remote.txt会将本地文件local.txt上传至服务器并重命名为remote.txt;若未指定远程文件名,则默认与本地文件名相同,下载文件则使用get [远程文件名] [本地文件名],例如get remote.txt local.txt会将服务器上的remote.txt下载到本地并重命名,批量传输时,mput [本地文件名1] [本地文件名2] ...可上传多个文件,mget [远程文件名1] [远程文件名2] ...可下载多个文件,传输过程中,可通过hash命令开启或关闭传输进度显示(符号代表已传输的数据块)。
文件与目录管理
除了传输,FTP命令行工具还支持基本的文件和目录管理,创建远程目录使用mkdir [目录名],删除远程目录则需先清空目录内容,再通过rmdir [目录名]执行删除(部分服务器支持-r参数递归删除),删除远程文件使用delete [文件名]或rm [文件名],重命名文件通过rename [旧文件名] [新文件名]实现,文件类型设置也很重要,默认情况下,FTP以ASCII模式传输文本文件,适用于.txt、.html等文件;但二进制文件(如.zip、.jpg、.exe)必须通过binary命令切换为二进制模式传输,否则可能导致文件损坏。

高级功能与注意事项
FTP命令行工具支持一些高级功能,如被动模式(passive),在被动模式下,数据连接由客户端发起,适用于客户端位于防火墙后的场景,主动模式(passive的关闭状态)则由服务器发起数据连接,适合服务器端防火墙限制较少的环境,命令可临时退出FTP会话并返回本地终端,例如!ls会在本地终端执行ls命令后返回FTP会话。
需要注意的是,FTP协议在传输过程中未加密,用户名和密码可能被窃取,因此敏感数据传输建议使用SFTP(基于SSH的安全文件传输)或FTPS(FTP over SSL/TLS),部分命令的参数和选项可能因FTP服务器软件(如vsftpd、ProFTPD)的不同而略有差异,需结合服务器文档调整。
常见FTP命令速查表
| 命令 | 功能描述 | 示例 |
|---|---|---|
open [地址] |
连接FTP服务器 | open ftp.example.com |
close |
关闭当前连接 | close |
ls |
列出远程目录文件 | ls |
dir |
列出远程目录详细信息 | dir |
cd [目录] |
切换远程目录 | cd pub |
lcd [目录] |
切换本地目录 | lcd /home/user |
put [文件] |
上传文件 | put file.txt |
get [文件] |
下载文件 | get file.txt |
mput [文件] |
批量上传文件 | mput *.txt |
mget [文件] |
批量下载文件 | mget *.zip |
binary |
切换为二进制传输模式 | binary |
ascii |
切换为ASCII传输模式 | ascii |
delete [文件] |
删除远程文件 | delete old.txt |
mkdir [目录] |
创建远程目录 | mkdir new_folder |
rmdir [目录] |
删除远程目录 | rmdir empty_folder |
rename [旧名] |
重命名文件 | rename old.txt new.txt |
passive |
切换为被动模式 | passive |
! [命令] |
执行本地终端命令 | !ls |
quit |
退出FTP会话 | quit |
相关问答FAQs
Q1: FTP和SFTP有什么区别?为什么推荐使用SFTP?
A1: FTP(文件传输协议)是一种不加密的传输协议,数据以明文形式传输,存在安全隐患;而SFTP(SSH文件传输协议)基于SSH加密,所有数据(包括用户名、密码和文件内容)均经过加密处理,安全性更高,SFTP支持更高级的功能(如文件权限管理、压缩传输),且通常使用单一的22端口,便于防火墙配置,传输敏感数据时强烈推荐使用SFTP。
Q2: 如何通过FTP命令行工具上传整个文件夹?
A2: 标准FTP命令本身不支持直接上传文件夹,但可通过以下间接方法实现:

- 使用压缩文件:在本地将文件夹压缩为
.zip或.tar.gz文件,通过put命令上传后,在服务器端解压。 - 结合脚本:编写本地脚本(如Shell脚本),遍历文件夹中的所有文件,依次执行
mput命令上传。 - 使用第三方工具:部分FTP客户端(如lftp)支持
mirror命令,可直接同步整个文件夹(例如mirror -R /local/folder /remote/folder将本地文件夹上传至服务器),若服务器支持,也可使用-r参数(如put -r folder),但需确认服务器是否启用此功能。
