基於Linux指令碼,對日誌進行定時壓縮備份
導讀 | 當今天系統再次報警磁碟不足時,決定徹底解決該問題。解決的方案也很簡單,基於 寫一個簡單的 ,對日誌進行定時壓縮備份。 |
系統中安裝了前置機服務,該服務由銀行提供。前置機日誌列印的非常詳細,同時並未進行壓縮處理。這導致的直接後果就是,每天會有5G左右的日誌產生。過不了多久就需要手動壓縮備份一次。
當今天系統再次報警磁碟不足時,決定徹底解決該問題。解決的方案也很簡單,基於Linux寫一個簡單的 ,對日誌進行定時壓縮備份。大家如果在實踐中遇到類似的問題,可以直接基於下面的指令碼進行修改、豐富使用。
首先,建立一個執行日誌壓縮、備份和刪除的指令碼,命名backup.sh,並賦予可執行許可權,指令碼內容如下:
#!/bin/bash cd /log/ echo '開始壓縮...' tar -czvf /log/bak/trade.log.`date -d yesterday +%F`.tar.gz trade.log.`date -d yesterday +%F` echo '壓縮完畢...,執行刪除' rm -rf trade.log.`date -d yesterday +%F` echo '刪除完畢.'
在上述指令碼中,先透過cd 進入目標目錄,在執行 中會透過echo列印一些日誌資訊,這個主要用於進行除錯。
執行tar -czvf命令,進行日誌的壓縮。命令後面第一個引數為壓縮之後的檔案的名稱及儲存路徑,這裡放到bak目錄下,第二個引數為待壓縮的日誌。
我們重點來介紹一下檔名稱中date -d yesterday +%F的含義。在Linux中,date +"%F"能輸出系統的當前日期:
$ date +"%F" 2022-08-09
命令中,date命令是輸入日期,後面部分用於格式化。
但這都是列印出系統的當前時間,如果要獲取相對當前時間的某個時間,需要透過-d引數來實現。
$ date -d yesterday +%F 2022-08-08
這裡就獲得了前一天的日期了。當然,也可以輸出後一天的時間,比如:
$ date -d"yesterday" +"%F %H:%M:%S" 2022-08-08 21:36:15
在理解了如何獲取系統日期之後,上面的指令碼就比較好理解了。
先透過執行tar -czvf命令,進行日誌的壓縮,壓縮檔案直接存放在bak目錄,壓縮完畢之後,透過rm -rf命令對日誌進行刪除。
在完成上述編輯之後,可以直接執行該指令碼,驗證一下是否正確,然後就可以透過定時任務來進行配置了。
在完成了指令碼的編寫並賦予可執行許可權之後,就需要基於crontab來進行定時任務的配置。
執行crontab -e開啟定時任務檔案編輯介面,輸入如下資訊:
30 2 * * * /log/backup.sh
上面的指令是在說:每天2點30分執行/log/backup.sh指令碼。編輯完成,保持退出。那麼在每天凌晨2點30分,便會進行指令碼的執行。
這裡再擴充一下,上述crontab中對應的表示式含義如下:
minute hour day month week command 順序:分 時 日 月 周 命令
根據需要,你可以調整定時任務的執行時間點或週期。
關於crontab這裡再補充一下它的常見指令,方便大家使用:
crontab -e // 編輯 crontab -l // 檢視 service crond status service crond start// 啟動服務 service crond stop// 關閉服務 service crond restart// 重啟服務 service crond reload // 重新載入配置 cd /var/spool/mail/使用者檔案 檢視執行情況
至此,關於Linux下自動日誌壓縮備份指令碼已經完成。雖然非常簡單,但卻可以極大地釋放人力資源,再也不用手動清理了。當然,在實踐中,場景不同使用的指令碼可能更會更復雜,但基本原理是一致的,大家可根據具體情況來豐富指令碼的功能。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2911421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux mysql定時備份指令碼記錄LinuxMySql指令碼
- 使用shell指令碼對Nginx日誌進行切分指令碼Nginx
- mysqldump壓縮備份匯出匯入(含定期備份shell指令碼)MySql指令碼
- ORACLE常用定時備份指令碼Oracle指令碼
- Mysql定時備份資料指令碼MySql指令碼
- MySQL 壓縮二進位制日誌MySql
- Linux 定時執行指令碼、命令Linux指令碼
- Linux定時執行.sh指令碼Linux指令碼
- linux中用shell指令碼對tomcat和nginx做日誌切割Linux指令碼TomcatNginx
- LInux_壓縮和備份
- 【DATAPUMP】Oracle資料泵定時備份刪除指令碼Oracle指令碼
- Linux伺服器日誌備份到本地Linux伺服器
- linux啟定時指令碼Linux指令碼
- mysqldump全量備份+mysqlbinlog二進位制日誌增量備份MySql
- Linux中檔案/檔案系統的壓縮、打包和備份總結(基於rhel7)Linux
- Oracle設定多個歸檔路徑生成多份歸檔日誌,Rman備份時也只備份其中的一份歸檔日誌Oracle
- 【Linux基礎】壓縮和解壓Linux
- DM7聯機執行SQL語句進行加密備份與設定跟蹤日誌SQL加密
- 快速上手Linux核心命令(九):檔案備份與壓縮Linux
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼
- 備份指令碼指令碼
- Linux-通用性日誌切割指令碼Linux指令碼
- 資料庫定時備份linux篇資料庫Linux
- Linux下Mysql定時自動備份LinuxMySql
- Oracle RMAN備份以及壓縮原理分析Oracle
- rman 備份指令碼指令碼
- mysql備份指令碼MySql指令碼
- ORACLE備份指令碼Oracle指令碼
- mysql容器的定時備份指令碼,有二種方法,備份好後打包傳送到遠端備份主機MySql指令碼
- Linux基於tar與openssl加密解密壓縮包Linux加密解密
- Linux 編譯安裝、壓縮打包、定時任務Linux編譯
- 手工rm刪除歸檔日誌對備份歸檔日誌的影響
- DM7使用DMRMAN工具執行加密備份與設定跟蹤日誌加密
- 自動備份指令碼指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- Linux下對於檔案或者目錄的打包及壓縮、解壓Linux
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- MySQL 定時備份MySql