rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync能够远程同步,支持本地复制,或者与其余SSH、rsync主机同步。html
inotify 是一个 Linux特性,它监控文件系统操做,好比读取、写入和建立。Inotify 反应灵敏,用法很是简单,而且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。
案例环境以下:linux
角色 | IP地址 | 安装软件包 |
---|---|---|
rsync同步源 | 192.168.174.141 | rsync、 |
rsync发起端 | 192.168.174.165 | rsync、inotify-tools |
vim /etc/rsyncd.conf uid = nobody gid = nobody use chroot = yes //是否禁锢在源目录,yes为是 address = 192.168.174.141 //监听地址 port 873 //监听端口 log file = /var/log/rsyncd.log //日志文件路径 pid file = /var/run/rsyncd.pid //进程ID文件路径 hosts allow = 192.168.174.0/24 //容许访问的客户机的地址段 [wwwroot] //共享模块名称 path = /var/www/html //源目录的实际地址 comment = www.kgc.cn read only = no //是否为只读 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步时 再也不压缩的文件类型 auth users = backuper //受权帐户 secrets file = /etc/rsyncd_users.db //存放帐户信息的数据文件
vim /etc/rsyncd_users.db backuper:abc123 //backuper为用户名 abc123为密码
chmod 600 /etc/rsyncd_users.db //更改备份帐户的读取权限,提升安全性 mkdir -p /var/www/html chmod 777 /var/www/html //更改源目录的读写权限 chown -R nobody:nobody /var/www/html //更改源目录的所属主及所属组
rsync --daemon netstat -natp | grep rsync tcp 0 0 192.168.174.141:873 0.0.0.0:* LISTEN 4875/rsync
将对方源目录的文件同步到发起端的/opt目录下,方法有三种:c++
(1)rsync -avz 备份用户名@同步源IP地址::共享模块名 /发起端目录 password:备份用户密码vim
rsync -avz backuper@192.168.174.141::wwwroot /opt/ password:abc123
(2) rsync -avz rsync://备份用户名@共享模块名 /发起端目录 password:备份密码安全
rsync -avz rsync://backuper@192.168.174.141/wwwroot /opt/ password:abc123
(3)免密码交互bash
vim /etc/server.pass //建立server.pass文件备份用户保存密码 abc123
chmod 600 /etc/server.pass //更改密码文件读取权限,提升安全性
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.174.141::wwwroot /opt
测试是否同步
在同步源服务器上的共享目录下建立aaa.html服务器
vim /etc/sysctl.conf //在后面加入以下参数 fs.inotify.max_queued_events = 16384 监控事件队列(16384) fs.inotify.max_user_instances = 1024 最多监控实例数(1024) fs.inotify.max_user_watches = 1048576 每一个实例最多监控文件数(1048576)
yum install gcc gcc-c++ make -y cd /opt/inofiry-tools-3.14 ./configure make && make install
从新开启一个终端并发
inotifywait -mrq -e modify,create,move,delete /var/www/html
在/var/www/html目录下建立一个a.txt文件,切换终端查看命令输出的状况tcp
用来检测本机/var/www/html目录的变更状况,一旦有更新触发rsync同步操做,则上传至服务器192.168.174.141的/var/www/htmlide
vim /opt/inotify.sh #!/bin/bash INOTIFY_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@192.168.174.141::wwwroot/" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD fi done
在发起端/var/www/html目录下建立test.txt文件
切换到同步源服务器下/var/www/html下查看
将发起端的test.txt文件删除
切换到同步源服务器,此时源服务器下的test.txt文件也被删除,说明同步成功。