使用inotify+csync2实现文件的双向同步

发布时间:2020-08-19编辑:脚本学堂
使用inotify+csync2实现文件的双向同步

使用inotify+csync2实现文件的双向同步,有需要的朋友可以参考下。

1、系统版本:
Red Hat Enterprise linux Server release 5.4 (Tikanga)
KERNEL:2.6.18-164.el5

2、需要的文件:
inotify-tools-3.13.tar.gz
librsync-0.9.7.tar.gz
libgcrypt-1.4.4.tar.gz
libgpg-error-1.7.tar.gz
libtasn1-2.1.tar.gz
gnutls-2.6.6.tar.bz2
sqlite-2.8.17.tar.gz
sqlite-autoconf-3070900.tar.gz
csync2-1.34.tar.gz
 
注意安装顺序,最后安装csync2,并且在安装csync2前,需要做以下操作:
 

复制代码 代码如下:
# echo "/usr/local/lib" >> /etc/ld.so.conf
# echo "csync2 30865/tcp" >> /etc/services
# ldconfig

3、安装csync2
 4、在相应服务器上创建
# mkdir /data/csync_backup //创建备份相关的目录
以下操作只需要在单台服务器上进行操作:
 
1、安装完csync2后,在安装目录内运行make cert会生成相应的口令文件,如果
没有运行make cert,那么需要手动执行命令:

复制代码 代码如下:
# openssl genrsa -out /etc/csync2_ssl_key.pem 1024
# openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr
# openssl x509 -req -days 600 -in /etc/csync2_ssl_cert.csr -signkey /etc/csync2_ssl_key.pem
-out /etc/csync2_ssl_cert.pem

2、# cd /etc/xinetd.d目录内,创建文件csync2,内容如下

复制代码 代码如下:
service csync2
{
disable = no
protocol = tcp
flags = REUSE
socket_type = stream
wait = no
user = root
group = root
server = /usr/local/sbin/csync2
server_args = -i 
}

3、
# csync2 -k /etc/csync2.key

4、
# vi /etc/csync2.cfg
 

复制代码 代码如下:
#nossl * *;
group mygroup
{
 host jtecp2 jtecp1; //定义组成员
 
 key /etc/csync2.key;
 
 include /app/tomcat; //需要同步的目录
 
 exclude /app/tomcat/log; //需要排除的目录。
 exclude *~ .*; //排除同步.开头的文件
 
action
{
 pattern *; 
 logfile "/var/log/csync2_action.log";
 do-local;
}
 
backup-directory /data/csync_backup; //防错备份目录,根据自己的需求设置。
backup-generations 3;
auto younger; //同步以最新的文件为标准更新.
}

5、
# cd /usr/local/sbin
# vi csync2.sh

复制代码 代码如下:
#!/bin/bash
src=/app/tomcat
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f'
--exclude ".swp$"
-e close_write,modify,delete,create,attrib
${src}
| while read file
do
#csync2 -x >/dev/null 2>&1
csync2 -xv
echo "${src} was csynced....."
done >> /var/log/csync2.log 2>&1

6、将以上单机产生的文件拷贝到另一台机器
主要是/etc/csync2*
/usr/local/sbin/csync2.sh

7、

复制代码 代码如下:
# service xinetd restart
# chmod a+x csync2.sh
# ./csync2.sh //分别在三台机器上创建并执行此脚本,并将其加入/etc/rc中

遇到错误:
在安装csync2的时候,出现了与cfgfile_scanner.c文件编译相关错误,原因在于系统缺少了gcc-c++-4.1.2-46.el5.x86_64.rpm这个包。

您可能感兴趣的文章:
rsync与inotify实现数据同步的实例分享
单向实时同步文件rsync+inotify-tools的配置教程
rsync+inotify 文件实时同步的配置详解
inotify+rsync配置实例详解
rsync+inotify 文件同步配置实例
inotify-tools+rsync实时同步文件的配置方法
使用rsync与inotify实现网站程序的主从同步
Inotify自动监控文件并同步到服务器的shell脚本
使用rsync与inotify实时同步备份数据
使用inotifywait实现目录监控