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
保存退出
說明:
代碼中 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