Linux學習_Shell程式設計綜合案例(定時維護資料庫)
阿新 • • 發佈:2018-11-06
要求:
- 每天凌晨 2:10 備份 資料庫 atguiguDB 到 /data/backup/db
- 備份開始和備份結束能夠給出相應的提示資訊
- 備份後的檔案要求以備份時間為檔名,並打包成 .tar.gz 的形式,比如:2018-03-12_230201.tar.gz
- 在備份的同時,檢查是否有10天前備份的資料庫檔案,如果有就將其刪除。
步驟
- cd 到 /usr/sbin/ 下,我選擇把指令碼寫在這裡
- vim mysql_db_backup.sh
- 寫指令碼,指令碼如下:
#!/bin/bash #先確定備份的路徑 DATETIME=$(date +%Y_%m_%d_%H%M%S) #可以輸入變數進行除錯 #echo $DATETIME echo "======開始備份======" echo "======備份的路徑是:$BACKUP ======" #主機 HOST=localhost #使用者名稱 DB_USER=root #密碼 DB_PWD=1230 #備份資料庫 DATABASE=DB1 #建立備份路徑,如果備份的路徑資料夾存在就使用,否則就建立 [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME" #執行mysql的備份資料庫的指令 #打包備份檔案 cd $BACKUP tar -zcvf $DATETIME.tar.gz $DATETIME #刪除臨時目錄 rm -rf $BACKUP/$DATETIME #刪除10天前的備份檔案,按時間名字查詢,查到後刪除 #-exec:執行 # {} \ 是固定寫法,就是把前面找到的交給rm刪除 find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "======備份檔案成功======"
- 將指令碼設定到crond執行
[[email protected] sbin]# crontab -e
進入到crontab中後進行配置:
10 2 * * * /usr/sbin/mysql_db_backup.sh
- wq儲存就ok了