Linux下自動備份資料庫和刪除歷史備份檔案
阿新 • • 發佈:2019-02-18
一、Linux下自動備份資料庫
通常情況下,檔案備份大家喜歡名稱+備份日誌來命名備份檔案。下面以此為例說明:
(1)建立備份指令碼檔案,並編寫備份指令碼。
[root@test02 backup]# touch backup.sh #建立指令碼檔案
[root@test02 backup]# chmod +x backup.sh #給指令碼檔案賦予執行許可權
[root@test02 backup]# vi backup.sh
#!/bin/sh SYSTEM_TIME=`date '+%Y-%m-%d'` #定義日期變數,取當前日期 mysqldump -h192.168.0.143 -P3306 -uroot -phht3306 --all-databases |gzip > /backup/backup$SYSTEM_TIME.sql.gz #先備份後打包
(2)crontab計劃任務在規定時間執行此備份指令碼
[root@test02 backup]# crontab -e #進入計劃任務,crontab具體使用方法可以檢視語法
10 0 * * * /bin/bash /backup/backup.sh #每天凌晨10分執行此備份指令碼
二、刪除歷史備份檔案
在每天備份的過程中,資料備份檔案會越來越多,會佔用更多的硬碟空間,而時間很長的資料備份檔案作用也不是很大,此時就存在怎麼讓系統每天自動刪除N天前的備份檔案的問題。
自動刪除指令碼可以跟自動備份指令碼存放在一個執行檔案中
if test -e /backup/ then find /backup/backup*.sql.gz -mtime +3 -type f -exec rm -rf {} \; #刪除三天之前的打包檔案 fi
附加:為了方便測試自動刪除N天前的備份檔案,用以下指令碼產生前33天備份檔案。
#/bin/sh # 自動建立前33天備份檔案 for ((i=0;i<=33;i++)) do date=`date -d -${i}day +%Y-%m-%d` if test -e "backup${date}.sql.gz" then echo "backup${date}.sql.gz已存在!" else touch /backup/backup${date}.sql.gz #批量建立以日期命名檔案 touch -d "${date}" /backup/backup${date}.sql.gz #批量修改以日期命名檔案的建立時間 fi done
-rw-r--r-- 1 root root 0 Jun 6 23:08 backup2018-06-06.sql.gz
-rw-r--r-- 1 root root 0 Jun 7 23:08 backup2018-06-07.sql.gz
-rw-r--r-- 1 root root 0 Jun 8 23:08 backup2018-06-08.sql.gz
-rw-r--r-- 1 root root 0 Jun 9 23:08 backup2018-06-09.sql.gz
-rw-r--r-- 1 root root 0 Jun 10 23:08 backup2018-06-10.sql.gz
-rw-r--r-- 1 root root 0 Jun 11 23:08 backup2018-06-11.sql.gz
-rw-r--r-- 1 root root 0 Jun 12 23:08 backup2018-06-12.sql.gz
-rw-r--r-- 1 root root 0 Jun 13 23:08 backup2018-06-13.sql.gz
-rw-r--r-- 1 root root 0 Jun 14 23:08 backup2018-06-14.sql.gz
-rw-r--r-- 1 root root 0 Jun 15 23:08 backup2018-06-15.sql.gz
-rw-r--r-- 1 root root 0 Jun 16 23:08 backup2018-06-16.sql.gz
-rw-r--r-- 1 root root 0 Jun 17 23:08 backup2018-06-17.sql.gz
-rw-r--r-- 1 root root 0 Jun 18 23:08 backup2018-06-18.sql.gz
-rw-r--r-- 1 root root 0 Jun 19 23:08 backup2018-06-19.sql.gz
-rw-r--r-- 1 root root 0 Jun 20 23:08 backup2018-06-20.sql.gz
-rw-r--r-- 1 root root 0 Jun 21 23:08 backup2018-06-21.sql.gz
-rw-r--r-- 1 root root 0 Jun 22 23:08 backup2018-06-22.sql.gz
-rw-r--r-- 1 root root 0 Jun 23 23:08 backup2018-06-23.sql.gz
-rw-r--r-- 1 root root 0 Jun 24 23:08 backup2018-06-24.sql.gz
-rw-r--r-- 1 root root 0 Jun 25 23:08 backup2018-06-25.sql.gz
-rw-r--r-- 1 root root 0 Jun 26 23:08 backup2018-06-26.sql.gz
-rw-r--r-- 1 root root 0 Jun 27 23:08 backup2018-06-27.sql.gz
-rw-r--r-- 1 root root 0 Jun 28 23:08 backup2018-06-28.sql.gz
-rw-r--r-- 1 root root 0 Jun 29 23:08 backup2018-06-29.sql.gz
-rw-r--r-- 1 root root 0 Jun 30 23:08 backup2018-06-30.sql.gz
-rw-r--r-- 1 root root 0 Jul 1 23:08 backup2018-07-01.sql.gz
-rw-r--r-- 1 root root 0 Jul 2 23:08 backup2018-07-02.sql.gz
-rw-r--r-- 1 root root 0 Jul 3 23:08 backup2018-07-03.sql.gz
-rw-r--r-- 1 root root 0 Jul 4 23:08 backup2018-07-04.sql.gz
-rw-r--r-- 1 root root 0 Jul 5 23:08 backup2018-07-05.sql.gz
-rw-r--r-- 1 root root 1470509 Jul 6 22:50 backup2018-07-06.sql.gz
-rw-r--r-- 1 root root 1470509 Jul 7 22:49 backup2018-07-07.sql.gz
-rw-r--r-- 1 root root 1470509 Jul 8 22:49 backup2018-07-08.sql.gz
-rw-r--r-- 1 root root 1470510 Jul 9 23:06 backup2018-07-09.sql.gz