邮件系统备份脚本

2008-03-27 09:24:10

1、对mysql 进行备份。
2、对一些重要配置文件进行备份。
3、对邮件存储的结构进行备份。
4、每天备分,只保留7 天的内容。
5、备份完成后自动上传到ftp (其它服务器)
6、系统恢复需要手工恢复,是防止灾难性发生。
7、crontab 内容(当前是root用户)
#每天23:59 分执行
59 23 * * * /usr/local/backup/backup.sh > /dev/null
以下脚本,稍作修改就能用于自己的电脑.本脚本在freebsd 执行通过,
linux 可能需要跟据实际命令使用方法作修改
下载原脚本
#!/bin/sh

backupdir="/home/data/backup/" #备份保存的目录

#如果目录不存在就创建
if [ ! -d $backupdir ];then
	mkdir $backupdir 
fi

# mkdir today backup

today=`date +%Y-%m-%d_%H_%M_%S` #取得当天的日期
fpath=$backupdir$today   # 取得备份目录的完整路径
echo $fpath
#如果目录不存在就创建
if [ ! -d $fpath ];then 
	mkdir $fpath
fi

# delete old file 
#删除旧的文件,+7 表示7 天之前,+30 表示一个月之前
#完整意思 查找备份目录里 7 天之前的文件,并且删除它
find $backupdir -type f -mtime +7 -print -exec rm {} ;

#文件file_list与脚本在同一个目录里,安装在/usr/local/backup ,如果你有什么重要文件备份就写在这里,一行一个。
FL=`cat /usr/local/backup/file_list`  
for i in $FL ;do
	cp -Rp $i $fpath #复制保留权限,如果目录同样也可以复制
done

#backup mail dir
#备份邮件目录的结构,因为我的硬盘小,所以只备份结构。
#如果你要备份邮件,可以将邮件保存的目录写在上面的file_list 里。
find /home/data/domains -type d >$fpath/maildirlist

# backup mysql all
#备份mysql 所有数据库 把yourpasswd 改为你mysql root 密码
/usr/local/bin/mysqldump --all-databases -uroot -pyourpasswd>$fpath/mysql_all.sql

# backup my self 
#备份这个脚本
cp -Rp $0 $fpath
cp -Rp file_list $fpath

# 将备份的东西进行打包
cd $backupdir
tar czf $today.tar.gz $today
rm -rf $today
cd -

# ftp ...
#上传到ftp
ftp -n<<!
open 192.168.1.3 21
user backup backup
binary
lcd $backupdir #本地目录
prompt off
mdelete * #删除远程所有文件
mput * #上传本地目录所有文件
bye
!