Linux FTP命令参数有哪些?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 参数 正文

ftp 是一个经典的、功能强大的命令行文件传输协议客户端,虽然现在更推荐使用更安全的 sftp(基于 SSH)或 lftp(功能更丰富),但 ftp 仍然是许多系统管理员和用户必备的工具。


ftp 命令启动时的参数

当你直接在终端输入 ftp 命令时,通常会进入交互模式,但你也可以在启动时直接指定参数。

基本连接参数

参数 全称 描述 示例
host - 指定要连接的 FTP 服务器的主机名或 IP 地址,这是最常用的方式。 ftp ftp.example.com
-A anonymous 以匿名用户身份登录。 ftp -A ftp.example.com
-u user user 指定登录用户名。 ftp -u myuser ftp.example.com
-p port port 指定连接的端口号,默认为 21。 ftp -p 2121 ftp.example.com

调试与输出参数

参数 全称 描述 示例
-d debug 启用调试模式,显示客户端与服务器之间发送的所有 FTP 命令,对于排查连接问题非常有用。 ftp -d ftp.example.com
-v verbose 冗长模式,在文件传输过程中,会显示服务器的响应信息,默认情况下,mgetmput 是静默的。 ftp -v ftp.example.com
-n noauto-login 禁止自动登录,在连接到服务器后,不会提示你输入用户名和密码,需要你手动执行 user 命令,常用于脚本中。 ftp -n ftp.example.com
-i prompt 关闭交互式提示,在执行 mgetmput 时,不会对每个文件进行“下载/上传 (y/n)?”的询问。 ftp -i ftp.example.com

安全相关参数

参数 全称 描述 示例
-s:file script 指定一个脚本文件,ftp 启动后会自动执行该文件中的命令,非常适合自动化任务。 ftp -s:commands.txt ftp.example.com
-z tls 强制使用 TLS(SSL)加密连接,这是连接到现代、安全 FTP 服务器(如 FTPS)的关键参数。 ftp -z ftp.example.com

其他参数

参数 全称 描述
-g glob 禁用文件名展开(通配符 , 等),在处理文件名中包含特殊字符的文件时很有用。
-e escape 对文件名中的特殊字符(如空格)进行转义。

进入 ftp> 交互模式后的命令

连接成功后,你会看到 ftp> 提示符,在这里可以输入各种命令来操作远程服务器。

连接与认证类命令

命令 描述 示例
open <host> [port] 打开到指定主机和端口的连接。 open ftp.example.com 21
close 关闭当前连接,但仍留在 ftp> 提示符下。 close
disconnect close disconnect
byequit 退出 ftp 客户端。 bye
user <username> [password] 以指定用户身份登录,如果省略密码,会提示输入。 user myuser mypass
anonymous 快速以匿名用户登录(通常邮箱作为密码)。 anonymous
account <password> 在需要时提供账户密码(如使用 user 命令后服务器要求)。 account myacpass

目录与文件浏览类命令

命令 描述 示例
pwd Print Working Directory,显示当前在远程服务器上的工作目录。 pwd
ls [remote-dir] [local-file] 列出远程服务器上指定目录的内容,如果指定 local-file,则结果会保存到本地文件。 ls /pub
dir [remote-dir] [local-file] ls 类似,但显示更详细的列表信息(权限、大小、日期等)。 dir
cd <remote-dir> Change Directory,切换远程服务器上的目录。 cd /pub/docs
lcd <local-dir> Local Change Directory,切换本地机器上的目录,所有上传/下载的默认路径都会改变。 lcd /home/user/downloads
执行本地 shell 命令。 !ls (列出本地当前目录)

文件传输类命令

