使用lsync和rsync实现主备双机文件同步

时间:2023-01-17 11:56:34

一.环境

准备两台linux主机,操作系统为ubuntu10.04:

一台作为rsync的服务端,假设ip为192.85.1.9.

一台作为rsync的客户端,假设ip为192.85.1.112.

二.安装rsync和lsync

rsync能够实现文件从客户端指定目录传输到服务端指定目录,但不监控和实时功能.

lsync采用inotify原理监听某一目录,如果目录内发生增、删、改、利用rsync协议自动同步到多个服务器.inotify已并入ubuntu内核.

rsynclsync都可通过系统软件包管理器安装,可以通过下载编译源文件安装:

rsync:http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
lsync:http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz

系统软件包管理器默认安装两程序到/usr/bin目录下.

服务端不用安装lsync.

三.配置

1.服务端配置

打开/etc/rsyncd.conf文件(若没有则新建),输入以下内容:

[data]

path =/usr/lib/oracle/xe/data

uid =root

gid =root

address= 192.85.1.112

logformat= %t %a %m %f %b

syslogfacility = local3

说明:

[data]是路径别名,在配置客户端lsync时用于替代目标路径,即path,path是服务端存放同步文件的目录路径,可以按需要修改.

uid,gid是目标目录的所属者,如果不设则默认为-2(nobody).

address指定监听的ip,这个ip指客户端地址,端口默认为873.

logformat指定日志文件格式.

syslogfacility取决于rsync的启动方式,daemon方式则设为local3.



2.客户端配置

客户端rsync同样需要在/etc/下新建rsyncd.conf文件,但不用写入任何东西.

配置lsync配置文件lsyncd.conf.xml,文件地址可以用locate命令查找.

下面是设置好的文件内容:

<lsyncd version="1">

<settings>

<logfile filename="/var/log/lsyncd"/>

<binary filename="/usr/bin/rsync"/>

<callopts>

<option text="-avz"/>

<option text="--force"/>

<option text="-lt%r"/>

<option text="--delete"/>

<exclude-file/>

<source/>

<destination/>

</callopts>

</settings>

<directory>

<sourcepath="/home/ls/alipay_update/"/>

<targetpath="192.85.1.9::data"/>

</directory>

</lsyncd>

logfile指定 lsyncd的日志文件.

binary指定rsync程序路径.

Callopts标签下的子标签都是设置调用rsync时使用的参数,具体参数函数可以参考附录,%r会被替代成-r

directory指定目录,其中source子标签指定源文件目,该目录存放需要同步的文件;target标签指定rsync服务端地址和目标目录路径,data即服务端配置文件中[]的内容

系统默认的内容有很多类似<!--描述信息-->的行,表示注释信息或关闭的配置项.

四.启动服务

服务端:

终端输入/usr/bin/rsync–-daemon –config=/etc/rsyncd.conf启动rsync.

服务启动后可用psauxf|grep 'rsync'查看进程,若出现类似以下信息则说明启动成功:

使用lsync和rsync实现主备双机文件同步

客户端:

终端输入/usr/bin/rsync--daemon启动rsync.

输入/usr/bin/lsyncd--conf/etc/lsyncd.conf.xml启动lsync.

再在可以在客户指定

可能出现的错误:

ERROR: chroot failed

rsyncerror: error starting client-server protocol (code 5) at main.c(1522)[receiver=3.0.3]

原因:服务器端的目录不存在或无权限,创建目录并修正权限可解决问题.

五.关闭服务

似乎没有直接关闭的方法,但能用psaux命令查出进程号,使用kill命令关闭进程

psaux

使用lsync和rsync实现主备双机文件同步

kill2247

kill2281

.附件

rsync命令(部分)

-v,--verbose 详细模式输出

-q,--quiet 精简输出模式

-c,--checksum 打开校验开关,强制对文件传输进行校验

-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r,--recursive 对子目录以递归模式处理

-R,--relative 使用相对路径信息

-b,--backup创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。

--backup-dir将备份文件(~filename)存放在在目录下。

-l,--links 保留软链结

-L,--copy-links 想对待常规文件一样处理软链结

--delete删除那些DSTSRC没有的文件

--force强制删除目录,即使不为空

--exclude=PATTERN指定排除不需要传输的文件模式

--include=PATTERN指定不排除而需要传输的文件模式

--exclude-from=FILE排除FILE中指定模式的文件

--include-from=FILE不排除FILE指定模式匹配的文件

--version打印版本信息

--address绑定到特定的地址

--config=FILE指定其他的配置文件,不使用默认的rsyncd.conf文件

--port=PORT指定其他的rsync服务端口

--blocking-io对远程shell使用阻塞IO

-stats给出某些文件的传输状态

--progress在传输时现实传输过程

--log-format=formAT指定日志文件格式

--password-file=FILEFILE中得到密码

参考资料

http://blog.sina.com.cn/s/blog_6cf467320100m2sw.html

http://www.itlearner.com/article/4605