在我们日常的系统运维中,服务器之间进行文件传输是经常要用到的功能,一般我们都会有使用scp进行文件的传输,但遇到增量或者断点续传的时候,scp就不能满足我们的要求。这时候rsync就派上了用场。
rsync(Remote Sync),它不仅能实现本地文件高效复制,更能通过网络完成远程主机间的安全同步,核心优势是仅传输文件差异部分(增量同步),大幅节省带宽与时间,堪称数据备份、文件迁移、服务器同步的首选工具。
一、rsync核心优势
和传统的scp等命令相比,rsync的优势主要体现在以下方面:
增量传输:能够完成增量传输,而非完整文件。大文件/海量文件同步效率翻倍;
完整保留元数据:支持保留文件权限、时间戳、属主属组、软硬链接、设备文件等;
多模式兼容:支持本地同步、远程SSH同步、rsync守护进程模式;
安全可靠:默认通过SSH加密传输,支持断点续传,网络中断后可继续同步;
灵活可控:可过滤文件、删除目标冗余文件、模拟执行等,适配复杂场景。
二、基础语法,一看就懂
rsync的语法结构如下:
rsync [选项] 源路径 目标路径
路径格式说明:
本地路径:直接写绝对/相对路径(如/data/src/、./backup/);
远程路径(SSH模式):[用户@]主机IP/域名:路径(如root@192.168.2.105:/data/dst/);
守护进程模式:rsync://[用户@]主机/模块名/路径。
注意事项:
源路径末尾如果加斜杠/ ,表示同步目录内的内容;不加斜杠 表示同步目录本身(含目录名),这是新手最容易踩坑的点!
三、高频必用参数,掌握这些就够了
rsync核心参数如下:
1. 基础功能参数
-a(--archive):归档模式,最常用! 等价于-rlptgoD,递归同步+保留所有元数据(权限、时间、属主、链接等);
-v(--verbose):详细输出同步过程,方便排查问题;
-z(--compress):传输时压缩数据,减少网络带宽占用(远程同步必加);
-h(--human-readable):以人类可读格式显示文件大小(如KB、MB);
-n(--dry-run):模拟执行,不实际同步,仅展示操作结果(高危操作前必用!);
-P:等价于--partial --progress,显示传输进度+支持断点续传(大文件远程同步必备)。
2. 同步控制参数
--delete:危险但实用,删除目标中存在、但源中不存在的文件(实现“镜像同步”,执行前务必用-n测试);
--exclude=PATTERN:排除指定文件/目录(如--exclude="*.log"排除日志文件);
--include=PATTERN:包含指定文件/目录(与--exclude配合使用,精准过滤);
-u(--update):仅同步源文件比目标文件更新的内容,避免覆盖旧文件;
--bwlimit=RATE:限制传输带宽(如--bwlimit=1024表示限速1MB/s,避免占用全部带宽)。
四、实战场景
场景1:本地目录同步
yum -y install rsync #安装rsync ,已安装可忽略
# 同步src目录内容到dst目录(保留所有元数据,显示过程)rsync -av /data/src/ /data/dst/
#模拟同步,不实际执行(测试用) rsync -avn /data/src/ /data/dst/
# 镜像同步(删除dst中src没有的文件,先测试再执行)rsync -avn --delete /data/src/ /data/dst/rsync -av --delete /data/src/ /data/dst/ #确认好,删除后不可恢复
场景2:远程同步
(1)本地→远程(推)# 本地src同步到远程服务器的dst目录(压缩传输+显示进度)rsync -avzP /data/src/ root@192.168.2.105:/data/dst/ #对端也需要安装rsync
#增量同步,仅同步src新增的文件,src目录新增new.txt文件rsync -avu /data/src /data/dst/
# 指定SSH端口(如远程SSH端口为22,具体以实际为准)rsync -avzP -e "ssh -p 2222" /data/src/ root@192.168.1.100:/data/dst/
(2)远程→本地(拉)
# 远程服务器的src同步到本地dst目录rsync -avzP root@192.168.1.100:/data/src/ /data/dst/
场景3:文件过滤
# 同步src到dst,排除所有.log文件和tmp目录rsync -av --exclude="*.log" --exclude="tmp/" /data/src/ /data/dst/
# 仅同步.txt文件,排除其他所有文件,include和exclude参数不能少rsync -av --include="*.txt" --exclude="*" /data/src/ /data/dst/
场景4:限速同步
# 限速1MB/s,远程同步src到dstrsync -avzP --bwlimit=1024 /data/src/ root@192.168.2.105:/data/dst/
#断点续传rsync -avzP /data/src root@192.168.2.105:/data/dst/
五、注意事项
路径斜杠问题:/data/src/(同步内容) vs /data/src(同步目录本身),务必根据需求选择;
--delete参数:执行前必须用-n模拟,避免误删目标文件;
远程同步权限:确保远程用户对目标目录有读写权限,否则会报错;
大文件同步:加-P参数,支持断点续传,避免网络中断后重新传输;
守护进程模式:批量同步可配置rsyncd.conf,实现无密码、多模块同步,但需注意安全配置(限制IP、设置密码)。
六、总结
rsync凭借增量同步、完整保留元数据、多模式兼容的核心优势,成为Linux下数据同步的“瑞士军刀”。
在日常使用中,我们需要牢记-avzP组合参数,配合--delete、--exclude等控制选项,就能轻松应对本地备份、远程迁移等绝大多数场景。
下次遇到数据库备份、断点续传等同步需求,可以试试rsync,效率提升不止一点点!
#linux #运维 #rsync同步 #运维实战