linux下两台服务器实时同步 不指定

jed , 2022-6-21 23:41 , 服务器技术 , 评论(0) , 阅读(717) , Via 本站原创 | |
1、下载所需的安装包:
先把两个包放在/usr/src/下。
a、rsync下载路径:http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

b、inotify下载路径:http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

源服务器:192.168.0.1   目录 /opt/test/
目标服务器:192.168.0.2  目录 /opt/test/

实现的目的就是保持这两个服务器某个文件目录保持实时同步

2. rsync 同步软件
在 源服务器 和 目标服务器 都需要安装
源服务器: 是rsync客户端,不需要配置
目标服务器: 是rsync服务器端,需要配置/etc/rsyncd.conf里的内容

3.安装rsync:

[root@nginx ~]# cd /usr/src/
[root@nginx src]# tar zxvf rsync-3.0.9.tar.gz
[root@nginx src]# cd rsync-3.0.9
[root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@nginx rsync-3.0.9]# make
[root@nginx rsync-3.0.9]# make install


创建密码认证文件:

[root@nginx rsync-3.0.9]# cd /usr/local/rsync/
[root@nginx rsync]# echo "Ad3rh5u3f" >/usr/local/rsync/rsync.passwd

给密码文件赋予600权限:

[root@nginx rsync]# chmod 600 rsync.passwd

安装后需要新建配置文件:/etc/rsyncd.conf
文件内容如下:

uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file= =/var/run/rsyncd.log

[www]
path= /opt/test
comment= web file
ignore errors
read only = no
write only = no
hosts allow = 192.168.0.1
hosts deny = *
list = false
uid = root
gid = root
auth users = webuser
secrets file = /usr/local/rsync/rsync.passwd



3.安装inotify
该工具为文件实时监控工具
注意: 在 源服务器上需要安装,目标服务器上不需要安装inotify。

[root@nginx rsync]# cd /usr/src/
[root@nginx src]# tar zxvf inotify-tools-3.14.tar.gz
[root@nginx src]# cd inotify-tools-3.14
[root@nginx inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
[root@nginx inotify-tools-3.14]# make
[root@nginx inotify-tools-3.14]# make install


4.创建监控脚本

#!/bin/bash
host=192.168.0.2
src=/opt/test/    
des=www
user=webuser
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync1.passwd $src $user@$host::$des
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

注意: 这里的 www 是在目标服务器/etc/rsyncd.conf里配置的模块名称:[www]

赋予执行权限:
chmod +x  inotify_bak.sh


然后执行:
sh inotify_bak.sh &  
放入后台执行

5. 关于启动

   目标服务器:先启动rsync后台服务: /usr/bin/rsync --daemon

   来源服务器: 执行sh inotify_bak.sh &

6. 测试:

   在来源服务器目录中新建目录和文件,inotify_bak.sh脚本会检测到,然后同步到目标服务器的相关目录下


   可以查看日志文件: /opt/soft/log/rsync.log 命令如下:观察实时同步的情况。

   tail -f  /tmp/rsync.log
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]