Linux命令行连接FTP是系统管理和文件传输中常见的操作,尤其适用于服务器环境或需要自动化脚本的场景,FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在客户端和服务器之间传输文件,Linux系统提供了多种FTP客户端工具,如ftp、lftp和curl等,每种工具都有其特点和适用场景,本文将详细介绍如何使用这些命令行工具连接FTP服务器,包括基本操作、高级功能以及常见问题的解决方法。

使用ftp命令连接FTP服务器
ftp是Linux系统中最基础的FTP客户端工具,预装在大多数发行版中,它的功能简单直接,适合基本的文件传输操作。
基本连接
要连接到FTP服务器,可以使用以下命令:
ftp ftp.example.com
如果FTP服务器使用非默认端口(如21),可以通过-p参数指定:
ftp -p 2121 ftp.example.com
连接后,系统会提示输入用户名和密码,如果是匿名FTP服务器,可以使用anonymous作为用户名,无需密码或使用任意邮箱地址作为密码。

常用操作
连接成功后,进入ftp>命令行界面,以下是常用命令及其功能:
| 命令 | 功能 |
|---|---|
ls |
列出当前目录的文件 |
cd |
切换目录 |
get |
下载文件 |
put |
上传文件 |
mget |
批量下载文件 |
mput |
批量上传文件 |
lcd |
切换本地目录 |
bye |
退出FTP连接 |
下载文件example.txt:
get example.txt
上传文件localfile.txt:
put localfile.txt
被动模式与主动模式
FTP有两种传输模式:主动模式(Active)和被动模式(Passive),默认情况下,ftp命令使用主动模式,但在某些网络环境中(如存在防火墙),被动模式可能更适用,可以通过以下命令切换:

passive # 开启被动模式 active # 开启主动模式
使用lftp命令连接FTP服务器
lftp是一个功能更强大的FTP客户端,支持多种协议(如FTP、SFTP、HTTP等),并提供了更友好的交互界面和高级功能。
安装与基本连接
lftp通常需要手动安装,例如在Ubuntu/Debian系统中:
sudo apt install lftp
连接到FTP服务器:
lftp ftp.example.com
高级功能
lftp支持多标签、断点续传、后台任务等功能。
- 断点续传下载:
pget -n 5 example.txt # 使用5个线程下载
- 后台上传:
put localfile.txt -p &
批量操作
lftp支持脚本化操作,例如通过mirror命令同步目录:
mirror -R local_dir remote_dir # 上传整个目录
使用curl命令连接FTP服务器
curl是一个多功能工具,支持FTP协议,适合在脚本中快速传输文件。
基本下载与上传
下载文件:
curl -u username:password -O ftp://ftp.example.com/example.txt
上传文件:
curl -T localfile.txt -u username:password ftp://ftp.example.com/
高级选项
- 匿名下载:
curl -O ftp://ftp.example.com/example.txt
- 显示进度:
curl -u username:password -# -O ftp://ftp.example.com/example.txt
安全注意事项
FTP协议传输数据时默认不加密,存在安全风险,如果需要更安全的传输,建议使用SFTP(基于SSH)或FTPS(基于SSL/TLS)。
- 使用
lftp连接SFTP:lftp sftp://username@server
- 使用
curl连接FTPS:curl -u username:password --ftp-create-dirs -T localfile.txt ftps://ftp.example.com/
常见问题解决
- 连接超时:检查网络连接或尝试切换被动模式。
- 权限错误:确认FTP服务器上的用户权限和本地文件权限。
FAQs
-
如何避免在命令行中输入密码?
可以使用.netrc文件存储凭据,在用户目录下创建.netrc文件,添加以下内容:machine ftp.example.com login username password password然后设置文件权限为
600:chmod 600 ~/.netrc
这样
ftp或lftp会自动读取凭据,无需手动输入。 -
如何通过脚本自动化FTP传输?
可以使用lftp的脚本功能,创建一个脚本ftp_upload.sh:#!/bin/bash lftp -u username,password -e "put localfile.txt; bye" ftp.example.com
然后赋予执行权限:
chmod +x ftp_upload.sh
运行脚本即可自动上传文件。
