- rsync远程同步
- rsync服务器
- Rsync介绍
- 同步方式
- 增量备份
- rsync命令
- 本地复制
- 配置源的两种表示方法
- inotify简介
- 配置rsync下行同步(远程复制)
- 1.master(192.168.254.10)
- 2.slave(192.168.254.20)
- rsync+inotify实时同步
- 1.master(192.168.254.10)
- 2.slave(192.168.254.20)
rsync是一筐开源的、快速的(相对)、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行该表原有数据的属性信息,实现数据的备份迁移特性。
rsync软件适用于unix/linux/windows等多种操作系统平台
rsync是一个快速和非常方便给的文件复制工具。他能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制
以其delta-transfer算法闻名
rsync监听端口:873
rsync运行模式:C/S
同步方式1.全量备份
2.原有的数据全部传送
3.把原来的文件和新的文件一起统一传送
4.全量复制,效率低
增量备份在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输增量复制,效率高
rsync命令格式:
rsync [选项] 原始位置 目标位置
| 常用选项 | 说明 |
|---|---|
| -r | 递归模式,包含目录及子目录中的所有文件 |
| -l | 对于符号链接文件任然复制为符号链接文件 |
| -v | 显示同步过程的详细信息 |
| -z | 在传输文件时进行压缩 |
| -a | 归档模式,递归并保留对象属性 ,等同于-rlptgoD |
| -p | 保留文件的权限标记 |
| -t | 保留文件的时间标记 |
| -g | 保留文件的属组标记(仅超级用户使用) |
| -o | 保留文件的属主标记(仅超级用户使用) |
| -H | 保留硬链接文件 |
| -A | 保留ACL属性信息 |
| -D | 保留设备文件及其他特殊文件 |
| - -delete | 删除目标位置有而原始位置没有的文件 |
| - -checksum | 根据对象的校验和来决定是否跳过文件 |
常用 -a -v -z
本地复制rsync -avz /abc /opt rsync -avz /abc/ /opt/
区别
[root@localhost ~]# cd /opt/ [root@localhost opt]# mkdir /abc [root@localhost opt]# cd /abc/ [root@localhost abc]# ls [root@localhost abc]# touch 1.txt 2.txt [root@localhost abc]# ls 1.txt 2.txt [root@localhost abc]# cd / [root@localhost /]# rsync -avz /abc /opt/
[root@localhost opt]# rm -rf abc/ [root@localhost opt]# cd - / [root@localhost /]# rsync -avz /abc/ /opt/配置源的两种表示方法
格式一:
用户名@主机地址::共享模块名 例: rsync -avz backuper@192.168.254.200::wwwroot /root #backuper指的是用户身份 #wwwroot代表的是这个模块
格式二:
rsync://用户名@主机地址/共享模块名 例: rsync -avz rsync://backuper@192.168.254.200/wwwroot /root #类似URL的方式传输
#URL:具体的位置点
#URI:标识的是拥有同一特性或类型的一个集合
inotify简介可以监控文件系统的变动情况,并作出通知响应
-
调整inotify内核参数(优化)
-
/etc/sysctl.conf(内核参数配置文件)
max_queue_events #监控事件队列大小 max_user_instances #最多监控实例数 max_user_watches #每个实例最多监控文件数
-
inotifywait:用于持续监控,实时输出结果
-
inotifywatch:用于短期监控,任务完成后再输出结果
例:
inotifywait -mrq -e modify,create,move,delete /var/www/html
| -m | 持续进行监控 |
|---|---|
| -r | 递归监控所有子对象 |
| -q | 简化输出信息 |
| -e | 指定要监控哪些事件类型 |
| modify | 修改 |
| create | 创建 |
| move | 移动 |
| delete | 删除 |
环境配置
| 主机 | 操作系统 | IP地址 | 软件 / 安装包 / 工具 |
|---|---|---|---|
| Master | CentOS7 | 192.168.254.10 | rsync |
| Slave | CentOS7 | 192.168.254.20 | rsync / inotify-tools-3.14.tar.gz |
下行同步:将master服务器数据备份到slave服务器
1.master(192.168.254.10)systemctl stop firewalld.service setenforce 0 yum -y install httpd rsync vim /etc/rsyncd.conf uid = nobody gid = nobody use chroot = yes address = 192.168.254.10 port 873 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid hosts allow = 192.168.254.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 = rui secrets file = /etc/rsyncd_users.db
vim /etc/rsyncd_users.db rui:123123 chmod 600 /etc/rsyncd_users.db rsync --daemon netstat -natp | grep rsync cd /var/www/html touch aaa.html bbb.html ls2.slave(192.168.254.20)
systemctl stop firewalld.service setenforce 0 yum -y install rsync cd /opt mkdir hhh chmod 777 hhh
vim /etc/server.pass 123123 chmod 600 /etc/server.pass rsync -az --delete --password-file=/etc/server.pass rui@192.168.254.10::wwwroot /opt/hhh ls hhhrsync+inotify实时同步 1.master(192.168.254.10)
vim /etc/rsyncd.conf read only = no kill `cat /var/run/rsyncd.pid` netstat -natp | grep rsync rsync --daemon netstat -natp | grep rsync chmod 777 /var/www/html2.slave(192.168.254.20)
cat /proc/sys/fs/inotify/max_queued_events cat /proc/sys/fs/inotify/max_user_instances cat /proc/sys/fs/inotify/max_user_watches vim /etc/sysctl.conf fs.inotify.max_queued_events = 32768 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576 sysctl -p
yum -y install gcc gcc-c++ #放入安装包 tar zxvf inotify-tools-3.14.tar.gz -C /opt cd /opt/inotify-tools-3.14/ ./configure make && make install
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/hhh/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/hhh/ rui@192.168.254.10::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
cd /opt/ chmod +x inotify.sh ./inotify.sh & cd /opt/haha touch ccc.html rm -rf aaa.html
master(192.168.254.10)上验证
cd /var/www/html ls
此处报错是因为我们以匿名用户身份登陆的
更改uid和gid可以避免报错
vim /etc/rsync.conf
slave(192.168.254.20)
master(192.168.254.10)
.end



