目录
(2)格式二: rsync://用户名@主机地址/共享模块名
(6)保证所有用户对源目录/var/www/html都有读的权限
2.inotifywait(持续监控并实时输出监控结果的命令)
一、Rsync
1.Rsync 介绍
(1)rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行 改变原有数据的属性信息,实现数据的备份迁移特性。
(2)rsync软件适用于unix/linux/windows等多种操作系统平台
(3)rsync是一个快速和非常方便的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制
(4)以其delta-transfer算法闻名。
(5)rsync监听端口: 873
(6)rsync运行模式: C/S
2.同步方式(先全量,第二次进行增量或者差异备份)
(1)全量备份
(2)原有的数据全部传送
(3)把原来的文件和新的文件一 起统一 传送
(4)全量复制,效率低
3.rsync与cp,scp对比
(1)rsync与cp
cp是全量备份(完整拷贝),rsync当同步地没有时是全量,当对面有一部分时,会根据差异项进行同步备份(也就是增备和差备)
cp支持本地,rsync支持的是远程
(2)rsync与scp差异性
考虑两个方面
传输文件的大小
传输过程中带宽大不大
scp是块存储,将数据封装,通过网络传输,如果带宽足够,文件大小比较小那么scp更快
rsync是将数据切片然后压缩再传输,如果带宽小,文件大小比较大,rsync就要快很多
4.增量备份
在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输 增量复制,效率高.
5.rsync命令
(1)格式
rsync [选项] 原始位置 目标位置
(2)常用选项
选项 | 描述 |
-V | 显示同步过程的详细信息 |
-Z | 在传输文件时进行压缩 |
-a | 归档模式,递归并保留对象属性,等同于-rlptgoD |
-r | 递归模式,包含目录及子目录中的所有文件 |
-l | 对于符号链接文件仍然复制为符号链接文件 |
-H | 保留硬连接文件 |
-A | 保留ACL属性信息 |
-D | 保留设备文件及其他特殊文件。 |
--delete | 删除目标位置有而原始位置没有的文件 |
--checksum | 根据对象的校验和来决定是否跳过文件 |
(3)rsync本地复制
rsync -avz /abc /opt
rsync- avz /abc/ /opt
这两者是有区别的
第一个会复制abc包括abc里面的文件
第二个只复制abc里面的文件
6.配置源的两种表示方法
(1)格式一: 用户名@主机地址: :共享模块名
rsync -avz backuper@192.168.174.10: :wwwroot / root
将主机A上的/mnt目录复制到主机B的/opt目录下,使用SCP的写发
位置A:scp /mnt root@$B_ ip:/opt/ 位置B: scp root@$B_ IP:/mnt /opt
(2)格式二: rsync://用户名@主机地址/共享模块名
rsync -avz rsync: / /backuper@192.168.174.10/ wwwroot / root
补充概念:
URL:具体的位置点 http: //www.baidu. com. /ky15/men/ id01. html
URI:标识的是拥有同一特性或类型的一个 集合: http: //www .baidu . com./ky15/men
(这里的men是一个集合,是idxx.html这一类文件的集合)
7.上行同步和下行同步
8.实际操作
(1)初始化
systemctl stop firewalld
setenforce 0
(2)查看是否有rsync包
[root@localhost ~]#rpm -q rsync
rsync-3.0.9-18.el7.x86_64
(3)修改配置文件
[root@localhost ~]#vim /etc/rsyncd.conf
uid = nobody gid = nobody use chroot = yes pid file = /var/run/rsyncd.pid dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 address = 192.168.174.10 port = 873 log file = /var/log/rsycd.log hosts allow = 192.168.174.0/24 [ftp] path = /var/www/html comment = web service read only = yes auth users = backuper secrets file = /root/rsyncd_users.db
(4)为备份账户创建数据文件
[root@localhost ~]#vim /root/rsyncd_users.db
(5) 加权
[root@localhost ~]#chmod 600 /root/rsyncd_users.db
一定要600权限
(6)保证所有用户对源目录/var/www/html都有读的权限
[root@localhost ~]# mkdir -p /var/www/html
[root@localhost ~]# chmod +r /var/www/html
[root@localhost ~]# ls -ld /var/www/html
(7)启动rsync服务程序
[root@localhost ~]# rsync --daemon
[root@localhost ~]# netstat -anpt |grep rsync
关闭服务
[root@localhost ~]# kill $(cat /var/run/rsyncd.pid)
服务端
[root@localhost ~]# cd /var/www/html
[root@localhost html]# echo "hello world" >> 1.txt
客户端
[root@localhost ~]# mkdir /abc
[root@localhost ~]# rsync -avz backuper@192.168.174.10::ftp /abc/
查看同步
[root@localhost ~]# cd /abc
[root@localhost abc]# ls
PS:客户端:免交互格式配置
[root@localhost abc]# echo "123123" > /etc/sever.pass
[root@localhost abc]# chmod 600 /etc/server.pass
服务端删除
[root@localhost abc]# rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.174.10::ftp /abc/
二、inotify
使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
将inotify机制与rsync相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
因为inotify通知机制由 Linux内核提供,因此主要做本机监控,在触发式备份中,应用时更适合上行同步。
1.作用
可以监控文件系统的变动情况,并做出通知响应
调整inotify内核参数(优化)
/etc/sysct1.conf(内核参数配置文件)
inoti fywait: 用于持续监控,实时输出结果
inoti fywatch: . 用于短期监控,任务完成后再输出结果
max_ queue_ events 监控事件队列大小
max_ _user_ instances 最多监控实例数
max_ user_ watches 每个实例最多监控文件数
2.inotifywait(持续监控并实时输出监控结果的命令)
格式: inotifywait [参数] 常见参数
常见参数
选项 | 描述 |
-m | 持续进行监控 |
-r | 递归监控所有子对象 |
-q | 简化输出信息 |
-e | 指定要监控哪些事 |
2.实验rsync+inotify
服务器端
[root@localhost ~]#vim /etc/rsyncd.conf
[root@localhost ~]# kill `cat /var/run/rsyncd.pid`
[root@localhost ~]# netstat -anpt |grep rsync
[root@localhost ~]# rsync --daemon
[root@localhost ~]# netstat -anpt |grep rsync
客户端
调整inotify内核参数
[root@localhost ~]# cat /proc/sys/fs/inotify/max_queued_events
[root@localhost ~]# cat /proc/sys/fs/inotify/max_user_instances
[root@localhost ~]# cat /proc/sys/fs/inotify/max_user_watches
[root@localhost ~]#vi /etc/sysctl.conf
fs.inotify.max_queued_events = 32768 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576
[root@localhost ~]# sysctl -p 查看
安装inotify
安装inotify-tools辅助工具
inotifywait:用于持续监控,实时输出结果(增删改属性修改)
inotifywatch:用于短期监控,任务完成后再出汇总结果
[root@localhost opt]#tar xf inotify-tools-3.14.tar.gz
[root@localhost opt]#cd inotify-tools-3.14/
[root@localhost inotify-tools-3.14]#./configure
[root@localhost inotify-tools-3.14]#make && make install
开启另一个终端
在另外一个终端编写触发式同步脚本
[root@localhost ~]# vim /opt/inotify.sh
[root@localhost abc]# chmod +x /opt/inotify.sh
[root@localhost abc]# chmod 777 /var/www/html/
[root@localhost abc]# chmod +x /etc/rc.d/rc.local
[root@localhost abc]# echo '/ opt/inotify.sh' >> /etc/rc.d/rc.local 加入开机自起
[root@localhost opt]# sh -x inotify.sh