五 是EMOS的备份
1 邮箱的账号及密码邮件用户的用户名,密码,过期时间,邮箱容量等信息都存放在mysql数据库中ExtMail使用的库是extmail库
2 用户的邮件内容 /home/domains
鉴于邮箱账号等信息,文件不是很大,我选择了先用mysqldump备份数据库到某一目录下,每天晚上备份一次,只保留最近5天的备份,然后再通过rsync把这些文件同步到固定文件服务器上去。关于用户邮件内容文件肯定会较大,我不在本地压缩保留几天的备份了,直接用rsync同步到文件服务器。
mysql本地备份脚本back_mysql.sh文件,
NowTime=`date +%Y_%m_%d`
preTime=`date +%Y_%m_%d --date="-5 day"`
Directory=/back/mysql
mkdir -p $Directory #-p的作用是可以建多级目录
mysqldump -uroot -ppasswd extmail > $Directory/extmail_$NowTime.sql # -u和-p后不要跟空格,若是备份所有库文件可以--all-database
rm -rf $Directory/extmail_$pretime.sql #-rf强制并琢级删除文件或文件夹
默认建立的脚本没有执行权限,所以要用命令对其赋权。
chmod back_mysql.sh 764
然后添加计划任务,定义每天运行一次,
运行crontab -e命令添加任务计划:
40 01 * * * /back/mysql/back_mysql.sh
解释:
*号之间是有空格的
01 1 * * * 此5个"*"的意思. 第一个是分钟,取值范围0-59
第二个是小时,取值范围0-23
第三个是天,取值范围1-31
第四个是月,取值范围1-12
第五个是周,取值范围0-6(0表示是周日)
上面的内容就已经可以达到每天在/back/mysql目录下自动备份邮箱用户名及密码相关信息了,并可以保持最近5天的记录。接下来就是要用rsync来同步备份的内容到其它服务器了。
rsync的配置:
rsync分服务端和客户端,在这里服务端就是运行Extmail服务的服务器,客户端就是备份Extmail数据的服务器.
服务端的配置:
1. 编辑 /etc/xinetd.d/rsync文件,
将rsync文件中的
disable = yes 改成 disable = no
保存退出.
2. 编辑rsyncd.conf文件,此文件可能没有,需要新建(=号的两边一定要有空格,否则无效)
编辑 /etc/rsyncd.conf文件,在此文件中添加:
uid = root #运行RSYNC守护进程的用户
gid = root #运行RSYNC守护进程的组
use chroot = no #不使用chroot
max connections = 4 # 最大连接数为4
strict modes = yes #是否检查口令文件的权限
port = 873 #默认端口873
#模块参数
[mail] #这里是认证的模块名,在client端需要指定
path = /home/domains #需要做镜像的目录,不可缺少!
ignore errors #可以忽略一些无关的IO错误
read nly = yes # 只读
list = no #不允许列文件
auth users = beifen #认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsyncd.pas #密码和用户名对比表,密码文件自己生成
#下面的设置可以选用,因为这些安全设置完全可以在防火墙中来实现。
hosts allow = 192.168.0.254,10.10.10.10 #允许主机
hosts deny = 0.0.0.0/0 #禁止主机
[mysql]
path = /back/mysql
ignore errors #可以忽略一些无关的IO错误
read nly = yes # 只读
list = no #不允许列文件
auth users = beifen #认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsyncd.pas #密码和用户名对比表,密码文件自己生成
保存退出.
3. 编辑/etc/rsyncd.pas文件,此文件是rsyncd的密码文件,里面只存放了用户名和密码
,在这里是beifen用户和密码,此文件内容:
beifen:123456
保存退出.
权限:因为rsyncd.pas存储了rsync服务的用户名和密码,所以非常重要。要将rsyncd.pas设置为root拥有, 且权限为600。
#cd /etc
#chown root.root rsyncd.pas #如果属主属组本身就是root,这步可以省略。
#chmod 600 rsync.pas
因rsync使用了873端口,因此我们需要在服务端上打开873端口,否则客户端连接不上.
到此,服务端的配置就完了.
让配置生效
#service xinetd restart
如果rsync不能同步的话,可以用这个命令来启动rsync为server模式启动
#/usr/bin/rsync –daemon
设置开机自动启动rsync
编辑
vi /etc/rc.d/rc.local
在文档未尾加入service xinetd start
服务端配置就已经成功了,我们来配置客户端,我的是windows系统,配置如下,
安装完成之后,记下安装路径,先点“我的电脑”属性——设置环境变量,对path增加安装路径下的bin目录,要加;号。这样可以在CMD窗口中任意目录下调用rsync命令。然后建立一个批处理文件,内容是同步目标服务器上的文件到本地目录。Password.txt是验证文件,其中只有密码同上的rsync.pass
下面命令“.\test8\”用的是相对命令,一定是相对命令,切记。先用命令进入备份目录的上级目录,然后再用相对命令。
rsync -vzrtopg --progress --delete --password-file="/cygdrive/C/Documents and Settings/Administrator/password.txt"
beifen@192.168.1.15::backup .\test8\
其中的backup就是我们上面的定义的mysql和mail模块名称,这里有几个模块就建几条命令,保存为.bat脚本文件,然后我们来用windows的计划任务来执行。这样就OK了。