公司博客 // 2026-07-18 · BY IDCBOT

rsync完全教程:服务器间高效文件同步与增量备份实战

服务器间传文件、做增量备份、镜像目录——rsync是这些任务的标准答案。它比scp聪明得多:只传输有变化的部分,速度快、省带宽。本文带你掌握这个运维必备工具。

一、rsync为什么比scp强?

scp每次都传输全部文件,而rsync的核心是增量传输:它对比源和目标,只传输有变化的文件、甚至文件中变化的部分。第一次同步一个大目录后,之后每次同步只传改动过的内容——速度快、省带宽、适合反复同步的场景(如每日备份)。

二、基础用法

# 本地目录同步
rsync -av /源目录/ /目标目录/

# 同步到远程服务器(经SSH)
rsync -av /本地目录/ user@服务器IP:/远程目录/

# 从远程拉回本地
rsync -av user@服务器IP:/远程目录/ /本地目录/

注意末尾的斜杠:源目录带 / 表示”同步目录里的内容”,不带表示”同步整个目录”。这个细节常导致同步结果不符预期,务必留意。

三、常用参数详解

  • -a(归档模式):保留权限、时间、软链接等,最常用,基本必加;
  • -v(verbose):显示传输过程;
  • -z:传输时压缩,跨网络同步省带宽;
  • -P:显示进度 + 支持断点续传(传大文件必备);
  • –delete:删除目标中源没有的文件(镜像同步,危险,慎用——用错方向会删数据);
  • -n / –dry-run:试运行,只显示会做什么但不真执行——用–delete前一定先加-n预演!

四、经SSH安全同步(指定端口/密钥)

rsync -avz -e "ssh -p 2222 -i ~/.ssh/key" /本地/ user@IP:/远程/

用 -e 指定SSH参数,配合密钥登录(参考博客SSH进阶篇的config,还能简化成 rsync -avz /本地/ hk-web:/远程/)。

五、排除不需要同步的文件

rsync -av --exclude 'node_modules' --exclude '*.log' /源/ /目标/
# 或用排除列表文件
rsync -av --exclude-from='exclude.txt' /源/ /目标/

同步代码时排除 node_modules、缓存、日志等,只传有意义的内容。

六、实战:定时增量备份脚本

rsync是本地增量备份的好工具(配合rclone做异地备份,参考博客备份篇):

#!/bin/bash
# 增量备份网站目录到备份盘
rsync -az --delete /www/wwwroot/ /backup/www/
# 增量同步到另一台服务器
rsync -az /www/wwwroot/ hk-backup:/backup/www/

加入crontab每日执行(参考crontab篇)。因为是增量,即使目录很大,每日同步也很快。

七、避坑要点

  • –delete前必先–dry-run预演:这是防止误删的铁律;
  • 注意斜杠:源目录尾部斜杠的有无决定同步结果;
  • 方向别搞反:rsync 源 目标,想清楚哪个是源哪个是目标;
  • 大量小文件慢:海量小文件时rsync建立文件列表较慢,可考虑先打包再传。

结论

rsync是服务器文件传输和增量备份的瑞士军刀:增量高效、经SSH安全、可排除可预演。掌握 -avzP 组合和 --dry-run 预演习惯,日常的目录同步、迁移、备份都能优雅搞定。在你的服务器之间用rsync同步一次目录,体会它增量传输的速度优势。

// LEAVE A COMMENT

Your email address will not be published. Required fields are marked *