邮件系统的备份

在系统崩溃以后,没有提前备份将使你无限懊悔。一次没有成功的在线内核升级引起的系统崩溃在我没来得及备份时发生),为恢复崩溃邮件系统,曾让我精疲力竭。所以做好备份是一个好主意。当然我们不能天天手动去执行这个备份任务,用脚本吧!下面是我的一个postfix的备份脚本,供大家参考:

[root@mailserv2 virusalert]# more /usr/local/bin/data_backup.sh

#!/bin/bash

BackupPath=/var/data_bk

Mysql_bk_dir=$BackupPath/mysqlbk

Mail_bk_dir=$BackupPath/mailbk

LogFile=$BackupPath/backuplog

MailBoxDir=/var/mailbox

 

####################################################################

# define mysql variables                                                     #

####################################################################

NewFile="$Mysql_bk_dir"/postfix$(date +%Y%m%d).tgz

DumpFile="$Mysql_bk_dir"/postfix$(date +%Y%m%d).sql

OldFile="$Mysql_bk_dir"/postfix$(date +%Y%m%d --date='5 days ago').tgz

DbUser=root

DbPasswd=husb^R

DbName=postfix

####################################################################

#   mysql backup proccess                                                 #

####################################################################

echo "-------------------------------------------" >> $LogFile

echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile

echo "--------------------------" >> $LogFile

#Delete Old File

if [ -f $OldFile ]

then

   rm -f $OldFile >> $LogFile 2>&1

   echo "[$OldFile]Delete Old File Success!" >> $LogFile

else

   echo "[$OldFile]No Old Backup File!" >> $LogFile

fi

 

if [ -f $NewFile ]

then

   echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile

else

    cd $Mysql_bk_dir

/usr/local/mysql/bin/mysqldump -u $DbUser -p$DbPasswd --opt $DbName > $DumpFile

    tar czf $NewFile postfix$(date +%Y%m%d).sql >> $LogFile 2>&1

    echo "[$NewFile]Backup Success!" >> $LogFile

    rm -rf $DumpFile

fi

 

######################################################################

#     backup mail's user directories and files                                     #

######################################################################

MailFileBk=$Mail_bk_dir/mail$(date +%Y%m%d).tgz

OldMailFileBk=$Mail_bk_dir/mail$(date +%Y%m%d --date='14 days ago').tgz

 

if [ -f $OldMailFileBk ]

then

   rm -rf $OldMailFileBk

fi

 

if [  -f $MailFileBk ]

   then

   echo "[$MailFileBk]The Backup File is exists,Can't Backup!" >> $LogFile

   else

   cd /mail

   tar czf $MailFileBk mailbox  >> $LogFile 2>&1

fi

 

echo "-------------------------------------------" >> $LogFile

这个脚本对postfix数据库和用户的邮件做了备份。因为磁盘空间始终是有限的,因此是一边备份一边删除就的备份。如果条件允许,建议进行异地备份。手动执行一下这个脚本,看它是否按我们的意愿工作了,如果一些如愿,则把它放入crontab里让它每晚自动进行。

[root@mailserv2 ~]# crontab -l

0 0 1 * * root wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf;kill -HUP `cat /var/run/spamd.pid`

00 01 * * * /usr/local/bin/data_backup.sh

00 00 * * * /usr/local/clamav/bin/freshclam


相关内容