菜鸟科技网

Unix 上传文件命令有哪些?

在Unix和Linux系统中,文件上传是日常运维和开发中常见的操作,涉及将本地文件传输到远程服务器或从远程服务器下载文件到本地,根据不同的场景和需求,Unix系统提供了多种命令行工具来实现文件上传功能,这些工具基于不同的协议(如FTP、SFTP、SCP、RSYNC等),各有特点和适用场景,以下将详细介绍几种常用的Unix文件上传命令,包括其基本用法、参数选项、优缺点及实际应用示例。

Unix 上传文件命令有哪些?-图1
(图片来源网络,侵删)

SCP(Secure Copy)命令

SCP是基于SSH(Secure Shell)协议的安全文件传输工具,用于在本地主机和远程主机之间 securely 传输文件,由于SCP通过加密连接传输数据,因此安全性较高,适合在不信任的网络环境中使用,其基本语法为:scp [选项] [源路径] [目标路径]

  • 常用选项

    • -r:递归复制整个目录。
    • -P:指定远程主机的SSH端口(注意大写,避免与-p文件时间戳选项混淆)。
    • -p:保留文件的修改时间、访问时间和权限。
    • -C:启用压缩传输,适用于大文件。
    • -v:详细模式,显示调试信息,便于排查连接问题。
  • 使用示例

    1. 上传本地文件到远程服务器:
      scp local.txt user@remote:/home/user/

      此命令将当前目录下的local.txt文件上传到远程服务器的/home/user/目录,需输入用户密码。

      Unix 上传文件命令有哪些?-图2
      (图片来源网络,侵删)
    2. 上传整个目录:
      scp -r local_dir/ user@remote:/home/user/
    3. 指定端口上传:
      scp -P 2222 local.txt user@remote:/home/user/
  • 优缺点

    • 优点:基于SSH,安全性高;简单易用,无需额外配置。
    • 缺点:不支持断点续传;大文件传输时可能因网络中断失败;不显示传输进度条(可通过pv工具配合显示)。

SFTP(SSH File Transfer Protocol)命令

SFTP是SSH的一部分,提供了交互式的文件传输功能,类似于FTP,但所有数据均通过SSH加密传输,SFTP更安全且功能更丰富,支持文件和目录的增删改查操作,其基本命令包括put(上传)、get(下载)、ls(列表)、cd(切换目录)等。

  • 启动SFTP会话

    sftp user@remote

    连接成功后,会进入sftp>命令行界面。

    Unix 上传文件命令有哪些?-图3
    (图片来源网络,侵删)
  • 常用上传操作

    1. 上传单个文件:
      put local.txt /home/user/
    2. 上传目录(需递归操作):
      -r local_dir /home/user/
    3. 批量上传(使用通配符):
      put *.txt /home/user/docs/
  • 退出SFTP会话:输入exitbye

  • 优缺点

    • 优点:交互式操作,支持文件管理;加密传输,安全性高;支持断点续传(通过reput命令)。
    • 缺点:相比SCP,命令稍复杂;传输速度可能略低于SCP(因需维护会话状态)。

RSYNC(Remote Sync)命令

RSYNC是一款强大的文件同步工具,支持本地和远程文件传输,以增量传输(仅同步变化部分)著称,适合大文件和目录的频繁同步,其基本语法为:rsync [选项] [源路径] [目标路径]

  • 常用选项

    • -a:归档模式,保留文件属性(权限、时间戳等),相当于-rlptgoD的组合。
    • -v:详细输出,显示传输过程。
    • -z:压缩传输数据,减少网络带宽占用。
    • -P:显示传输进度,并支持断点续传(结合--partial选项)。
    • --delete:目标目录中多余的文件会被删除(确保源和目标完全一致)。
  • 使用示例

    1. 基本上传(需SSH密钥认证,避免重复输入密码):
      rsync -avz local.txt user@remote:/home/user/
    2. 同步目录(删除目标多余文件):
      rsync -avz --delete local_dir/ user@remote:/home/user/
    3. 通过SSH指定端口:
      rsync -avz -e "ssh -p 2222" local.txt user@remote:/home/user/
  • 优缺点

    • 优点:增量传输效率高;支持排除文件(--exclude选项);可结合SSH实现安全传输。
    • 缺点:首次传输全量文件时速度可能较慢;配置相对复杂,需提前设置SSH免密登录。

FTP(File Transfer Protocol)命令

FTP是一种传统的文件传输协议,但因其数据传输未加密(用户名、密码和文件内容均明文传输),安全性较低,仅在可信网络环境中使用,Unix系统通常通过ftplftp(增强版FTP客户端)命令操作。

  • 基本FTP操作

    1. 连接远程服务器:
      ftp remote.example.com
    2. 输入用户名和密码登录后,上传文件:
      put local.txt
    3. 退出:bye
  • LFTP增强功能
    支持多线程传输、断点续传和加密协议(如FTPS),推荐替代传统FTP:

    lftp ftp://user:password@remote.example.com
    lftp> put local.txt
  • 优缺点

    • 优点:兼容性好,支持大多数操作系统;操作简单直观。
    • 缺点:安全性差,易受中间人攻击;功能单一,不支持目录比较和增量传输。

其他工具:WGET和CURL

虽然wgetcurl主要用于下载文件,但也可通过特定参数实现上传功能,例如通过HTTP/HTTPS的PUT或POST方法上传文件到Web服务器。

  • CURL上传示例

    curl -T local.txt -u username:password https://example.com/upload/

    -T指定上传文件,-u提供认证信息。

  • 适用场景:适用于向Web应用或API接口上传文件,而非传统的服务器文件传输。

不同工具对比总结

工具 协议 安全性 速度 功能特点 适用场景
SCP SSH 中等 简单、加密 小文件、快速传输
SFTP SSH 中等 交互式、支持断点续传 需要文件管理或频繁操作
RSYNC SSH/本地 快(增量) 增量同步、保留属性 大目录、定期备份
FTP FTP 中等 兼容性好 可信内网、旧系统
CURL HTTP/HTTPS 中等 依赖网络 支持Web上传 向Web服务上传文件

相关问答FAQs

Q1: SCP和SFTP有什么区别?如何选择?
A1: SCP基于SSH协议,专注于快速、安全的文件拷贝,适合一次性传输,不支持断点续传或交互式操作;SFTP是SSH的子协议,提供类似FTP的交互式命令行,支持文件管理、断点续传和权限操作,适合需要频繁修改远程文件的场景,若仅需快速上传/下载文件,可选SCP;若需复杂操作或断点续传,推荐SFTP。

Q2: 使用RSYNC上传文件时,如何避免每次输入密码?
A2: 可通过SSH密钥认证实现免密登录,首先在本地生成SSH密钥对(ssh-keygen),然后将公钥(~/.ssh/id_rsa.pub)追加到远程服务器的~/.ssh/authorized_keys文件中(需确保远程服务器SSH服务开启密钥认证),配置完成后,RSYNC和SCP等命令即可直接传输文件而无需密码输入。

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