凌峰创科服务平台

Linux如何上传文件到FTP服务器?

使用 ftp 命令(最基础,但交互式)

ftp 是一个非常经典、几乎在所有 Linux 发行版上都预装的 FTP 客户端,它的特点是功能全面,但交互式操作可能对新手来说稍显复杂。

Linux如何上传文件到FTP服务器?-图1
(图片来源网络,侵删)

安装 ftp 客户端

ftp 已经默认安装,如果没有,可以使用以下命令安装:

  • 基于 Debian/Ubuntu 的系统:
    sudo apt-get update
    sudo apt-get install ftp
  • 基于 RHEL/CentOS/Fedora 的系统:
    sudo yum install ftp

连接到 FTP 服务器

在终端中输入以下命令,将 ftp.example.com 替换为你的 FTP 服务器地址:

ftp ftp.example.com

系统会提示你输入用户名和密码:

Name (ftp.example.com:your_local_username): your_ftp_username
331 Please specify the password.
Password:

输入密码后,如果认证成功,你会看到 ftp> 提示符。

Linux如何上传文件到FTP服务器?-图2
(图片来源网络,侵删)

上传文件

连接成功后,使用 putmput 命令上传文件。

  • 上传单个文件 (put): 假设你要上传当前目录下的 local_file.txt 到服务器的 /remote/directory/ 目录:

    # (可选) 切换到服务器上的目标目录
    cd /remote/directory/
    # 上传文件
    put local_file.txt

    你也可以在上传时重命名文件:

    put local_file.txt remote_file.txt
  • 上传多个文件 (mput): mput (multiple put) 可以一次性上传多个文件,通常配合通配符使用。

    Linux如何上传文件到FTP服务器?-图3
    (图片来源网络,侵删)
    # 上传所有 .txt 文件
    mput *.txt

    系统会逐个询问你是否要上传每个文件,输入 y 确认。

常用 FTP 命令

  • ls: 列出服务器当前目录下的文件。
  • cd <dir>: 切换服务器上的目录。
  • lcd <dir>: 切换你本地机器上的目录。
  • get <file>: 从服务器下载单个文件。
  • mget <files>: 从服务器下载多个文件。
  • 执行本地 shell 命令。!ls 可以查看本地当前目录的文件。
  • help: 获取所有可用命令的帮助。
  • byequit: 退出 FTP 会话。

使用 lftp 命令(功能强大,推荐)

lftp 是一个功能非常强大的文件传输客户端,它支持 FTP、FTPS、SFTP、HTTP 等多种协议,它的优点是支持后台传输、多线程、镜像同步,并且命令语法更接近 bash,用户体验更好。

安装 lftp

# Debian/Ubuntu
sudo apt-get install lftp
# RHEL/CentOS/Fedora
sudo yum install lftp

连接并上传文件

lftp 的强大之处在于可以直接在命令行中指定用户名、密码和服务器地址,实现一键登录。

  • 基本用法:

    lftp -u your_ftp_username,ftp_password ftp.example.com

    连接成功后,你会看到 lftp ftp.example.com:/> 提示符。

  • 上传单个文件:

    # 登录后,使用 put 命令
    put local_file.txt
  • 上传整个目录: lftp 可以轻松地递归上传整个目录及其所有内容。

    # 假设你要上传名为 my_project 的目录
    mirror -R ./my_project /remote/directory/
    • mirror: 用于同步目录。
    • -R: 表示反向同步,即从本地同步到远程(上传),如果不加 -R,则是从远程同步到本地(下载)。
  • 直接在命令行中执行操作(更便捷): 你甚至可以不用进入 lftp 交互式环境,直接在命令行中完成所有操作。

    # 格式: lftp -u <user>,<pass> <host> -e "<commands>; bye"
    lftp -u your_ftp_username,ftp_password ftp.example.com -e "put local_file.txt; bye"

    这个命令会自动登录,上传 local_file.txt,然后立即退出,非常适合在 Shell 脚本中使用。


使用 ncftp 命令(用户友好)

ncftpftp 的一个增强版,它提供了更友好的用户界面,例如支持命令历史记录、自动补全、更清晰的上传/下载进度显示等。

安装 ncftp

# Debian/Ubuntu
sudo apt-get install ncftp
# RHEL/CentOS/Fedora
sudo yum install ncftp

连接并上传文件

  • 连接服务器:

    ncftp ftp.example.com

    然后输入用户名和密码。

  • 上传文件: 连接成功后,使用 putmput 命令,用法与 ftp 类似,但体验更好。

    # 上传单个文件
    put local_file.txt
    # 上传多个文件
    mput *.log

    ncftp 在上传时会显示一个漂亮的进度条。


使用图形化工具(适合桌面用户)

如果你在使用 Linux 桌面环境(如 Ubuntu, Fedora),你可以直接使用文件管理器来操作 FTP 服务器,非常直观。

  1. 打开你的文件管理器(如 Nautilus, Dolphin, Thunar)。
  2. 在地址栏输入 ftp://<你的FTP服务器地址>,然后按回车。
  3. 系统会弹出对话框,要求你输入用户名和密码。
  4. 登录成功后,文件管理器会像浏览本地文件夹一样显示 FTP 服务器上的文件。
  5. 你只需将本地文件或文件夹直接拖拽到 FTP 窗口中即可完成上传。

安全性提醒:FTP vs. SFTP/FTPS

标准的 FTP 协议在传输所有数据(包括用户名和密码)时都是明文的,非常不安全,在生产环境中,强烈建议使用更安全的替代方案:

  • SFTP (SSH File Transfer Protocol): 基于 SSH 协议,通过加密通道传输所有数据,它使用的是 22 端口。

    • Linux 上传文件到 SFTP 服务器,最常用的命令是 scpsftp
    • scp 示例 (简单上传):
      # scp 本地文件 用户名@服务器地址:远程路径
      scp local_file.txt your_username@sftp.example.com:/remote/directory/
    • sftp 示例 (交互式,功能更丰富):
      sftp your_username@sftp.example.com
      # 登录后,put, get, cd, ls 等命令用法与 ftp 类似
      sftp> put local_file.txt
  • FTPS (FTP Secure): 在标准的 FTP 基础上增加了 SSL/TLS 加密层,它使用 990 端口。

    • 如果你的 FTP 服务器支持 FTPS,你可以配置 lftpFileZilla 等客户端使用 ftps:// 协议进行连接。

总结与推荐

方法 优点 缺点 推荐场景
ftp 系统预装,功能全面 交互式繁琐,不安全 简单、一次性的任务,或在不支持其他工具的旧系统上。
lftp 功能最强大,支持后台、多线程、脚本化 需要额外安装 强烈推荐,适合所有场景,尤其是需要自动化、批量上传或目录同步的场景。
ncftp 用户友好,有进度条 需要额外安装 适合喜欢在命令行操作但又觉得 ftp 太简陋的用户。
图形化工具 直观,无需记命令 需要桌面环境 适合 Linux 桌面用户,进行少量文件的手动拖拽操作。
scp/sftp 非常安全,基于 SSH 服务器需启用 SSH 服务 生产环境首选,只要服务器支持,就应优先使用 SFTP。

对于绝大多数现代 Linux 用户和服务器管理任务,首选 lftp 进行 FTP/FTPS 传输,或者直接使用 scp/sftp 进行安全的文件传输

分享:
扫描分享到社交APP
上一篇
下一篇