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