用途: 备份 MySQL 指定之多重资料库.
特点:
1)以电子邮件方式作异地传输
2)系统环境须求简单, 均为内建之基本服务
3)定时排程
4)支援以虚拟主机架设网站的一般用户.
步骤一:
如果网站是架在自己的主机, 请以 root 身份操作, 若为租用的主机, 请以所属的帐户身份操作.
建立一个新目录
#mkdir /usr/local/bin/bk_dir
#cd /usr/local/bin/bk_dir
将以下两程式码分别存成 backup.sh , email.pl
#cat backup.sh
代码:
#!/bin/sh
#
# 说明:资料库 MySQL 备份,并以 mail 附加档案传输至指定邮件地址
# 撰写人:alang (alangnet.24cc.com)
# 2003.6.7
#
# 档案结构:
# backup.sh --> 备份执行档
# data/ --> 备份档储存目录
# email.pl --> 邮寄程式(主机需支援 perl)
#
#
#
# 参数定义 !!请自行修改!!
mainPath="/usr/local/bin/bk_dir"
db_user="dbuser"
db_pass="dbpass"
dataPath="${mainPath}/data"
archiveName="alangnet.ptez.org_bak.tgz"
#
#
#
# 资料库转出 mysqldump !!请自行修改!!
# 多重资料库请依下列格式自行添加,备份档名切勿重复
# mysqldump -u${db_user} -p${db_pass} --opt 资料库名称 > ${dataPath}/备份档名.sql
#
mysqldump -u${db_user} -p${db_pass} --add-drop-table alangnet_nukeDB > ${dataPath}/nukedb.sql
mysqldump -u${db_user} -p${db_pass} --add-drop-table alangnet_phpbbDB > ${dataPath}/phpbbdb.sql
#
#
# 压缩档案并邮寄
#
#!!请自行修改!!
#tar -zcf 压缩资料库档 资料库档1 资料库档2
cd ${dataPath}
tar -zcf ${archiveName} nukedb.sql phpbbdb.sql
cd ../
if [ -f ${dataPath}/${archiveName} ]; then
perl email.pl
echo "## The backup job was done. Time is $(date +%Y-%m-%d@%T) ##"
fi
#
#
# eof
#cat email.pl
代码:
#!/usr/bin/perl -w
####################################
# Email message attachments in Perl#
# written by alang 2004.01.15 #
####################################
use MIME::Lite;
use Net::SMTP;
##!!请自行修改!!
my $SenderName = 'Administrator-alangnet'
my $WebsiteName = 'alangnet.ptez.org'
my $from_address = '
admin@alangnet.ptez.org'
my $to_address = '
alangnet@seed.net.tw'
my $subject = 'MySQL Backup Process Reporting! From ['.$WebsiteName.']'
my $filename = 'alangnet.ptez.org_bak.tgz'
my $recommended_filename = 'alangnet.ptez.org_bak.tgz'
my $msg = MIME::Lite->new(
From => $SenderName.' <'.$from_address.'>',
To => $to_address,
Subject => $subject,
Type => 'text/plain',
Data => "#############[ 此封邮件请勿回覆 ]#############
"
."管理员(".$SenderName.") 你好 ,
"
."您的网站(".$WebsiteName.")所属的资料库已完成备份作业,如附档所示.
"
."请将它另存至其他位置并妥善保存.")
or die "Error creating MIME body: $!
";
# Attach the tar file
$msg->attach(Type=>'application/x-tar',
Path =>'data/'.$filename,
Filename =>$recommended_filename)
or die "Error attaching tar file: $!
";
my $message_body = $msg->as_string();
# Set this variable to your smtp server name
my $mailserver = 'localhost'
$smtp = Net::SMTP->new($mailserver) or
die "Couldn't connet server";
$smtp->mail( $from_address );
$smtp->to( $to_address );
$smtp->data();
$smtp->datasend($message_body);
$smtp->dataend();
$smtp->quit();
两个程式档均须依自身使用状况适当修改不同的参数值, 唯须特别提醒的为:
backup.sh 的 archiveName 参数 须与 email.pl 的 $filename 参数相同.
步骤二:
赋予执行的权限
chmod 700 backup.sh email.pl
步骤三:
制作备份档储存目录
#mkdir /usr/local/bin/bk_dir/data
完成及测试:
root 执行
#/usr/local/bin/bk_dir/backup.sh
收邮件查看
补充:
此程序已运行本站租用的虚拟主机多日, 期间曾发生的错误均修改完毕.
因使用电子邮件作传输媒介, 请以稳定性高, 容量大做接收邮箱