利用rsync实现金笛邮件的用户数据的增量备份
作者:李华堂
 

场景:

安装了一台金笛邮件服务器A(ip:192.168.0.45).同时安装另外一台邮件服务器B(ip:192.168.0.46)以实现定时备份A服务器的邮件数据的功能.这样当A服务器由于未知原因发生灾难时备份机可以通过直接修改IP的方式接替A机的工作.并且用户数据为最后一次备份的数据.

分析:

因为金笛邮件的用户信息和用户数据都以文件的方式存储在jdmail/accounts中.所以我们只要保证能够定时同步accounts目录里的文件信息就实现了用户数据的增量备份

配置:

rsync的主配置文件为:rsyncd.conf

-.配置主服务器A(服务端)

1.用vi打开rsync的配置文件rsyncd.conf

vi /etc/rsyncd.conf #不存在的话手工创建即可

#全局参数设置:这部分设置的参数影响整个程序的运行

uid = root #rsync运行时的用户ID (关于用户ID和用户组ID的设置只要保证具有读取要同步文件和文件夹的权限即可)

gid = root #rsync运行时的用户组ID

max connections = 0 #同时最大的连接数,0为不限制

pid file = /var/log/rsync/rsyncd.pid #记录rsync运行时的进程ID

lock file = /var/log/rsync/rsync.lock #以文件的方式锁的方式,保证rsync的一次运行

log file = /var/log/rsync/rsyncd.log #rsync日志信息包括启动信息同步信息等

#port = 9834 #可以指定rsync运行时使用的端口,默认使用873(不指定则使用默认)



#同步模块配置

[accounts] #要同步的文件夹的别名,此处直接写的accounts,只是一个名称方便记忆即可,客户端同时要用到

path = /root/jdmail/accounts #指定要同步的具体文件夹,此处为实际同步的文件夹,我们指定的为accouts

comment = jdmail backup accounts #备注信息,主要是一些说明信息,用来帮助记忆等

ignore errors #忽略一些无关的错误信息

read only = false #是否设置以只读的方式运行,本工具支持对外同步和回传哟

list = false #是否允许客户端查看文件列表

host allow = 192.168.0.46 #允许同步的客户机IP,多个用","隔开

auth users = jdmail #同步认证时使用的用户名,可以任意指定,但必需存在于下一项的密码文件中

secrets file = /etc/rsyncd.scrt #密码认证文件,此文件中包含客户端认证时的用户名和密码的对应关系 ,配置文件名可以任意



2.编辑密码文件:

vi /etc/rsyncd.scrt

jdmail:mailbkjd #密码格式:[用户名:密码] 如果想设置多个认证用户名和密码对的话,要写成多行.一行保存一对

这里需要注意的rsync对于密码文件的权限要求比较严格,只能root用户对该文件具有读写权限

chmod 600 /etc/rsync.scrt



3.配置rsync运行

rsync服务的监听由xinet来统一分配

打开rsync在xinet中的配置文件

vi /etc/xinetd.d/rsync

service rsync

{

disable = yes

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = --daemon

log_on_failure += USERID

}

找到:disable=yes

改成:disable=no



重启xinetd以启动rsync服务

service xinetd restart



查看rsync是整正常运行

netstat -ant|grep :873

如果看到下面一行说明rsync正常运行了,恭喜成功一半了

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN



二.服务器B(客户端配置)

1.编辑密码文件

vi /etc/rsyncd.scrt

mailbkjd #本配置文件只记录密码即可

修改权限

chmod 600 /etc/rsyncd.scrt



2.写成脚本的方式方便调用

vi rsync.sh

#!/bin/bash

/usr/bin/rsync -vlzrtogp --progress --delete jdmail@192.168.0.45::accounts /jdmail/accounts --password-file=/etc/rsyncd.scrt

简单说明:

-vlzrtogp 具体意思参看后面的参数解释

--pprogress 显示同步进度信息

--delete 如果服务器删除的文件在客户端同样删除

jdmail 为认证的用户名

192.168.0.45 为服务器IP

::accounts 为认证的模块

/jdmail/accouts 为本地要存放同步文件的文件夹

--password-file=/etc/rsyncd.scrt 指定密码认证文件,这样在执行同步命令时不需要再输入密码

以上为通过rsync实现文件增量同步的配置过程,相信你已经成功了,以后也可以更加放心和省心了,Good luck !



附:

rsync命令参数

-v表示verbose详细显示

-z表示压缩

-r表示recursive递归

-t表示保持原文件创建时间

-o表示保持原文件属主

-p表示保持原文件的参数

-g表示保持原文件的所属组

-a存档模式

-P表示代替-partial和-progress两者的选项功能

-e ssh建立起加密的连接。

--partial阻止rsync在传输中断时删除已拷贝的部分(如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上删除已拷贝的部分文件

--progress是指显示出详细的进度情况

--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致

--exclude不包含/ins目录

--size-only 这个参数用在两个文件夹中的差别仅是源文件夹中有一些新文件,不存在重名且被修改过的文件,因为这种文件有可能会因为内容被修改可大小一样,而被略过。这个参数可以大大地提高同步的效率,因为它不需要检查同名文件的内容是否相同。

--password-file来指定密码文件,内容包含server端指定认证用户的密码.这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读

公司网站:www.chundi.com 产品技术支持网站:www.mailer.com.cn  产品商务渠道网站:www.turbomail.cn
Copyright 1997-2017 北京春笛信息技术有限公司 地址:北京海淀区知春路23号863软件园量子银座九层