首页 > 代码库 > 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