Linux教程之白嫖宝塔Rsync+inotify监控同步

  • A+
所属分类:VPS相关

安装完宝塔对于宝塔内部结构不太了解的可以看下图:

 

 

Rsync同步原理
就目前宝塔给的同步工具,老天鹅,有点小贵,不过对于土豪来说没关系,这点钱不够租台服务器的钱,洒洒水辣;可以理解咱们这些苦逼太穷,所以rsync才能发扬光大。它的原理大家都能看出来,图文说一下:rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

 

操作顺序开始安装
准备一主两备服务器 例:(192.168.0.1主)(192.168.0.2备)(192.168.0.3备)
全部运行下面的命令:
首先安装宝塔:yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

开启873端口

关闭Linux防火墙:systemctl stop firewalld

关闭:setenforce 0

rsync安装:yum install rsync

监控安装:yum -y install inotify-tools && rpm -qa inotify-tools

主服务器配置:

vi /etc/rsyncd.conf

uid = root
gid = root
use chroot = yes
address = 192.168.0.1 #主服务器IP
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.0.0/24 #网段
[wwwroot]
path = /www/back #共享目录随机
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = rsync
secrets file = /etc/rsync.password #数据互通密码
创建密码:vi /etc/rsync.password

root:123456
启动rsync:rsync --daemon

设置监控生效:vi /etc/sysctl.conf

fs.inotify.max_user_instances = 1024 #最大连接数
fs.inotify.max_user_watches = 81920000 #最大容量
测试数值是否生效:

cat /proc/sys/fs/inotify/max_user_watches

cat /proc/sys/fs/inotify/max_user_instances

 

公钥速传:

ssh-keygen

回车回车

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.2

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.0.3

主服务器结束

备份服务器开始:

vi /etc/rsync.password

123456
备份服务器结束

开始同步:

#! /bin/bash
while inotifywait -r /www/server/panel/ # #同步的站点
do
rsync -av --delete --progress -e 'ssh -p 22' /www/wwwroot/ [email protected]:/www/wwwroot/
rsync -av --delete --progress -e 'ssh -p 22' /www/wwwroot/ [email protected]:/www/wwwroot/
done
相关的参数就自行百度吧,到这一步就同步站点文件 成功了,测试在主服务器增加站点,但登录备份服务器的宝塔上还是空空的……

宝塔配置文件的同步:

#! /bin/bash
while inotifywait -r /www/server/panel/ # #同步的站点
do
rsync -av --delete --progress -e 'ssh -p 22' /www/server/panel/ [email protected]:/www/server/panel/
rsync -av --delete --progress -e 'ssh -p 22' /www/server/panel/ [email protected]:/www/server/panel/
rsync -av --delete --progress -e 'ssh -p 22' /www/wwwroot/ [email protected]:/www/wwwroot/
rsync -av --delete --progress -e 'ssh -p 22' /www/wwwroot/ [email protected]:/www/wwwroot/
done
貌似是可以同步了,不过……面板大多数功能依赖云端服务(证书申请,产品购买,软件列表等),该功能仅用于云端服务,不涉及敏感操作。

 

这就是拖家带口都同步过来了。这就需要排除一些不必要同步的文件

rsync -av --delete --progress --exclude-from= ‘no.txt’
如果现在是[root@localhost ~]#那就给no.txt换个位置,比如home、etc?

vi /home/no.txt

runtime/*
public/fastexport/*
public/.user.ini
config/*
data/edate.pl
data/session_last.pl
data/session/
data/sess_files/
data/control.conf
data/port.pl
data/admin_path.pl
class/
data/login_token.pl
data/userInfo.json
pyenv/bin/
pyenv/*
#BT-Task
#BT-Panel
/www/server/nginx/sbin/*
/www/server/nginx/*.pl
/plugin/
logs/
vhost/nginx/btwaf.conf
vhost/nginx/phpfpm_status.conf
install/nginx.sh

这是8.0.0版本的宝塔配置文件,可供参考

那么就加进去试试吧:

#! /bin/bash
while inotifywait -r /www/server/panel/ # #同步的站点
do
rsync -av --delete --progress --exclude-from='/home/no.txt -e 'ssh -p 22' /www/server/panel/ [email protected]:/www/server/panel/
rsync -av --delete --progress --exclude-from='/home/no.txt -e 'ssh -p 22' /www/server/panel/ [email protected]:/www/server/panel/
rsync -av --delete --progress --exclude-from='/home/no.txt -e 'ssh -p 22' /www/wwwroot/ [email protected]:/www/wwwroot/
rsync -av --delete --progress --exclude-from='/home/no.txt -e 'ssh -p 22' /www/wwwroot/ [email protected]:/www/wwwroot/
done
细节处理
每次在主节点0.1发起站点增删改,那么监控就感知到文件变动,执行rsync进行同步,相关服务仅需重启Nginx即可。

一般有报错也就是服务未开启,重启一下rsync就能解决,或者重启服务器也是不错的选择。

小结
宝塔中自带的也是rsync,不过同步下来还是不如源代码果断,怎么停止rsync网上有,接下来就是看你的创造力,未来可期,小运维的默默分享。
————————————————

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: