首页 > 代码库 > rsync+nfs+inotify

rsync+nfs+inotify

rsync:备份服务和scp差不多但是不同的是rsync是增量备份而scp是全量备份,更加节省磁盘。(备份服务器(数据库文件,全网重要文件


))

好处:增量备份

缺点:大文件传输存在瓶颈

------------------------------------------------------------------------------------------------

nfs:网络文件系统(文件服务器(jsp,jpg,gif等文件))

优点:稳定性较好。

缺点:只能处理tb级文件。容易出现单点故障问题(可以用DRBD+HEARTBEAT来调整解决),数据不安全(明文传输)

-------------------------------------------------------------------------------------------------

inotify:将监控的文件显示出来

好处:rsync只能手动找文件进行传输,有了inotify之后就可以通过监控一个目录,然后通过脚本进行自动化的备份。

缺点:只有单线程,有文件限制200个文件之后就会出现延迟。


部署过程:创建两台机器A,B(A:rsync备份机器;B:nfs+inoti+test测试机器)

-----------------------------------------------------------服务器A-------------------------------------------------------

1.关闭防火墙(这里我做了开机的启动优化)

awk‘: chkconfig --list | grep 3:on | grep -vE "sshd|rsyslog|sysstat|network|sshd" | awk ‘{print "chkconfig",$1,"off"}‘ | 


bash

2.安装rsync

yum install rsync -y

3.创建rsync配置文件目录和配置文件

mkdir /etc/rsync && cd /etc/rsync && touch rsync.conf

4.配置rsync配置文件 

uid = rsync

gid = rsync

use chroot = no

max connections = 5

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

[rong]

path=/data

ignore errors

read only = no

auth users = ls

secrets file = /etc/rsync/passwd

5.创建用户和备份目录

useradd rsync

mkdir /data

chown rsync.rsync /data

chmod 777 /data

6.创建ls(前面配置文件定义的虚拟用户)用户的密码文件并配置权限

echo "ls:123456" > /etc/rsync/passwd

chmod 600 /etc/rsync/passwd

7.启动rsync(这里需要注意rsync是后台启动的)

rsync --daemon --config=/etc/rsync/rsync.conf

8查看是否启动

lsof -i:873


到这里我们A(rsync)就配置完成了

---------------------------------------------------------服务器B-------------------------------------------------------


1.关闭防火墙(这里我做了开机的启动优化)

awk‘: chkconfig --list | grep 3:on | grep -vE "sshd|rsyslog|sysstat|network|sshd" | awk ‘{print "chkconfig",$1,"off"}‘ | 


bash

2.1配置rsync的客户端密码文件并赋予权限

echo "123456" > /root/passwd

chmod 600 /root/passwd

2.2测试客户端的rsync是否好用

rsync -r /data/ ls@10.0.0.100::rong --password-file=/root/passwd

3.安装nfs服务器(一般默认是安装的)

yum install nfs

3.1修改nfs服务器配置文件

echo "/data *(rw,all_squash)" >> /etc/exports

3.2创建nfs共享文件

mkdir /data

chmod 777 /data

3.3.启动rpcbind

/etc/init.d/rpcbind start

3.4.启动nfs

/etc/init.d/nfs start

3.5查看nfs是否成功并挂载

showmount -e localhost

mount 10.0.0.101:/data/ /mnt/

4.安装inotify

4.1安装epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

4.2安装inotify

 yum install inotify-tools -y

4.3查看inotify是否好用

A:inotifywait -rmq --format "%w%f" -e create,delete,close_write /data/

B:另创建窗口,往/data中创建文件看A窗口是否有显示

4.4编写inotify监控脚本

#!/bin/bash

inotifywait -rmq --format "%w%f" -e create,delete,close_write /data/ | while read line

do

        if [ -f $line ]

        then

                rsync -az --delete $line ls@10.0.0.100::rong --password-file=/root/passwd

        else

                rsync -za --delete -r /data/ ls@10.0.0.100::rong --password-file=/root/passwd

        fi

done

4.5安装screen

yum install screen -y

4.6创建screen后台窗口运行脚本

screen -S jk

sh jiankong.sh

Ctrl +A+D 退出

4.7查看是否能够实现nfs挂载目录的备份

cd /mnt

touch aa

然后到rsync的机器上查看/data下是否存在aa文件

然后去nfs的mnt下试着rm -rf mkdir等操作看rsync机器的/data是否能够同步这些操作。


本文出自 “我的学习” 博客,请务必保留此出处http://shuai12138.blog.51cto.com/10118203/1904210

rsync+nfs+inotify