多服务器之间实现文件同步,详细步骤如下(本文档为懒人教程,粘贴复制就可成功,简单实用,快来试试吧~)
       
       简介:本例为主服务器上的文件同步到多台从服务器
      
     
    
    
    
     一.首先,主服务器与从服务器之间建立相互信任关系
    
    
    参考: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
   
到此文件同步功能就实现了~~~
 
