rsync远程同步
rsync远程同步
一、什么是rsync同步
1.rsync简介
Rsync 是一款开源的,快速的,多功能的,可实现全量及增量(差异化备份)的本地或远程数据同步备份的优秀工具。
Rsync软件适用于Unix、Linux、Windows等多种操作系统。
1)可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似ssh带scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。
2)rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,
3)利用rsync还可以实现删除文件和目录的功能。相当于rm
4)rsync相当于scp,cp.rm但是还优于他们每一个命令。
2.rsync特点
速度快: 初次同步时, rsync会全量拷贝从源文件或目录到目标位置. 第二次往后同步时, rsync 仅仅会拷贝变化的数据块或字节到目标位置这将使得文件传输非常迅速.
安全: rsync 可以使用ssh协议加密传输.
占用带宽少: rsync 在发送时会压缩数据块, 接收后再解压缩数据块. 所以和其他文件传输协议比起来, rsync在跨主机传输文件时会占用较小的带宽.
不需要特殊权限: 安装和运行rsync 不需要特殊权限.
3.rsync备份类型
全量备份:顾名思义就是一周内完整的备份,对所有数据做一次全部备份
增量备份:只备份上一次备份之后的数据,每天生成一个备份文件
差异备份:可以理解为从上次完整备份后到今日所有变化的数据
4.rsync同步源
在远程同步任务中,负责发起rsync司步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源(备份源)。在同步过程中,同步源负责提供文件的原始位
置,发起端应对该位置具有读取权限。
上行同步:客户端与服务端同步内容,可以理解为客户端从服务器上下载内容
下行同步:服务端与客户端同步内容,可以理解为客户端将内容上传到服务器
二、rsync命令
#命令的用法
rsync [选项] 原始位置 目标位置
#----------常用选项--------------------------
-r:递归模式,包含目录及子目录中的所有文件。
-l:对于符号链接文件仍然复制为符号链接文件。
-v:显示同步过程的详细(verbose)信息。
-z:在传输文件时进行压缩(compress)。
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件,即删除差异文件,保留一致性。
--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。
--password-file=file:从file中得到密码,用于免交互处理,file文件的权限要是600
三、rsync配置
1.实验环境
客户端 | 服务端 |
192.168.224.100 | 192.168.224.101 |
2.服务端配置
mkdir -p /var/www/html
vim /etc/rsyncd.conf
#编辑rsync服务配置文件
uid = root
#用户id,注意不用root使用rsync同步时可能会报错
gid = root
#组id,注意不用root使用rsync同步时可能会报错
use chroot =yes
#开启禁锢目录,只允许模块授权的源路径
address =192.168.224.100
#监听的地址即server地址
port 873
#监听地址的那个端口
log file =/var/log/rsyncd.log
#日志文件位置
pid file =/var/run/rsyncd.pid
#pid文件位置
hosts allow = 192.168.224.0/24
#允许谁使用
[xyk]
#模块名称
path = /var/www/html
#源文件路径
comment = Document Root of www.lhj.com
#模块说明,随便写
read only =yes
#是否只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
#这些类型结尾的文件不压缩
auth users =xyk
#授权可登录用户xyk多用户以空格隔开
secrets file = /etc/rsyncd_users.db
#rsyncd服务账户密码文件位置,保存退出
vim /etc/rsyncd.users.db
#编辑rsyncd账户密码文件
xyk:123456
chmod 600 /etc/rsyncd_users.db
#官方要求,最好只是赋权600!
rsync --daemon
#开启服务
netstat -natp | grep rsync
#检测端口号,确认服务是否成功开启
3.客户端配置
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安装机制
yum install -y rsync
#安装rsync
mkdir /abc
cd /abc/
#创建一个目录/abc,用来同步
rsync -avz backuper@192.168.59.111::wwwroot /abc
#使用rsync同步备份源的同步文件
ls
#查看同步是否成功
vim /etc/server.pass
123123
#编辑免交互密钥文件,第一行为密码
chmod 600 /etc/server.pass
#给密钥文件赋权600
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.59.111::wwwroot /abc
#rsync,使用密钥文件/etc/server/pass对应backuper用户,IP地址为192.168.59.111的共享模块文件进行压缩,并归档同步至当前服务器的/abc目录下,同时删除差异内容,如果原目标有的,会增加,原目标没有的,会删除。保持一致性。
ls /abc
#查看下行同步是否成功
四、inotify简介
#调整inotify内核参数(优化)
letc/ sysctl.conf(内核参数配置文件)
inotifywait:
#用于持续监控,实时输出结果
inotifywatch:
#用于短期监控,任务完成后再输出结果
max_queue_events
#监控事件队列大小
max_user instances
#最多监控实例数,可以看成最多可以监控多少个实例
max_user_watches
#每个实例最多监控文件数
inotifywait格式参数
常见参数 说明
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型(*)
五、Rsync+Inotify 实时同步
使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的
变化及时作出响应。
将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。
因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步
六、
cd /var/www/html
#切换到/var/www/html
touch file {1..10000}
#批量创建文件
mkdir /tmp/xyk -p
#在tmp目录下创建一个xyk目录
rsync --delete-before -avH --progress --stats /tmp/xyk/ /var/www/html/
#/var/www/html是需要删除的目录 /tmp/xyk/创建的删除目录,tmp目录是临时文件目录,会进行定期清理
#--delete-before 接收者在传输进行删除操作
#-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
#-H 保持硬连接的文件
#-v 详细输出模式
#--progress 在传输时显示传输过程
#--stats 给出某些文件的传输状态
七、验证实验
cd /var/www/html
ls
#文件夹显示为空
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署