命令 描述 示例
get <remote-file> [local-file] 从远程服务器下载一个文件到本地,如果指定 [local-file],则重命名下载的文件。 get readme.txt
mget <remote-files> Multiple GET,从远程服务器下载多个文件,支持通配符。 mget *.zip
put <local-file> [remote-file] 从本地上传一个文件到远程服务器,如果指定 [remote-file],则重命名上传的文件。 put myreport.pdf
mput <local-files> Multiple PUT,从本地上传多个文件到远程服务器,支持通配符。 mput *.log
append <local-file> [remote-file] 将本地文件追加到远程文件的末尾。 append notes.txt existing.txt
ascii 设置传输模式为 ASCII(文本),用于传输 .txt, .html, .sh 等文件,会自动处理换行符。 ascii
binary 设置传输模式为 BINARY(二进制),用于传输 .zip, .jpg, .pdf, .exe 等所有非文本文件,必须使用此模式,否则文件会损坏。 binary
hash 开启/关闭哈希标记显示,传输文件时,每传输 1024 字节会显示一个 号,可以直观地看到传输进度。 hash

文件与目录操作类命令

命令 描述 示例
mkdir <dirname> 在远程服务器上创建一个新目录。 mkdir new_folder
rmdir <dirname> 在远程服务器上删除一个空目录。 rmdir old_folder
delete <remote-file> 在远程服务器上删除一个文件。 delete temp.txt
mdelete <remote-files> 在远程服务器上删除多个文件,支持通配符。 mdelete *.tmp
rename <oldname> <newname> 在远程服务器上重命名文件或目录。 rename old.txt new.txt
!rm <local-file> 使用本地 shell 的 rm 命令删除本地文件。 !rm unwanted.log

其他实用命令

命令 描述 示例
status 显示当前 ftp 会话的各种设置,如传输模式、是否开启 hash、连接信息等。 status
passivepassive off 切换被动/主动模式,如果连接有 NAT 或防火墙问题,切换模式通常能解决,现代服务器多使用被动模式。 passive
help 显示 ftp 命令的帮助信息。 help get
debug 开启/关闭调试模式(与启动时的 -d 参数作用相同)。 debug 3 (数字越大,信息越详细)

综合示例

示例 1:基本下载

# 1. 连接到匿名 FTP 服务器
$ ftp ftp.gnu.org
# 2. 匿名登录,通常会提示输入邮箱作为密码
Name (ftp.gnu.org:your_local_user): anonymous
331 Anonymous login ok, send your complete e-mail address as password
Password: # 输入你的邮箱地址,然后回车
# 3. 切换到二进制传输模式,确保文件完整性
ftp> binary
# 4. 进入要下载的目录
ftp> cd gnu/bash
# 5. 查看目录内容
ftp> ls
# 6. 下载一个文件到本地当前目录
ftp> get bash-5.2.tar.gz
# 7. 查看本地目录,确认文件已下载
ftp> !ls
# 8. 退出 ftp
ftp> bye

示例 2:使用脚本自动化上传

假设你有一个 upload_commands.txt 文件,内容如下:

open ftp.example.com
myusername
mypassword
binary
cd /incoming
lcd /home/user/project
put project.zip
bye

执行命令:

$ ftp -s:upload_commands.txt

这个命令会自动读取脚本文件,依次执行其中的命令,完成登录、切换目录、上传文件并退出的全过程,无需任何人工干预。


重要提醒:ftp 的安全性

ftp 协议在传输所有数据(包括用户名和密码)时都是明文的,非常不安全!

在公共网络或不信任的环境中,强烈建议使用以下替代方案:

  1. sftp: 基于 SSH 协议,是 scp 的交互式版本,所有传输都经过加密,这是目前最推荐的文件传输方式。

    $ sftp user@host
  2. lftp: 一个功能极其强大的、支持多种协议(包括 FTP, FTPS, HTTP, SFTP 等)的命令行客户端,它支持队列、后台传输、镜像同步等高级功能,并且默认情况下会尝试使用安全的连接。

    $ lftp ftp.example.com
    lftp ftp.example.com:~> user myuser
    lftp ftp.example.com:~> set ftp:ssl-force on # 强制使用 FTPS
    lftp ftp.example.com:~> mirror /remote/dir /local/dir
  3. scp / rsync: 适合非交互式的、安全的单文件或多文件/目录复制任务。

希望这份详细的指南能帮助你更好地掌握 Linux ftp 命令!

-- 展开阅读全文 --
头像
mac pro ma356拆机内部结构有何变化?
« 上一篇 今天
Surface 32GB拆机图,内部有何特别设计?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]