Tomcat的日志文件默認存儲在**/var/log/tomcat
(系統級安裝)或/opt/tomcat/logs
**(自定義安裝)目錄中,主要包含catalina.out
(主日志)、localhost_access_log.*.txt
(訪問日志)等文件??赏ㄟ^以下命令快速定位:
sudo find / -type d -name "logs" 2>/dev/null | grep tomcat
確認路徑后,后續備份操作需針對該目錄執行。
使用tar
命令壓縮日志目錄,生成帶日期戳的歸檔文件,便于后續識別和檢索:
# 定義日志路徑(根據實際路徑調整)和備份目錄
LOG_PATH="/var/log/tomcat"
BACKUP_DIR="/backups/tomcat_logs"
DATE=$(date +%Y%m%d)
# 創建備份目錄(若不存在)
sudo mkdir -p "$BACKUP_DIR"
# 壓縮日志文件(排除空文件)
sudo tar -czvf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" "$LOG_PATH" --exclude='*.gz'
此命令將$LOG_PATH
下的所有日志文件(不含已壓縮的.gz
文件)打包為tomcat_logs_YYYYMMDD.tar.gz
,存儲到$BACKUP_DIR
中。
通過crontab
設置每日定時任務,實現日志備份自動化。編輯crontab
文件:
sudo crontab -e
添加以下內容(每日凌晨2點執行備份,路徑替換為實際路徑):
0 2 * * * /bin/bash -c 'LOG_PATH="/var/log/tomcat"; BACKUP_DIR="/backups/tomcat_logs"; DATE=$(date +%Y%m%d); mkdir -p "$BACKUP_DIR"; tar -czvf "$BACKUP_DIR/tomcat_logs_$DATE.tar.gz" "$LOG_PATH" --exclude="*.gz"'
保存后,cron
會自動每天執行該任務,無需手動干預。
logrotate
是Debian系統自帶的日志輪轉工具,可自動完成日志的輪轉、壓縮、刪除,避免日志文件過大占用磁盤空間。配置步驟如下:
sudo nano /etc/logrotate.d/tomcat
/var/log/tomcat/*.log {
daily # 每日輪轉
rotate 7 # 保留最近7個日志文件
compress # 壓縮舊日志(使用gzip)
missingok # 若日志文件不存在,不報錯
notifempty # 若日志為空,不輪轉
create 640 tomcat adm # 創建新日志文件,權限640,屬主tomcat,屬組adm
sharedscripts # 所有日志輪轉完成后執行腳本
postrotate # 輪轉后執行的命令(重啟Tomcat以重新打開日志文件)
systemctl restart tomcat > /dev/null
endscript
}
sudo logrotate -f /etc/logrotate.d/tomcat
此配置會自動管理/var/log/tomcat
下的所有.log
文件,無需額外編寫腳本。
恢復前需停止Tomcat服務,避免日志文件被占用導致恢復失?。?/p>
sudo systemctl stop tomcat
導航到備份文件所在目錄,解壓對應的日志歸檔文件:
# 進入備份目錄(根據實際路徑調整)
cd /backups/tomcat_logs
# 解壓指定日期的備份文件(例如20250915.tar.gz)
sudo tar -xzvf tomcat_logs_20250915.tar.gz -C /var/log/tomcat/
解壓后,/var/log/tomcat
目錄將恢復為備份時的狀態。
檢查/var/log/tomcat
目錄下的文件是否完整,重點確認catalina.out
、localhost_access_log.*.txt
等關鍵日志文件是否存在:
ls -lh /var/log/tomcat
若文件數量、大小與備份時一致,則說明恢復成功。
恢復完成后,啟動Tomcat服務以繼續記錄日志:
sudo systemctl start tomcat
可通過systemctl status tomcat
命令確認服務狀態(顯示“active (running)”即為正常)。
/backups/tomcat_logs
)具有足夠的寫入權限(建議屬主為root
,屬組為adm
),避免備份失敗。logrotate
的rotate
參數(如保留30天日志),或定期清理過期的備份文件(如find /backups/tomcat_logs -name "*.tar.gz" -mtime +30 -exec rm -f {} \;
)。gpg
工具),防止泄露。