用途: 備份 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
收郵件查看
補充:
此程序已運行本站租用的虛擬主機多日, 期間曾發生的錯誤均修改完畢. 
因使用電子郵件作傳輸媒介, 請以穩定性高, 容量大做接收郵箱