Rsync+cwRsync部署BBS文件双机备份手记


目标:使用Rsync优秀强大的增量备份功能完成BBS附件和其他文件的双机备份(不涉及MYSQL主从同步)

部署环境:winsrv2003(兼职备份服务器)+CentOS5.2(专职BBS服务器)

部署工具:Rsync+cwRsync(Rsnyc的CYG win32移植)

1.在winsrv2003安装cwRsync的Server

软件主页 :http://www.itefix.no/i2/node/10650

下载:http://sourceforge.net/projects/sereds/files/cwRsync/4.0.3/

安装的时候会创建一个SvcCWRSYNC用户,用以运行cwRsync服务,这个用户的权限决定了cwRsync服务所能访问的目录权限,比如,我自己搭建的一个基于cwRsync的本机工作区和移动硬盘文件增量同步的例子里面,为了使得我的Freelaunchbar的那些快捷方式也能被sync出去,就把该用户设置为administrator组,否则,user组是不能访问administrator组的%appdata%目录的。

关于该用户的权限问题,参见http://www.itefix.no/i2/node/12115#comment-15208

2.配置cwRsync Server的配置文件

打开安装目录(默认是%ProgramFiles%\ICW\)下面的rsyncd.conf

顺便简单讲述一下ICW的文件目录结构吧,由于cwRsync是Rsnyc基于CYGwin的win32移植,所以,对底层的文件访问,还是要调用到cygwin的模块,比如,我要把E:\bbsup作为一个可以被SYNC的目录,那么在path里面就要这样写,/cygdrive/E/bbsup,而你打开ICW下面的/etc/fstab可以看见如下内容,

[text]# fstab file created by ICW Base installer

#

# see fstab.txt in the installation directory for more information

C:/Program\040Files/ICW / ntfs override,binary,noacl 0 0

C:/Program\040Files/ICW/bin /usr/bin ntfs override,binary,noacl 0 0

C:/Program\040Files/ICW/etc/terminfo /usr/share/terminfo ntfs override,binary,noacl 0 0
[/text]

可见到一个迷你的linux目录结构跃然纸上,那么ICW目录就相当于根目录,呵呵,所以,我下面的配置文件里面pidfile等都是直接写名称,那么,他们都位于cygwin的根目录下面,也就是ICW目录下面,你也可以根据上面的规则自己填写新目录。

关于用不用use chroot,区别在linux系统,“传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接文件,将会排除在外。也就是说,你在rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容!”个人认为,win服务器就FALSE好了。

另外write only我这里设置为true 因为我这个只是用来做增量备份的,不想被下载!

以下是我的配置文件,

[text]
# +==============================+
# | Rsync Conf for BBS BACKUP |
# | by ihipop.gicp.net |
# | Last Modify:2010-02-23 |
# +==============================+
# General Settings
pid file = rsyncd.pid
port = 53333
#address = 127.1
#uid = root
#gid = root
use chroot = false
read only = false
#write only = true
motd file = rsyncd.motd
# Define the Welcome Msg!
#timeout = 800
secrets file = rsyncd.secrets
lock file = rsyncd.lock
# ACL Rules
hosts allow = 211.XXX.XXX.XXX/255.255.255.255 127.0.0.1
hosts deny = *
# ONLY hosts IN hosts allow HAVE THE ACCESS
max connections = 4
# Log Settings
#log format = %t %a %m %f %b
#syslog facility = local3
transfer logging = yes
#
# Virtual Directory Setting
#
#
[bbsup]
path = /cygdrive/E/bbsup
list = yes
ignore errors
auth users = ihipop
comment = for JPU BBS Backup
secrets file = rsyncd.secrets
[/text]

A.我部署的时候遇到了一个非常奇怪的问题,那就是,明明auth users和secrets file都写对了,比如,secrets file内容为

ihipop:12345

123:mypass

那么,无论我写auth users = 123还是auth users = ihipop

进行认证测试的时候,老是失败,去掉认证就非常正常,起初以为是自己格式和用户名不对,但是使用

rsync --list-only rsync://ihipop@192.168.233.129:53333/bbsup

rsync --list-only rsync://123@192.168.233.129:53333/bbsup

rsync --port=53333 --list-only ihipop@192.168.233.129::/bbsup

输入密码以后,都显示 auth failed on module bbsup,即使在passwordfile写入密码,也同样的问题。

这个问题折腾死我了,直到我在CentOS里面测试的时候,发现同样的有这个问题,于是就打开官方帮助文档看了一下,发现这样一个说明,

secrets file

This parameter specifies the name of a file that contains the username:password pairs used for authenticating this module. This file is only consulted if the auth users parameter is specified. The file is line based and contains username:password pairs separated by a single colon. Any line starting with a hash (#) is considered a comment and is skipped. The passwords can contain any characters but be warned that many operating systems limit the length of passwords that can be typed at the client end, so you may find that passwords longer than 8 characters doncqt work.

There is no default for the secrets file parameter, you must choose a name (such as /etc/rsyncd.secrets). The file must normally not be readable by other; see strict modes.

然后我在CentOS上面测试了一下,把这个secrets file给 chmod 600了,就能使用密码登陆了

但是,对于win系统,怎么chmod 600呢?

于是我天真的找到了一个gnu tools for windows,然后使用里面的chmod.exe设置了一下secrets file,可是用里面的ls.exe一看,还是其他用户可读状态,看来,这个GNU TOOLS FOR WIN 并没有实现所有GNU/Linux下那些功能,于是继续看rsync官方文档,发现最后一句话,see strict modes,好,我就,SEE吧

strict modes

This parameter determines whether or not the permissions on the secrets file will be checked. If strict modes is true, then the secrets file must not be readable by any user ID other than the one that the rsync daemon is running under. If strict modes is false, the check is not performed. The default is true. This parameter was added to accommodate rsync running on the Windows operating system.

看来看文档一定要仔细,

于是在bbsup模块内加入一个strict modes = false,解决!

B.奇怪的卡机问题

原因不明,在一个不大的文件上一卡就是半个多小时,强制退出以后倒是可以继续的,但是,老是要人看着也不是办法啊?

怀疑是不是学校的流控设备在捣鬼

--bwlimit=1024

观察中

3.配置CentOS上面的rsync

yum install rsync

安装以后,把如下命令加入cron即可(--password-file只写密码,不要用户名)

每天4点增量备份一次

由于我在这里是做客户端,就没那么复杂了,另外,假如要做服务端的话(rsync –daemon)除了权限问题,还要要打开iptables的端口

4.实现加密的rsync

5.rsync常用选项和部分实例

本文没有对配置文件和客户端里面的参数作解释,因为长篇大论不是我的风格,我把网上的资料查找整理修正了一下,

rsync常用选项和部分实例|rsync常用选项和部分实例
Over

Author Info :
  • From:Rsync+cwRsync部署BBS文件双机备份手记
  • URL:http://blog.ihipop.info/2010/02/615.html
  • Please Reserve This Link,Thanks!
  • 《Rsync+cwRsync部署BBS文件双机备份手记》有1个想法

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注