shell腳本實現數據庫自動備份和刪除備份


為了安全起見,我們每天都需要備份數據庫,但是備份數據庫的時間往往是在凌晨左右,大家都休息,沒人使用的時候,這樣我們就需要linux系統實現自動備份,即定時自動執行腳本。但是我們又不能讓所有的備份一直保留,所以我們還需要刪除去古老的備份。(我的操作系統版本是Linux ip-172-16-3-158 3.10.0-327.13.1.el7.x86_64,centos7)

首先,我們說linux系統的定時自動備份。據說有多種方法,我在這里使用的方法是,直接添加配置文件。我們在 /etc/crontab文件下,添加命令即可,

上面的解釋很清楚,第一個參數是分鍾(0 - 59),第二個參數是 小時 (0 - 23 ),第三個參數是每個月的哪一天 (0 - 31 ),第四個參數是一年中的哪一個月 (1 - 12),第五個參數是每周的周幾( 0 -6) 0代表星期天(西方人認為星期天是一周的開始)。后面就是執行命令的角色,和被執行的命令。

下面我們開始編輯數據庫備份腳本,(這里我們備份的數據庫是postgresql的數據庫)

數據庫的備份命令很簡單,就是

pg_dump -h IPADRESS -U user database > database.sql

這樣會出現密碼提示,妨礙我們執行自動化腳本,所以我在這里使用了下面的方法,在用戶目錄下,編輯.pgpass文件,他的格式如下

hostname:port:database:username:password

編輯好之后保存,修改權限為600
這樣我們執行語句 pg_dump -h IPADRESS -U user database -w > database.sql,就不會有密碼提示了

因為要每天都要備份,所以備份文件的命名是很重要的,我們按照習慣用時間作為命名
DATE=`date "+%Y-%m-%d-%H-%M-%S"`

同樣,因為備份只需要保留幾天的就可以了,所以我們需要將時間比較久的備份刪除掉,這里我們采用的方法是
find /backup_db/ -mtime +4 -name "*tar.gz" -exec rm -rf {} \;
意思是將4天前的/backup_db/目錄下,以。.tar.gz結尾的文件,全部刪除掉。這里解釋下 -mtime +4 ,這個參數,
+4表示的完整的時間4天,如果我們參數值寫的是 +0 ,那么從昨天這個時候到現在這個時候都是在0以內,比如現在是下午四點鍾,那么昨天下午16:00:01時的文件就不在它的查詢
范圍內,而昨天下午 15:59:59的文件就在它的查詢范圍內。所以
find /backup_db/ -mtime +0 -name "*tar.gz" -exec rm -rf {} \;表示昨天下午16:00:00之前以.tar.gz結尾的文件,我們會執行刪除操作,保留一天以內的。同理,
find /backup_db/ -mtime +4 -name "*tar.gz" -exec rm -rf {} \;表示我們會保留五天以內的以.tar.gz結尾的文件,而將之前的文件全部刪除。當然,不以.tar.gz結尾的文件是不在刪除范圍內的。
好了,這個就是我做的全部過程。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM