linux定時備份MySQL數據庫並刪除七天前的備份文件

#!/bin/bash
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#備份地址
backupdir=/home/mysqlbackup
#備份文件後綴時間
time=_` date +%Y_%m_%d_%H_%M_%S `
#須要備份的數據庫名稱
db_name=test
#mysql 用戶名
db_user=root
#mysql 密碼
db_pass=123456
mysqldump -u $db_user -p$db_pass $db_name | gzip > $backupdir/$db_name$time.sql.gz
#刪除一分鐘以前的備份文件
find $backupdir -name $db_name"*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; > /dev/null 2>&1

保存退出mysql

說明:sql

代碼中 time=` date +%Y%m%d%H `也能夠寫爲time=」$(date +」%Y%m%d$H」)」
其中`符號是TAB鍵上面的符號,不是ENTER左邊的’符號,還有date後要有一個空格。
db_name:數據庫名;
db_user:數據庫用戶名;
db_pass:用戶密碼;
-type f    表示查找普通類型的文件,f表示普通文件。
-mtime +7   按照文件的更改時間來查找文件,+7表示文件更改時間距如今7天之前;若是是 -mmin +7 表示文件更改時間距如今7分鐘之前
shell

-exec rm {} ;   表示執行一段shell命令,exec選項後面跟隨着所要執行的命令或腳本,而後是一對兒{},一個空格和一個,最後是一個分號。
/dev/null 2>&1  把標準出錯重定向到標準輸出,而後扔到/DEV/NULL下面去。通俗的說,就是把全部標準輸出和標準出錯都扔到垃圾桶裏面;其中的&表示讓該命令在後臺執行。
數據庫

定時執行bash

bak_config 文件代碼以下
spa

#every day exec
0 0 * * * /home/bak_sh/bak_day.sh
#every week exec
0 0 * * 0 /home/bak_sh/bak_week.sh
#every month exec
0 0 1 * * /home/bak_sh/bak_month.sh

先用查詢狀態命令查詢crond狀態,若是處在中止狀態則須先啓動;如已在啓動狀態,則無須理會。rest

操做命令以下:code

  /sbin/service crond start 啓動orm

  /sbin/service crond restart 重啓crontab

  /sbin/service crond stop 中止

  /sbin/service crond status 查詢狀態

查看服務是否已經運行用 

ps -ax | grep cron

查看調度任務
crontab -l //列出當前的全部調度任務
crontab -r   //刪除全部任務調度工做

添加調度任務

crontab /home/bak_sh/bak_config

相關文章
相關標籤/搜索