凌峰创科服务平台

文件上传Linux服务器有几种方法?

使用 scp (Secure Copy) - 推荐,最常用

scp 是基于 SSH 协议的,它可以在本地主机和远程服务器之间安全地复制文件,如果你的服务器已经开启了 SSH 服务(这是最常见的情况),scp 是最简单、最直接的选择。

文件上传Linux服务器有几种方法?-图1
(图片来源网络,侵删)

准备工作

  1. 确保服务器开启了 SSH 服务:绝大多数 Linux 服务器默认都开启。
  2. 知道服务器的 IP 地址或域名168.1.100server.com
  3. 知道你的用户名和密码(或 SSH 密钥)。

基本语法

# 从本地上传到服务器
scp /path/to/local/file username@remote_server:/path/to/remote/directory/
# 从服务器下载到本地
scp username@remote_server:/path/to/remote/file /path/to/local/directory/

操作示例

场景1:上传单个文件 将你本地的 report.txt 文件上传到服务器的 /home/username/ 目录下。

scp report.txt myuser@192.168.1.100:/home/myuser/

系统会提示你输入 myuser 用户的密码,输入后文件就开始传输。

场景2:上传整个目录 加上 -r (recursive) 参数可以递归地复制整个目录。

scp -r my_project_folder/ myuser@192.168.1.100:/home/myuser/

场景3:指定服务器端口 如果你的 SSH 服务运行在非标准的端口(2222),需要使用 -P 参数(注意是大写)。

文件上传Linux服务器有几种方法?-图2
(图片来源网络,侵删)
scp -P 2222 report.txt myuser@192.168.1.100:/home/myuser/

场景4:使用 SSH 密钥进行免密登录 如果你已经配置了 SSH 密钥对,scp 会自动使用它,无需输入密码。

scp report.txt myuser@192.168.1.100:/home/myuser/

优缺点

  • 优点
    • 简单、直接,几乎所有 Linux/macOS 系统都预装。
    • 基于 SSH,传输过程是加密的,很安全。
    • 可以轻松地集成到 Shell 脚本中实现自动化。
  • 缺点
    • 没有传输进度条(在较新的系统上可能已经有了)。
    • 交互性差,无法中途暂停或恢复传输。

使用 rsync (Remote Sync) - 功能强大的进阶选择

rsync 也是一个基于 SSH 的工具,但它比 scp 更加强大,它最大的特点是增量同步,即只传输源文件和目标文件之间有差异的部分,非常适合大文件和目录的同步。

基本语法

# 从本地上传到服务器
rsync [options] /path/to/local/source username@remote_server:/path/to/remote/destination/

常用选项

  • -a, --archive:归档模式,相当于 -rlptgoD 的集合,保留文件的所有属性(权限、时间戳等),通常推荐使用。
  • -v, --verbose:显示详细的输出。
  • -z, --compress:在传输过程中进行压缩,可以节省带宽。
  • -P:等同于 --partial --progress,显示传输进度,并且可以支持断点续传。
  • -r, --recursive:递归复制目录(-a 选项已经包含此功能)。

操作示例

场景1:同步本地目录到服务器 将本地的 my_project_folder 目录同步到服务器的 /home/myuser/projects/ 目录,如果目标目录已存在同名文件,rsync 会根据文件差异进行更新。

rsync -avz my_project_folder/ myuser@192.168.1.100:/home/myuser/projects/

注意:源目录末尾的 很重要。my_project_folder/ 表示同步目录 ,而 my_project_folder 表示同步目录 本身(即会在目标服务器上创建一个 my_project_folder 子目录)。

文件上传Linux服务器有几种方法?-图3
(图片来源网络,侵删)

场景2:使用 SSH 密钥scp 一样,如果配置了 SSH 密钥,会自动使用。

rsync -avzP my_project_folder/ myuser@192.168.1.100:/home/myuser/projects/

这里的 -P 会显示进度条并支持断点续传。

优缺点

  • 优点
    • 增量同步:非常高效,尤其适合大文件和频繁备份。
    • 保留文件属性-a 选项能完美保留文件权限、时间戳等。
    • 支持断点续传:传输中断后可以继续。
    • 压缩传输:可以节省网络带宽。
  • 缺点
    • 语法比 scp 稍微复杂一点。
    • 首次传输时,因为要比较文件,可能比 scp 稍慢。

使用 SFTP (SSH File Transfer Protocol)

SFTP 是一个交互式的文件传输协议,它也运行在 SSH 之上,你可以把它想象成一个“安全的 FTP”,它提供了一个命令行界面,让你像在本地操作文件一样浏览、上传、下载、删除服务器上的文件。

基本语法

sftp username@remote_server

操作示例

