Linux 系统中,FTP(File Transfer Protocol)是一种常用的文件传输协议,用于在客户端和服务器之间进行文件上传、下载等操作,虽然出于安全考虑,许多场景下更推荐使用 SFTP 或 SCP,但 FTP 仍因其简单易用而被广泛使用,以下将详细介绍 Linux 中 FTP 的常用命令,包括连接、文件传输、目录操作等,并通过表格形式归纳核心命令,帮助用户快速上手。

FTP 连接与登录命令
使用 FTP 前,需先通过命令连接到 FTP 服务器,基本连接命令为 ftp,后接服务器 IP 地址或域名,连接后,根据服务器要求输入用户名和密码进行登录。
ftp [服务器IP/域名]
示例:ftp 192.168.1.100或ftp ftp.example.com,执行后会尝试匿名登录或提示输入用户名。open [服务器IP/域名]
若已启动 FTP 客户端但未连接,可通过此命令重新连接,如open 192.168.1.100。user [用户名] [密码]
匿名登录失败时,手动指定用户名和密码,如user admin password123。close
关闭当前连接,但仍停留在 FTP 客户端界面,可执行open重新连接其他服务器。bye或quit
退出 FTP 客户端,完全结束会话。
文件传输命令
FTP 核心功能是文件传输,需区分上传(从本地到服务器)和下载(从服务器到本地),并注意传输模式(ASCII 或二进制)。
传输模式设置
ascii
设置传输模式为 ASCII,适用于文本文件(如 .txt、.csv),确保文件格式兼容性。binary
设置传输模式为二进制,适用于非文本文件(如 .zip、.jpg、.exe),避免文件损坏。(重要:传输二进制文件前务必执行此命令)
文件下载(从服务器到本地)
get [远程文件名] [本地文件名]
下载服务器单个文件,可指定本地保存名称,如get test.txt local_test.txt(若省略本地文件名,则与远程同名)。mget [远程文件名通配符]
批量下载文件,支持通配符,如mget *.txt(下载所有 .txt 文件),mget data_?.csv(下载 data_1.csv、data_2.csv 等)。prompt
关闭交互提示,执行mget时无需逐个确认文件,直接批量下载。
文件上传(从本地到服务器)
put [本地文件名] [远程文件名]
上传本地单个文件到服务器,如put report.doc server_report.doc。mput [本地文件名通配符]
批量上传文件,如mput *.jpg(上传所有 .jpg 文件)。
目录操作命令
FTP 中通过目录命令切换、查看服务器和本地的文件路径,方便定位传输目标。
服务器目录操作
pwd
显示当前所在的服务器目录路径,如257 "/home/user" is current directory。cd [远程目录]
切换服务器目录,如ftp> cd /var/www(切换到 /var/www 目录)。ls [远程目录]
列出当前服务器目录下的文件和子目录,可指定路径,如ls /tmp。dir [远程目录]
列出详细信息(权限、大小、日期等),功能类似ls -l,如dir显示当前目录详情。mkdir [远程目录名]
在服务器创建新目录,如mkdir backup。rmdir [远程目录名]
删除服务器空目录,若目录非空需先删除内部文件。
本地目录操作
执行本地系统命令,如! pwd(查看本地当前路径)、! ls -l(列出本地文件详情)。lcd [本地目录]
切换本地工作目录,如lcd /home/user/download(将本地目录切换至 /home/user/download)。
文件与目录管理命令
文件重命名与删除
rename [旧文件名] [新文件名]
重命名服务器文件,如rename old.txt new.txt。delete [远程文件名]
删除服务器单个文件,如delete temp.log。mdelete [远程文件名通配符]
批量删除服务器文件,如mdelete *.tmp,需配合prompt关闭交互提示。
文件权限与属性(部分 FTP 服务器支持)
chmod [权限模式] [文件名]
修改服务器文件权限,如chmod 755 script.sh(设置所有者可读写执行,组和其他用户可读执行)。
其他实用命令
status
显示当前 FTP 连接状态,包括传输模式、连接类型等。help [命令名]或? [命令名]
查看命令帮助,如help get显示get命令的用法说明。hash
开启传输进度显示,传输每个数据块(通常为 1024 字节)时显示 ,直观判断传输进度。
核心 FTP 命速查表
| 功能分类 | 命令 | 说明 |
|---|---|---|
| 连接与登录 | ftp [IP/域名] |
连接 FTP 服务器 |
user [用户名] [密码] |
手动输入用户名和密码登录 | |
bye/quit |
退出 FTP 客户端 | |
| 传输模式 | ascii |
设置 ASCII 模式(文本文件) |
binary |
设置二进制模式(非文本文件) | |
| 文件下载 | get [远程文件] |
下载单个文件 |
mget [文件通配符] |
批量下载文件 | |
| 文件上传 | put [本地文件] |
上传单个文件 |
mput [文件通配符] |
批量上传文件 | |
| 服务器目录操作 | pwd |
显示当前服务器目录路径 |
cd [目录] |
切换服务器目录 | |
ls/dir |
列出服务器文件/目录(dir 显示详细信息) |
|
| 本地目录操作 | lcd [目录] |
切换本地工作目录 |
! [命令] |
执行本地系统命令(如 ! ls) |
|
| 文件管理 | rename [旧名] [新名] |
重命名服务器文件 |
delete [文件] |
删除服务器文件 | |
| 其他 | status |
显示当前连接状态 |
hash |
开启传输进度显示( 标识) |
相关问答 FAQs
问题 1:FTP 传输时出现文件损坏,如何解决?
解答:文件损坏通常是由于传输模式设置错误导致的,FTP 默认使用 ASCII 模式,适用于文本文件,但传输二进制文件(如图片、压缩包、程序等)时,需先执行 binary 命令切换至二进制模式,二进制模式会保留文件原始数据,避免因字符编码转换导致文件损坏,上传 .zip 文件时,顺序应为:ftp> binary → ftp> put local.zip。

问题 2:如何查看 FTP 服务器上的文件列表,并过滤出特定扩展名的文件?
解答:FTP 服务器文件列表可通过 ls 或 dir 命令查看,但两者均不支持直接过滤,可通过以下方法实现:
- 使用通配符查看部分文件:如
ls *.txt可列出当前目录下所有.txt文件,但需注意部分 FTP 服务器可能不支持通配符过滤。 - 结合本地命令过滤:若服务器支持,可通过
dir将结果输出到本地文件,再用本地命令过滤。dir > file_list.txt,退出 FTP 后执行grep "\.txt$" file_list.txt过滤出.txt文件。 - 使用第三方工具:如
lftp(更强大的 FTP 客户端),支持更灵活的过滤,lftp ftp://user:pass@server -e "ls *.txt; exit"。

