当前位置: 首页 > 工具软件 > csync > 使用案例 >

c 实现linux文件同步,inotify+csync2实现文件双向同步

冀胤运
2023-12-01

Normal

0

7.8 磅

0

2

false

false

false

EN-US

ZH-CN

X-NONE1、操作系统版本:

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这个包!

 类似资料: