餅乾工坊
自動備份 MySQL 並 Email 寄出 - 可列印版本

+- 餅乾工坊 (http://ninja.s12.xrea.com/mybb)
+-- 版面: 電腦網路 (http://ninja.s12.xrea.com/mybb/forumdisplay.php?fid=2)
+--- 版面: 網頁相關 (http://ninja.s12.xrea.com/mybb/forumdisplay.php?fid=13)
+--- 主題: 自動備份 MySQL 並 Email 寄出 (/showthread.php?tid=652)



自動備份 MySQL 並 Email 寄出 - NINJA - 05-19-2011

XREA 需要用 .htaccess 關閉 SAFE MODE 才可以把檔案寫入
AddHandler application/x-httpd-phpcgi .php

方法一
Backup2mail
http://www.backup2mail.com/

WasaBackup (可備份檔案+資料庫 + 寄Email )
http://sourceforge.net/projects/wasabackup/

WebBackup (可備份檔案+資料庫+FTP)
http://sourceforge.net/projects/webbackup/

phpMyBackupPro
http://www.phpmybackuppro.net/index.php

方法二
轉自 http://jsgears.com/thread-122-1-1.html

Gmail 目前有 7GB 的使用空間且不斷增長中,非常適合拿來做資料的備份,特別是小資料庫的定時備份。因此我找了一個資料庫的備份程式 MySqlDump(倒站),再加上 PHPMailer 的寄送附件功能,就完成了一個可以透過 crontab 定時備份資料庫到 Gmail 的程式(其實當然不限 Gmail,任何 Email 都可以)。有需要的人請透過本篇的附件進行下載。

設定的部份請開啟 mysqldump.php 編輯以下內容:

程式碼:
$secret        = 'secretcode';                         //密碼,執行時需帶入
$from            = 'your.email@maildomain.com';    //備份時使用的寄件者 email
$from_name    = 'AutoBackup';                //寄件者姓名
$to            = 'your.email@maildomain.com';    //收件者 email
$to_name        = 'Your Name';                //收件者姓名
$dir            = '/home/user/public_html/backup/';    //備份檔案存放的目錄

以下是第一組資料庫的設定:
程式碼:
$cfg[0]['dbhost']    = 'localhost';
$cfg[0]['dbuser']    = 'root';
$cfg[0]['dbpass']    = 'pass';
$cfg[0]['dbname']    = 'my_database1';

設定完成後,可先透過瀏覽器測試,例如:
程式碼:
http://jsgears.com/path_to_the_script/mysqldump.php?dbid=0-code=secretcode


其中 dbid=0 表示第一組資料庫,後面的 code=secretcode 就是先前設定的密碼。執行成功的話,很快就可以收到 email 並且看到備份的附加檔喔。

如果要定時備份的話,就透過 crontab 吧,例如以下設定可在每天凌晨 3:00 進行備份:

程式碼:
0 3 * * * wget [url]http://jsgears.com/mysqldump.php?dbid=0-code=secretcode[/url]

以上是一組資料庫的備份設定,如果有需要新增第二組、第三組...,可參考 mysqldump.php 內的說明,將 $cfg[1] 的設置開啟,完成設定後,執行時將 dbid=0 改成 dbid=1,就變成第二組的備份,依此類推。


RE: 自動備份 MySQL 並 Email 寄出 - NINJA - 11-07-2011

UNIX版
1.安裝 mutt : yum install mutt
2.設cronjob
crontab -e
程式碼:
0 0 * * 1 /usr/bin/mysqldump -r /tmp/file.sql -u 帳號 -p密碼 -B 資料庫名; gzip /tmp/file.sql; echo '信件內容' | /usr/bin/mutt -s '信件標題' -a /tmp/file.sql.gz 收信人帳號; /bin/rm /tmp/file.sql.gz