警告

该文章系ChatGPT生成,所有内容仅供学习、参考!


在日常运维 VPS、备份站点数据、迁移 Halo 博客或处理大文件时,安全、稳定、高效的文件传输方式 至关重要。
本篇教程将带你全面认识 Linux 中最常使用的两个文件传输工具:scprsync。无论你是新手还是老手,这篇文章都能让你一次搞懂它们的区别和最佳使用方法。


📌 1. 前置条件:安装 scp 和 rsync

在大多数 Linux 发行版中,scprsync 默认已安装。如果没有,可手动安装:

Debian / Ubuntu 系列:

sudo apt update
sudo apt install openssh-client openssh-server rsync -y

CentOS / Rocky / AlmaLinux:

sudo yum install openssh-clients openssh-server rsync -y

Arch Linux:

sudo pacman -S openssh rsync 

🚀 2. 什么是 scp?

scp(Secure Copy)使用 SSH 加密通道 复制文件/目录。
特点:

  • 轻量、简单、即装即用

  • 适合一次性的文件直接传输

  • 全量传输,不支持断点续传、增量同步


🧰 2.1 scp 的基础用法

从本地上传文件到服务器:

scp file.txt root@服务器IP:/root/

从服务器下载文件到本地:

scp root@服务器IP:/root/file.txt ./

传输目录(加 -r):

scp -r ./data root@服务器IP:/root/

指定端口:

scp -P 22 file.txt root@服务器IP:/root/

🔧 2.2 scp 常用参数

参数 作用
-r 递归传输目录
-P 指定 SSH 端口
-C 启用压缩
-i 指定密钥文件(用于免密登录)
-v 显示详细信息(调试用)

🚀 3. 什么是 rsync?

rsync 是 Linux 中最强大的文件同步工具之一。
它支持:

  • 增量同步(只传改动部分)

  • 断点续传

  • 压缩传输

  • 保留权限/软链/时间戳

  • 双向同步

  • 建议用于大文件/目录同步

配合 VPS/服务器迁移尤其好用。


🧰 3.1 rsync 的基础用法

本地 → 远程(上传):

rsync -avz ./data/ root@服务器IP:/root/data/

远程 → 本地(下载):

rsync -avz root@服务器IP:/root/data/ ./data/

🔧 3.2 rsync 常用参数解析

参数 作用
-a 归档模式(保留权限/时间/软链等)
-v 显示详细输出
-z 压缩数据传输
--progress 显示进度条
--delete 删除目标中不存在的文件(保持镜像一致)
-P 显示进度 + 支持断点续传
--exclude 排除不需要同步的文件

示例(带进度条):

rsync -avzP ./data root@服务器IP:/root/

⚔️ 4. scp 与 rsync 的区别对比

特点 scp rsync
功能定位 简单复制 文件同步工具
传输方式 全量传输 增量传输
断点续传 ❌ 不支持 ✅ 支持
压缩 可选 (-C) 默认更强 (-z)
适合场景 快速复制小文件 大文件/备份/网站迁移
速度 较慢 更快

总结一句话:

小文件快速传输用 scp,大文件或目录同步一定用 rsync。


📦 5. 实战示例

🔄 5.1 用 rsync 同步 Halo 博客数据(超适合你)

假设 Halo 数据目录在:

/var/lib/halo

将其同步到另一台服务器:

rsync -avzP /var/lib/halo/ root@服务器IP:/var/lib/halo/

迁移时数据库也建议同步:

rsync -avzP /var/lib/mysql/ root@服务器IP:/var/lib/mysql/

📁 5.2 同步网站备份

rsync -avzP /www/wwwroot/site/ root@备份服务器:/backup/site/

⚡ 5.3 传输大文件并断点续传

rsync -avzP bigfile.iso root@服务器IP:/root/

中断后继续执行同一条,会自动从断点续传,非常适合大盘机之间同步。


🛠 6. 常见问题 FAQ

❓ 为什么我用 rsync 同步目录结尾要加 /

因为:

  • data/ → 只同步目录内容

  • data → 整个目录连文件夹一起同步

这是新手最容易踩的坑。


❓ rsync 速度太慢怎么办?

尝试:

rsync -avz --progress --bwlimit=0

或者使用多线程工具(如 rclone、BBR 加速)。


❓ 密钥认证如何配合 scp 与 rsync?

scp -i ~/.ssh/id_rsa file root@IP:/root/
rsync -avz -e "ssh -i ~/.ssh/id_rsa" ./data root@IP:/root/

🎯 7. 总结

工具 优点 适合场景
scp 快速、简单、开箱即用 小文件快速传输
rsync 增量同步、断点续传、效率高 迁移博客、大文件、目录同步

如果你要迁移 Halo 博客文件体积大(例如几十 GB),那 rsync 完胜