远程同步
- rsync工具
- rsync工具介绍
- 配置rsync备份源
- rsync命令用法(发起端)
- rsync源的免交互处理
- 缺点
- inotify工具
- 关于inotify
- rsync+inotify实时同步(发起端)
rsync工具
rsync工具介绍
这是一款快速增量备份工具:
·Remote Sync,远程同步
·支持本地复制,或者与其他SSH、rsync主机同步
·官方网站:rsync官网
配置rsync备份源
##图形化界面系统已经装了rsync了,最小化是没有的。
[root@oracle ~]# yum -y install rsync
[root@oracle ~]# vim /etc/rsyncd.conf
##里面有模板,可以直接用,也可以在最后面自己写
uid = nobody
gid = nobody
use chroot = yes
address = 20.0.0.88
port 873
log file = /var/log/rsyncs.log
pid file = /var/run/rsyncd.pid
hosts allow = 20.0.0.0/24[wwwroot]
path = /var/www/html
comment = lzy
read only = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db[root@oracle ~]# vim /etc/rsyncd_users.db ##在里面新增一条自己设置的登录用户和密码格式如下
backuper:As123
[root@oracle ~]# chmod 600 /etc/rsyncd_users.db ##设置权限
[root@oracle ~]# rsync --daemon ##启动服务
[root@oracle ~]# netstat -anpt |grep rsync
tcp 0 0 20.0.0.88:873 0.0.0.0:* LISTEN 104399/rsync
rsync命令用法(发起端)
常用选项
-a:归档模式,递归并保留对象属性,等同于-rlptgoD
-v:显示同步过程的详细(verbose)信息
-z:在传输文件时进行压缩(compress)
-H:保留硬连接文件
-A:保留ACL属性信息
–delete:删除目标位置有而原始位置没有的文件
–checksum:根据对象的校验和来决定是否跳过文件
配置源的两种表示方法
格式1:用户名@主机地址::共享模块名
格式2: rsync://用户名@主机地址/共享模块名
[root@localhost ~]# rsync -avz backuper@20.0.0.88::wwwroot /root
[root@localhost ~]# rsync -avz rsync://backuper@20.0.0.88/wwwroot /root
我这边用第一种方法演示:
目标机器:
[root@localhost ~]# rsync -avz backuper@20.0.0.88::wwwroot /var/www/html/
Password: ##输入密码
receiving incremental file list
./sent 27 bytes received 47 bytes 16.44 bytes/sec
total size is 0 speedup is 0.00
rsync源的免交互处理
使用–password-file=密码文件位置
##这边要自己建
[root@localhost ~]# cat /etc/server.pass
As123
[root@localhost ~]# rsync -avz --delete --password-file=/etc/server.pass backuper@20.0.0.88::wwwroot /var/www/html/
receiving incremental file listsent 20 bytes received 40 bytes 120.00 bytes/sec
total size is 0 speedup is 0.00
缺点
定期同步的不足
执行备份的时间固定,延迟明显、实时性差
当同步源长期不变化时,密集的定期任务是不必要的
inotify工具
关于inotify
rsync+inotify实时同步(发起端)
[root@localhost ~]# vim /etc/sysctl.conf
##最下面加入下面三条
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 104857
##解释
max_queue_events:监控事件队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数
[root@localhost opt]# sysctl -p
##重新加载
##把压缩包放到随便啥目录里面
[root@localhost abc]# ll
-rw-r--r-- 1 root root 358772 Oct 23 12:22 inotify-tools-3.14.tar.gz
[root@localhost abc]# tar zxvf inotify-tools-3.14.tar.gz -C /opt/
[root@localhost abc]# cd /opt/
[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 inotify-tools-3.14]# inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/
##正在监控,另外再开启一个新的终端设置
[root@localhost ~]# cd /var/www/html
[root@localhost html]# echo "this is test" > test
##去看一下监控
[root@localhost inotify-tools-3.14]# inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/
/var/www/html/ CREATE test
/var/www/html/ MODIFY test##最后去写个脚本
[root@localhost inotify-tools-3.14]# vim /opt/inotify.sh
#!/bin/bashINOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@20.0.0.88::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
doif [ $(pgrep rsync | wc -l) -le 0 ] ; then$RSYNC_CMDfi
done##然后给两台机器的同步目录权限都设置为777再把源机器/etc/rsyncd.conf设置的只读关了
[root@localhost inotify-tools-3.14]# chmod 777 /var/www/html
[root@oracle ~]# chmod 777 /var/www/html
[root@oracle ~]# vim /etc/rsyncd.conf
read only = no
#因为改了配置文件所以要重新启动
[root@oracle ~]# netstat -anpt |grep rsync
tcp 0 0 20.0.0.88:873 0.0.0.0:* LISTEN 104399/rsync
[root@oracle ~]# kill -9 104399
##再把之前的PID文件删掉
[root@oracle ~]# rm -rf /var/run/rsyncd.pid
[root@oracle ~]# rsync --daemon
去执行发起端的脚本
然后再去发起端同步目录建文本
最后看看源主机有没有