连接到服务器后,你会进入一个 sftp> 命令提示符。

$ sftp myuser@192.168.1.100
myuser@192.168.1.100's password:  # 输入密码
Connected to 192.168.1.100.
sftp>

常用 SFTP 命令:

  • ls:列出当前远程目录下的文件。
  • cd path:切换远程服务器的目录。
  • lcd path:切换本地机器的目录。
  • put /local/path/file:上传文件。
  • get /remote/path/file:下载文件。
  • mkdir dirname:在远程服务器创建目录。
  • rmdir dirname:删除远程目录。
  • rm file:删除远程文件。
  • byeexit:退出 SFTP 会话。

示例:上传文件

sftp> put report.txt
Uploading report.txt to /home/myuser/report.txt
report.txt                               100%   256     0.3KB/s   00:00
sftp> bye

优缺点

  • 优点
    • 交互式操作:可以方便地浏览服务器文件系统,非常灵活。
    • 安全,基于 SSH。
    • 功能丰富,支持文件和目录的增删改查。
  • 缺点
    • 不适合自动化脚本,因为它是交互式的。
    • 对于简单的单次上传,步骤比 scp 多。

使用图形化工具 (FileZilla, Cyberduck)

如果你不习惯命令行,或者正在使用 Windows 系统,图形化 SFTP/FTP 客户端是最好的选择。

推荐工具

  • FileZilla:免费、开源、跨平台(Windows, macOS, Linux),功能非常强大。
  • Cyberduck:免费、开源、跨平台,界面更现代化。

操作步骤 (以 FileZilla 为例)

  1. 下载并安装 FileZilla。
  2. 连接服务器
    • 主机:输入你的服务器 IP 地址或域名。
    • 用户名:输入你的服务器用户名。
    • 密码:输入你的服务器密码。
    • 端口:SSH/SFTP 端口是 22,如果不是,请填写正确的端口号。
  3. 点击“快速连接”
  4. 连接成功后,界面会分为两部分:
    • 左侧:是你本地的文件和目录。
    • 右侧:是远程服务器上的文件和目录。
  5. 上传文件:在左侧找到你想要上传的文件或文件夹,直接拖拽到右侧的服务器目录中即可,你也可以右键点击文件,选择“上传”。

优缺点

  • 优点
    • 图形界面:直观易用,无需记忆命令。
    • 支持拖拽操作,非常方便。
    • 提供传输进度条。
  • 缺点
    • 需要额外安装软件。
    • 对于服务器管理员来说,效率不如命令行。

搭建 Web 服务器上传 (如 Nginx/Apache)

如果你需要让用户通过浏览器直接上传文件到服务器,可以配置一个 Web 服务器(如 Nginx 或 Apache)来接收文件。

这通常用于构建网盘、表单上传等功能,配置相对复杂,不适用于简单的个人文件传输。

基本思路

  1. 在服务器上安装并配置 Nginx/Apache。
  2. 创建一个 HTML 表单,表单的 method 设为 POSTenctype 设为 multipart/form-data
  3. 编写一个后端处理脚本(如 PHP, Python, Node.js)来接收、验证并保存上传的文件。
  4. 将这个 HTML 和脚本放到 Web 服务器的根目录下。

优缺点

  • 优点
    • 任何有浏览器的人都可以上传,无需 SSH 客户端。
    • 可以与 Web 应用无缝集成。
  • 缺点
    • 配置最复杂,需要服务器管理知识。
    • 安全性需要特别注意,容易受到上传漏洞攻击。
    • 依赖 Web 服务器环境。

总结与对比

方法 优点 缺点 适用场景
scp 简单、快速、安全、预装 无进度条、不支持断点续传 日常使用、脚本自动化,首选方法。
rsync 增量同步、高效、保留属性、支持断点续传 语法稍复杂 大文件/目录同步、频繁备份,功能更强大。
sftp 交互式、灵活、功能丰富 不适合自动化脚本 需要浏览服务器文件、进行复杂文件管理时。
FileZilla 图形界面、直观、易用 需要安装软件、效率低于命令行 不熟悉命令行的用户、Windows 用户
Web 上传 通过浏览器访问,无需专用客户端 配置复杂、安全风险高 构建网盘、表单上传等 Web 应用功能。

如何选择?

  • 如果你是开发者或系统管理员,需要频繁上传文件首选 scp,简单高效,如果涉及大项目同步,rsync
  • 如果你只是偶尔上传一两个文件scpsftp 都可以。
  • 如果你是 Windows 用户或不习惯命令行FileZilla 是你的不二之选。
  • 如果你需要通过网页让用户上传:那么你需要配置 Web 服务器,但这超出了简单文件上传的范畴。

对于绝大多数情况,scp 是最万能、最应该掌握的工具

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