很高兴为您详细讲解服务器搭建后如何传输数据,这是一个非常核心的运维和开发技能。
数据传输可以分为几个层面和多种方法,我将从基础概念到具体操作为您梳理。
一、 核心概念:你在传输什么?从哪里到哪里?
首先明确三个要素:
1、数据来源和目标:是从你的本地电脑传到远程服务器,还是反过来?或者是两台远程服务器之间互传?
2、数据性质:是单个/少量文件,还是整个项目目录?是静态文件还是需要实时同步的数据库?
3、传输方向术语:
上传从本地到远程。
下载从远程到本地。
以下方法主要针对 Linux/Unix 服务器(包括 macOS 终端),Windows 服务器部分原理相通,但工具略有不同。
1. 基于 SCP (Secure Copy) - 最简单直接
SCP 基于 SSH 协议,所以只要你能用 SSH 登录服务器,就能用 SCP,非常方便安全。
基本语法:
scp [选项] <源文件路径> <目标路径>
常见场景示例:
上传文件到服务器
# 将本地的 file.txt 上传到服务器 192.168.1.100 的 /home/user/ 目录下
scp /path/to/local/file.txt user@192.168.1.100:/home/user/从服务器下载文件
# 将服务器上的 /var/log/app.log 下载到本地当前目录
scp user@192.168.1.100:/var/log/app.log ./上传整个目录(使用-r 递归选项)
# 将本地的 my_project 文件夹整个上传到服务器的 /opt/ 目录
scp -r /path/to/local/my_project user@192.168.1.100:/opt/指定 SSH 端口(如果服务器 SSH 端口不是默认的 22)
scp -P 2222 local_file.txt user@192.168.1.100:/home/user/优点:简单、安全、无需额外配置。
缺点:无法同步(即只复制变化的文件),传输大量小文件时速度较慢。
2. 基于 SFTP (SSH File Transfer Protocol) - 交互式文件管理
SFTP 同样基于 SSH,但它提供了一个类似 FTP 的交互式命令行界面,可以执行列出目录、删除文件等操作。
基本使用:
1、 连接服务器:
sftp -P 2222 user@192.168.1.1002、 进入交互模式,使用类似 FTP 的命令:
put local_file上传文件。
get remote_file下载文件。
ls列出服务器当前目录文件。
lls列出本地当前目录文件。
cd切换服务器目录。
lcd切换本地目录。
exit 或bye退出。
图形化工具:
对于不习惯命令行的用户,可以使用图形化 SFTP 客户端,如FileZilla、WinSCP,你只需要输入服务器的 IP、端口、用户名和密码,就可以像操作本地文件夹一样拖拽文件进行传输。
3. 使用 Rsync - 高效同步的专业选择
Rsync 是增量同步的神器,它只会传输文件中被修改的部分,从而极大提高效率,特别适合备份或同步大量文件。
基本语法:
rsync [选项] <源路径> <目标路径>
常见场景示例:
同步本地目录到服务器(最常用)
# -a: 归档模式,保持所有文件属性
# -v: 显示详细过程
# -z: 压缩传输
# --delete: 让目标目录和源目录严格一致,删除目标端源端没有的文件(小心使用!)
rsync -avz /path/to/local/folder/ user@192.168.1.100:/path/to/remote/folder/注意:源路径结尾的/ 很重要,有/ 表示同步文件夹,没有/ 则表示同步文件夹本身。
从服务器同步到本地
rsync -avz user@192.168.1.100:/path/to/remote/folder/ /path/to/local/folder/排除某些文件
rsync -avz --exclude='node_modules' --exclude='.git' /path/to/local/project/ user@server:/path/remote/优点:高效、灵活、适合备份和镜像。
缺点:命令选项较多,需要学习。
4. 使用 Git - 针对代码和文本项目
如果你的数据是代码或文档,使用 Git 是更现代、更专业的方式。
工作流:
1、 在本地电脑上,将项目初始化为 Git 仓库 (git init)。
2、 将代码提交到本地仓库 (git add . &git commit)。
3、 在服务器上同样安装 Git,并克隆仓库。
# 在服务器上操作
git clone your-git-repository-url /path/on/server4、 后续更新时,在本地提交后推送到远程 Git 仓库(如 GitHub, GitLab, Gitee)。
5、 在服务器上进入项目目录,执行git pull 拉取最新代码。
优点:版本控制、协作方便、部署流程清晰。
缺点:不适合传输二进制大文件(如图片、视频、数据库文件)。
curl / wget直接在服务器上使用wget 或curl 从公网下载文件。
wget https://example.com/path/to/file.tar.gz云存储服务如 AWS S3, 阿里云 OSS,先将数据上传到云存储,然后服务器再从云存储下载,适合超大规模文件分发。
rsync over SSH (rsync daemon)为 Rsync 配置守护进程模式,实现更高效的专用文件同步服务。
| 方法 | 适用场景 | 优点 | 缺点 |
| SCP | 快速传输单个或少量文件 | 简单、安全、无需 setup | 无法增量同步,效率较低 |
| SFTP/FileZilla | 图形化操作,临时文件管理 | 直观易用,功能全面 | 命令行下效率不如 SCP/rsync |
| Rsync | 定期备份、大量文件同步、部署 | 增量同步,效率极高 | 命令稍复杂,需要理解选项 |
| Git | 代码、配置文件、文档的部署 | 版本控制,流程规范 | 不适合非文本的大文件 |
| curl/wget | 服务器从公网直接下载 | 简单直接 | 仅限于从公网下载 |
新手入门建议:
1、 从SCP 或FileZilla 开始,感受基本的文件传输。
2、 当你需要频繁更新网站或应用时,学习并使用Rsync,它会极大提升你的效率。
3、 如果你是开发者,一定要掌握Git 进行代码部署。
希望这份详细的指南能帮助你更好地进行服务器数据管理!
文章摘自:https://idc.huochengrm.cn/fwq/18979.html
评论