[教學]Unix-like系統下利用crontab進行備份
發表於 : 2004-09-10 21:58
定時備份系統資料和資料庫是一件很重要的事
萬一有狀況發生 還可以把備份的資料還原
在此簡介一下 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
有錯誤請通知 謝謝
萬一有狀況發生 還可以把備份的資料還原
在此簡介一下 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
有錯誤請通知 謝謝