利用rsync实现金笛邮件的用户数据的增量备份

利用rsync实现金笛邮件的用户数据的增量备份
作者:rainbird 时间:2008-08-07

场景:
    安装了一台金笛邮件服务器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 [email protected]::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端指定认证用户的密码.这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读

你可能感兴趣的:(职场,rsync,休闲,双机热备)