多服务器之间实现文件同步,详细步骤如下(本文档为懒人教程,粘贴复制就可成功,简单实用,快来试试吧~)
简介:本例为主服务器上的文件同步到多台从服务器
一.首先,主服务器与从服务器之间建立相互信任关系
参考:https://blog.csdn.net/smile_caijx/article/details/82079668
1
.先在主机A使用命令创建密钥: ssh-keygen -t rsa
2
.在/root/.ssh目录里面看到创建的密钥: ls /root/.ssh/
3
.把id_rsa.pub文件复制到主机B的/root/.ssh目录,并改名为:authorized_keys
scp -r /root/.ssh/id_rsa.pub 10.16.0.32:/root/.ssh/authorized_keys
4
.测试一下;scp -r root@10.16.0.32:/usr/local/temp /usr/local/temp
5
.这只是让A服务器信任了B服务器,还需要让B服务器信任A服务器,步骤同上
6
.注意,如果有多台服务器,则将所有从服务器的id_rsa.pub中内容复制到主服务器的 authorized_keys 文件中
二.主服务器(Server)
参考:https://www.cnblogs.com/MacoLee/p/5633650.html
其中主服务器需要安装rsync与inotify,主服务器作为server,向备份服务器client传输文件
1
.安装rsync
a.安装rsync和xinetd,并创建目录: yum install rsync xinetd
b.配置xinetd: vi /etc/xinetd.d/rsync
c.将disable = yes修改为: disable = no
d.启动xinetd服务: service xinetd start
2
.建立密码认证文件,代码如下:
a. [root@Server ]# echo “rsync-pwd” >/etc/rsync.passwd
#其中rsync-pwd可以自己设置密码,rsync.passwd名字也可以自己设置
b. [root@Server]# chmod 600 /etc/rsync.passwd
#无论是为了安全,还是为了避免出现以下错误,密码文件都需要给600权限
3
.安装inotify
[root@Server]# cd /usr/src/
[root@Server src]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@Server src]# tar zxvf inotify-tools-3.14.tar.gz
[root@Server src]# cd inotify-tools-3.14
[root@Server inotify-tools-3.14]# ./configure –prefix=/usr/local/inotify
[root@Server inotify-tools-3.14]# make
[root@Server inotify-tools-3.14]# make install
4
.创建rsync复制脚本,这个脚本放在主服务器上的根目录的/home目录下
创建文件名称:
inotifywaitrsync.sh
复制一下内容到
inotifywaitrsync.sh
:
inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ -e modify,delete,create,attrib /usr/Java/redPackets/apache-tomcat-7.0.70/webapps/redPackets/html-H5/html/ | while read file
do
#从服务器一
rsync -avPz –progress /usr/Java/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/ 47.114.181.11:/usr/Java/redPackets/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/
rsync -avPz –delete /usr/Java/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/ 47.114.181.11:/usr/Java/redPackets/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/
#从服务器二
rsync -avPz –progress /usr/Java/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/ 47.114.177.199:/usr/Java/redPackets/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/
rsync -avPz –delete /usr/Java/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/ 47.114.177.199:/usr/Java/redPackets/apache-tomcat-7.0.70/webapps/ROOT/html-H5/html/
echo “${file} was synchronized”
done
5.给脚本赋予764权限: chmod 764 rsync.sh
6.a.启动脚本: nohup ./inotifywaitrsync.sh &
b.杀进程: ps -ef|grep inotify|grep -v grep|cut -c 9-15|xargs kill -9
c.查看进程是否启动: ps -ef|grep inotify
到此文件同步功能就实现了~~~