凌峰创科服务平台

Linux 上传文件到 FTP 服务器,命令该怎么用?

使用内置的 ftp 命令

ftp 是 Linux 系统自带的文件传输协议客户端,几乎所有发行版都预装了,但它比较基础,交互式操作,不太适合自动化脚本。

Linux 上传文件到 FTP 服务器,命令该怎么用?-图1
(图片来源网络,侵删)

基本步骤

  1. 打开终端

  2. 连接到 FTP 服务器

    ftp ftp.yourserver.com

    ftp.yourserver.com 替换为你的 FTP 服务器地址,你也可以指定端口:

    ftp -p 21 ftp.yourserver.com
  3. 输入用户名和密码: 连接成功后,服务器会提示你输入用户名和密码。

    Linux 上传文件到 FTP 服务器,命令该怎么用?-图2
    (图片来源网络,侵删)
    Name (ftp.yourserver.com:your_local_user): your_username
    Password:

    输入密码时,为了安全,终端是不会显示任何字符的(包括星号 ),这是正常的。

  4. 上传文件: 连接成功后,你将进入 ftp> 提示符,现在可以执行上传命令了。

    • 上传单个文件

      put /path/to/your/localfile.txt

      /path/to/your/localfile.txt 替换为你本地文件的完整路径。

      Linux 上传文件到 FTP 服务器,命令该怎么用?-图3
      (图片来源网络,侵删)
    • 上传整个目录ftp 命令本身没有直接上传目录的命令,需要结合其他工具,最常用的是 mput (multiple put) 和 tar (打包)。

      # 首先进入要上传的本地目录(可选,方便路径操作)
      lcd /path/to/your/local_directory
      # 在FTP服务器上进入目标目录
      cd /path/to/remote/directory
      # 使用 mput 上传所有文件
      mput *

      mput * 会提示你确认每个文件,如果不想确认,可以提前执行 prompt off 命令来关闭交互式提示。

  5. 查看文件列表

    • 查看本地目录:!ls!dir
    • 查看远程目录:lsdir
  6. 断开连接: 完成上传后,输入 byequit 退出 FTP 会话。

    bye

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

lftp 是一个功能非常丰富的命令行文件客户端,支持 FTP、FTPS、SFTP、HTTP 等多种协议,它比 ftp 命令更强大、更方便,尤其是在处理目录和自动化脚本方面,如果你的系统没有安装,可以使用包管理器安装:

  • Debian/Ubuntu: sudo apt-get install lftp
  • CentOS/RHEL: sudo yum install lftp

基本步骤

  1. 打开终端

  2. 直接连接并执行命令lftp 的一个巨大优势是可以在一条命令中完成连接、认证和操作,非常适合脚本。

    • 上传单个文件

      lftp -u your_username,your_password ftp.yourserver.com -e "put /path/to/your/localfile.txt; bye"
      • -u your_username,your_password: 指定用户名和密码。
      • ftp.yourserver.com: 服务器地址。
      • -e "...": 执行指定的命令,多个命令用分号 隔开。
      • put ...: 上传文件。
      • bye: 退出。
    • 上传整个目录lftp 有专门的 mirror 命令来同步目录,非常方便。

      lftp -u your_username,your_password ftp.yourserver.com -e "mirror -R /path/to/your/local_directory /path/to/remote/directory; bye"
      • mirror: 目录同步命令。
      • -R: 关键参数!表示“反向镜像”,即从本地上传到远程,如果不加 -R,则是从远程下载到本地。
      • /path/to/your/local_directory: 本地源目录。
      • /path/to/remote/directory: 远程目标目录。
    • 交互式使用: 你也可以像 ftp 那样进入交互模式:

      lftp ftp.yourserver.com

      然后依次执行:

      # 登录
      user your_username your_password
      # 上传目录
      mirror -R /local/path /remote/path
      # 退出
      bye

使用万能的 curl 命令

curl 通常用于处理网络请求,但它也支持通过 FTP 协议上传文件,它的优点是通用性强,很多脚本环境中可能已经有 curl 而没有 lftp

基本步骤

  1. 打开终端

  2. 使用 curl -T 上传文件

    • 上传单个文件

      curl -T /path/to/your/localfile.txt -u your_username:your_password ftp://ftp.yourserver.com/path/to/remote/directory/
      • -T: 指定要上传的文件(T for To/Upload)。
      • -u: 指定用户名和密码。
      • ftp://...: FTP 服务器的完整 URL。
    • 上传多个文件: 你可以在 -T 后面跟多个文件路径,用空格隔开。

      curl -T /path/to/file1.txt -T /path/to/file2.txt -u your_username:your_password ftp://ftp.yourserver.com/path/to/remote/directory/
    • 上传目录curl 本身不直接支持目录上传,需要结合 find 命令来实现。

      # 进入要上传的目录
      cd /path/to/your/local_directory
      # 使用 find 和 curl 配合上传
      find . -type f | while read f; do
          curl -T "$f" -u your_username:your_password "ftp://ftp.yourserver.com/path/to/remote/directory/$f"
      done

      这个命令会找到当前目录下的所有文件,然后逐个上传到远程服务器的对应路径下。


总结与对比

特性 ftp (内置) lftp (推荐) curl (通用)
易用性 较低,交互式操作 ,命令简洁,支持脚本 中等,参数较多
功能 基础文件传输 强大,支持断点续传、后台任务、多协议、目录同步 非常强大,支持几乎所有网络协议,但FTP功能相对独立
目录上传 需要配合 mputtar 非常方便mirror -R 一条命令搞定 需要结合 find 等外部命令,较复杂
自动化 不适合,交互式强 非常适合-e 参数完美支持 非常适合,是脚本工具链的一部分
安装 无需安装,系统自带 通常需要额外安装 通常无需安装,系统自带

推荐选择

  • 日常手动操作或简单脚本:使用 lftp,它的 mirror -R 命令处理目录上传极其方便,是首选。
  • 在已经存在 curl 的复杂脚本中:使用 curl,可以避免引入新的工具依赖。
  • 紧急情况或系统无法安装新软件:使用 ftp,虽然麻烦但总能解决问题。

安全性提示

传统的 FTP 协议在传输用户名和密码时是明文的,非常不安全,如果你的服务器支持,请尽量使用更安全的协议:

  • FTPS (FTP over SSL/TLS): 在 ftp/lftp/curl 中通常通过添加 -p (或 --ftp-ssl-reqired) 等参数来启用。
    # lftp 使用 FTPS
    lftp -u user,pass -p 990 ftps.yourserver.com
  • SFTP (SSH File Transfer Protocol): 它是基于 SSH 的
分享:
扫描分享到社交APP
上一篇
下一篇