萬一有狀況發生 還可以把備份的資料還原
在此簡介一下 Unix-like 的作業系統下如何定時備份\r
常用的工具就是 crontab 簡單使用方法如下:
crontab -e (輯輯自己的定時排程)
crontab -l (查看自己的定時排程)
crontab -r (刪除自己的定時排程)
開始使用 crontab -e 編輯自己的定時排程 語法範例如下:
1 1 1 1 1 /root/run.sh
第一個字代表 分
數字範圍: 0 到 59 也可以使用*代表任何時間
第二個字代表 時
數字範圍: 0 到 23 也可以使用*代表任何時間
第三個字代表 日
數字範圍: 1 到 31 也可以使用*代表任何時間
第四個字代表 月
數字範圍: 1 到 12 也可以使用*代表任何時間
第五個字代表 星期幾
數字範圍: 0 到 6 (0 代表星期日) 也可以使用*代表任何時間
最後代表執行的指令 (最好寫出絕對路徑)
例如:
1 1 * * * /root/run.sh
代表每天的 1 時 1 分會執行 /root/run.sh 這個指令\r
30 1 1 * * /root/run.sh
代表每月的 1 日 1 時 30 分會執行 /root/run.sh 這個指令\r
*/6 * * * * /root/run.sh
代表每小時的 0分, 10分, 20分, 30分, 40分, 50分會執行 /root/run.sh 這個指令\r
0 */3 * * * /root/run.sh
代表每隔三個小時的 0 分會執行 /root/run.sh 這個指令\r
所以只要配合 MySQL 的指令就可以順利定時備份資料庫和網頁資料
假設 MySQL 的帳號是: test
假設 MySQL 的密碼是: password
假設 phpbb 的資料庫名稱: phpbb2
假設使用者 test 要存放備份的目錄為: /home/test/mysql
crontab 的設定如下:
0 5 * * * /home/test/mysql/backup.sh
/home/test/mysql/backup.sh 內容如下:\r
basedir="/home/test/mysql"
filename=`date +%Y%m%d`
cd $basedir
mysqldump phpbb2 -utest -ppassword --opt > "$filename"
然後再把 backup.sh 的權限設成可執行 700 or 755
這樣系統就會自動在每天早上5時整備份資料庫 並會依照每天的日期給與資料庫不同檔名
這樣就不怕明天的資料庫備份會把今天的蓋掉
如果怕檔案太多 還可以改成幾天或是以星期為單位備份
或是改變 date 的變數 可以 man date 得到更多的資訊
當然網頁資料也可以這樣備份 不過如果沒常在更改網頁內容
那就變更後手動備份就可\r
也可以將 ftp 指令放入 backup.sh 可以達成定時備份並將資料傳送到遠端\r
有錯誤請通知 謝謝
