之前記錄下了window系統備份遠端MySQL資料庫的定時備份腳本(想要了解的可以去看看> windows壓縮備份MySQL資料庫),Linux系統的忘記記錄了。這次把它也儲存下來。
腳本内容非常簡單,主要是利用MySQL的備份系統來做這件事。
#!/bin/bash
mysqldump -hlocalhost -u[username] -p[password] [database] | gzip > /backup/database_$(date +%Y%m%d_%H%M%S).sql.gz
workdir="/backup/"
do_delete()
{
file_name=$(find $workdir -name '*.sql.gz' -and -mtime +7 -type f -print)
echo file name is ${file_name}
find $workdir -name '*.sql.gz' -and -mtime +7 -type f -delete
if [ $? -eq 0 ];then
echo $(date) delete $(basename ${file_name}) success!
else
echo $(date) delete ${file_name} FAILD!
fi
}
do_delete
在根目錄建立一個
backup
檔案夾,将腳本放在這個檔案夾内,給腳本可執行權限。
下面我們要用到的是Linux的
crontab
指令。
crontab
常用參數如下:
-
編輯工作表-e
-
列出工作表中的指令-l
-
删除工作表r
-
操作某使用者的工作表,省略則預設是目前使用者的工作表u [username]
使用
crontab -e
編輯工作表,在工作表中加入下面的内容,讓腳本每天淩晨3點執行。
0 3 * * * /backup/bakdb.sh
内容的規則如下:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * user-name 指定其他使用者排程,如果不需要則不指定
*
表示每年每月每天每時每分都執行該任務。
任務添加好了之後可以将
crond
服務重新開機:
service crond restart
。