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

jopen 9年前發布 | 3K 次閱讀 Shell 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

保存退出

說明:

代碼中 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分鐘以前

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

定時執行

bak_config 文件代碼如下

#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狀態,如果處在停止狀態則須先啟動;如已在啟動狀態,則無須理會。

操作命令如下:

  /sbin/service crond start 啟動

  /sbin/service crond restart 重啟

  /sbin/service crond stop 停止

  /sbin/service crond status 查詢狀態

查看服務是否已經運行用 

ps -ax | grep cron

查看調度任務
crontab -l //列出當前的所有調度任務
crontab -r   //刪除所有任務調度工作

添加調度任務

crontab /home/bak_sh/bak_config

原文地址:http://blog.sina.com.cn/s/blog_621f9b110101pfp1.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!