Linux rsync 命令代替 scp
今天分享一个 Linux/Unix 下非常经典的文件同步工具,用一句话概括就是:只传输变化的部分,实现高效同步。比 cp、scp 更快、更智能。
一、rsync 是干嘛的?
Section titled “一、rsync 是干嘛的?”你可以把它理解成:
👉 “聪明版复制工具”
它的特点是:
- 只复制新增或修改的文件
- 支持本地 → 本地
- 支持本地 → 远程(SSH)
- 支持远程 → 本地
- 可以做备份 / 镜像 / 部署
二、基本语法
Section titled “二、基本语法”rsync [选项] 源路径 目标路径例如:
rsync -av file.txt /backup/三、最常用参数(重点)
Section titled “三、最常用参数(重点)”1️⃣ -a(归档模式)
Section titled “1️⃣ -a(归档模式)”-a = -r + -l + -p + -t + -g + -o简单理解:
👉 递归复制 + 保留权限/时间等信息
2️⃣ -v(verbose)
Section titled “2️⃣ -v(verbose)”显示详细过程:
-v3️⃣ -z(压缩)
Section titled “3️⃣ -z(压缩)”适合远程传输:
-z4️⃣ —delete
Section titled “4️⃣ —delete”👉 让目标目录和源目录完全一致(危险但好用)
rsync -av --delete src/ dest/说明:
- 源有 → 保留
- 源没有 → 删除目标里的
5️⃣ —progress
Section titled “5️⃣ —progress”显示传输进度:
rsync -av --progress src/ dest/6️⃣ -n(干跑 / 预演)
Section titled “6️⃣ -n(干跑 / 预演)”👉 非常重要,用来避免误删!
rsync -av --delete -n src/ dest/不会真的执行,只是模拟。
四、最常见使用场景
Section titled “四、最常见使用场景”📁 1. 本地目录同步
Section titled “📁 1. 本地目录同步”rsync -av /home/user/data/ /backup/data/👉 注意 / 很关键!
| 写法 | 含义 |
|---|---|
data/ | 复制目录里的内容 |
data | 连目录一起复制 |
🌐 2. 同步到远程服务器
Section titled “🌐 2. 同步到远程服务器”rsync -avz /local/path user@192.168.1.10:/remote/path👉 默认走 SSH
🌐 3. 从远程拉数据
Section titled “🌐 3. 从远程拉数据”rsync -avz user@192.168.1.10:/remote/path /local/path🔐 4. 指定 SSH 端口
Section titled “🔐 4. 指定 SSH 端口”rsync -avz -e "ssh -p 2222" src/ user@host:/dest/🧹 5. 做镜像备份(完全同步)
Section titled “🧹 5. 做镜像备份(完全同步)”rsync -av --delete /data/ /backup/👉 常用于:
- 网站备份
- NAS 同步
- Docker 数据备份
五、实用技巧
Section titled “五、实用技巧”✅ 排除文件
Section titled “✅ 排除文件”rsync -av --exclude="node_modules" src/ dest/多个排除:
--exclude="*.log"--exclude=".git"rsync -av --bwlimit=1000 src/ dest/(单位 KB/s)
✅ 断点续传
Section titled “✅ 断点续传”rsync -av --partial src/ dest/✅ 查看差异(不复制)
Section titled “✅ 查看差异(不复制)”rsync -avnc src/ dest/六、常见坑(很重要)
Section titled “六、常见坑(很重要)”⚠️ 1. / 的区别(经典坑)
Section titled “⚠️ 1. / 的区别(经典坑)”rsync -av dir/ backup/👉 复制 dir 里面的内容
rsync -av dir backup/👉 复制 整个 dir 目录
⚠️ 2. —delete 很危险
Section titled “⚠️ 2. —delete 很危险”一旦写反:
rsync -av --delete backup/ data/👉 可能把你数据删光 😅
✔ 建议:
先加 -n 测试!⚠️ 3. 权限问题
Section titled “⚠️ 3. 权限问题”有些文件需要 root:
sudo rsync -av /etc/ backup/七、一个真实常用命令(推荐记住)
Section titled “七、一个真实常用命令(推荐记住)”rsync -avz --delete --progress /data/ user@server:/backup/👉 含义:
- 同步数据
- 自动压缩
- 显示进度
- 保持一致
👉 rsync = 高效 + 增量 + 可远程 + 可镜像的复制工具
实战(把本地静态博客同步到服务器)
Section titled “实战(把本地静态博客同步到服务器)”❯ rsync -rvz --delete ./dist/ xtp@xiaotupo.com:/home/xtp/xiaotupo.com/scp -r .\public\* xtp@xiaotupo.com:/home/xtp/xiaotupo.com使用感受:
用了 rsync 真是太爽了,比 scp 命令不知快了多少倍,只同步改变的部分真的好用的很!