rsync远程同步

Rsync 介绍

① rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行
改变原有数据的属性信息,实现数据的备份迁移特性。
② rsync软件适用于unix/linux/windows等多种操作系统平台
③ rsync是一个快速和非常方便的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的
参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制
④ 以其delta-transfer算法闻名。
⑤ rsync监听端口:873
⑥ rsync运行模式:C/S

rsync同步源

rsync同步源
指备份操作的远程服务器,也称为备份源
例:
A服务器同步B服务器的数据,B服务器就是备份源
反过来,B服务器同步A服务器的数据,那么A服务器就是备份源
在这里插入图片描述

同步方式

同步方式
① 全量备份:
② 原有的数据全部传送
③ 把原来的文件和新的文件一起统一传送
④ 全量复制,效率低

增量备份
在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输
增量复制,效率高

rsync

rsync [选项] 原始位置 目标位置

常用选项 说明
-r 递归模式,包含目录及子目录中的所有文件
-l 对于符号链接文件仍然复制为符号链接文件
-v 显示同步过程的详细信息
-z 在传输文件时进行压缩
-a 归档模式,递归并保留对象属性,等同于-rlptgoD
-p 保留文件的权限标记
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-H 保留硬链接文件
-A 保留ACL属性信息
-D 保留设备文件及其他特殊文件
–delete 删除目标位置有而原始位置没有的文件
–checksum 根据对象的校验和来决定是否跳过文件

配置rsync

基本思路

建立rsyncd.conf配置文件、独立的账号文件
启用rsync的 --daemon模式
配置文件rsyncd.conf

认证配置auth users、secrets file,不加则为匿名
独立的账号文件

用户名:密码
每行一个用户记录
独立的账号数据,不依赖系统账号
启用rsync服务

通过 --daemon独自提供服务,rsync --daemon
执行kill $(cat /var/run/rsyncd.pid)关闭服务

配置源的两种表示方法

格式一:
用户名@主机地址::共享模块名
rsync -avz backuper@192.168.4.200::wwwroot /root

格式二:
rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192.168.4.200/wwwroot /root

实验

master配置rsync下行同步

// 
Master	CentOS7	192.168.142.143	rsync
Slave	CentOS7	192.168.142.144	rsync / inotify-tools-3.14.tar.gz
// 
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# yum -y install httpd rsync 
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# su
[root@master ~]# 
[root@master ~]# cd /opt
[root@master ~]# vim /etc/rsyncd.conf
uid = nobody      ##用户id
gid = nobody      ##组id
use chroot = yes  ##开启禁锢在源目录
address = 192.168.142.143   ##监听地址
port 873                    ##默认端口
log file = /var/log/rsyncd.log  ##日志文件位置
pid file = /var/run/rsyncd.pid  ##存放进程Id的文件位置
hosts allow = 192.168.142.0/24  ##允许访问的主机或网段
[wwwroot]                       ##共享模块名称
path = /var/www/html            ##源目录路径
comment = Document Root of www.lic.com
read only = yes                 #是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z  #同步时不再压缩的文件类型
auth users = zhangsan    #授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db   #存放账户信息的数据文件,如采用匿名的方式,只要将其中的 “auth users” 和 “secrets file”配置项去掉即可.
第一部分定义共享模块全局模块配置
第二部分:共享模块(可以为多个)  可以对应不同的“源目录” 和授权账号信息
第三部分,此配置文件是为rsync --daemon模式设置的

[root@master ~]# vim /etc/rsyncd_users.db
zhangsan:123qwe   #无需建立同名系统用户



[root@master ~]# chmod 600 /etc/rsyncd_users.db  ##官方要求赋权600[root@master ~]# rsync --daemon   ##开启服务
[root@master ~]# netstat -natp | grep rsync
tcp        0      0 192.168.142.143:873     0.0.0.0:*               LISTEN      27458/rsync         
[root@master ~]# cd /var/www/html   ##切换到共享目录
[root@master html]# touch aaa.html bbb.html  ##创建两个文件
[root@master html]# ll -ld /var/www/html
drwxr-xr-x 2 root root 38 814 15:07 /var/www/html

[root@master html]# ls
aaa.html  bbb.html
[root@master html]# 

slaver

// 
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install rsync
[root@localhost ~]# hostnamectl set-hostname slaver
[root@localhost ~]# su
[root@slaver ~]# cd /opt
[root@slaver opt]# mkdir test
[root@slaver opt]# chmod 777 test
[root@slaver opt]# vim /etc/server.pass
[root@slaver opt]# chmod 600 /etc/server.pass
[root@slaver opt]# rsync -az --delete --password-file=/etc/server.pass zhangsan@192.168.142.143::wwwroot /opt/test
[root@slaver opt]# ls test/
aaa.html  bbb.html

inotify

可以监控文件系统的变动情况,并做出通知响应
调整inotify内核参数(优化)
/etc/sysctl.conf(内核参数配置文件)

//
inotifywait:			#用于持续监控,实时输出结果
inotifywatch:			#用于短期监控,任务完成后再输出结果
max_queue_events    	#监控事件队列大小
max_user_instances  	#最多监控实例数
max_user_watches    	#每个实例最多监控文件数  

**inotifywait(**持续监控并实时输出监控结果的命令)
格式:inotifywait [参数]

常见参数 说明
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型

实验

rsync+inotify实时同步

master

// 
[root@master ~]# vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = yes
address = 192.168.142.143
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.142.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.lic.com
read only = no
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = zhangsan
secrets file = /etc/rsyncd_users.db


[root@master html]# kill `cat /var/run/rsyncd.pid`
[root@master html]# netstat -anpt | grep rsync
[root@master html]# rsync --daemon
[root@master html]# netstat -anpt | grep rsync
tcp        0      0 192.168.142.143:873     0.0.0.0:*               LISTEN      28554/rsync 

slaver

// 
[root@slaver ~]# yum -y install gcc gcc-c++
[root@slaver ~]# cd /opt
[root@slaver opt]# rz -E
rz waiting to receive.
[root@slaver opt]# tar xf inotify-tools-3.14.tar.gz
[root@slaver opt]# ls
inotify-tools-3.14  inotify-tools-3.14.tar.gz  rh  test
[root@slaver opt]# cd inotify-tools-3.14
[root@slaver inotify-tools-3.14]# ./configure && make && make install

调整内核参数

//
[root@slaver inotify-tools-3.14]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768      #监控时间队列,默认为16384
fs.inotify.max_user_instances = 1024	  #最多监控实例数,默认为128
fs.inotify.max_user_watches = 1048576	  #每个实例最多监控文件数,默认为8192
#当要监控的目录、文件数据量较多或者变化频繁时,建议加大参数值

编辑自动触发同步的脚本

// 
[root@slaver ~]# vim /opt/inotify.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/test/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/test/ zhangsan@192.168.142.143::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
        fi
done

//
[root@slaver ~]#cd /opt/
[root@slaver opt]# chmod +x inotify.sh 
[root@slaver opt]# ./inotify.sh 

[root@slaver opt]# cd /opt/test
[root@slaver test]# touch ccc.html
[root@slaver test]# rm -rf aaa.html

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值