python3.x备份tomcat日志
说明:
此脚本功能为备份tomcat下的所有日志文件、打包、清空原始日志、删除30天以前的备份数据
代码:
#!/usr/bin/python3
# -*- coding:utf-8 -*-
import os
import time
import datetime
import socket
import logging
import sys
#获取主机名
HOSTNAME = socket.gethostname()
print (HOSTNAME)
#备份时长
data = 30
SOURCE_PATH = "/home/tomcat/tomcat-jenkins/logs/"
TARGET_PATH = "/home/backup/"
FILE_BACKUP_PATH = TARGET_PATH + HOSTNAME + "/cut_log_everyday/file_bak"
TAR_BACKUP_PATH = TARGET_PATH + HOSTNAME + "/cut_log_everyday/old_bak"
DATETIME = time.strftime('%Y%m%d%H%M%S')
TIME = time.strftime('%Y-%m-%d %H:%M:%S')
filelist = os.listdir(SOURCE_PATH)
#创建备份文件夹
if not os.path.exists(FILE_BACKUP_PATH):
os.makedirs(FILE_BACKUP_PATH)
if not os.path.exists(TAR_BACKUP_PATH):
os.makedirs(TAR_BACKUP_PATH)
#定义日志级别
logging.basicConfig(level=logging.DEBUG,filename=TARGET_PATH + HOSTNAME + '/cut_log_everyday/file_backup.log',filemode='w',format='%(asctime)s - %(levelname)s: %(message)s')
#执行备份函数
def run_backup():
for file1_name in filelist:
#print (file_name)
source_file=SOURCE_PATH + file1_name
dumpcmd = "cp -r" +" " +source_file +" "+ FILE_BACKUP_PATH
os.system(dumpcmd)
logging.info("文件%s备份完成!" %file1_name)
logging.info("##################所有文件备份完成!##########################")
#执行压缩函数
def run_tar():
logging.info("##################开始打包文件!######################")
filelist2=os.listdir(FILE_BACKUP_PATH)
for file2_name in filelist2:
filetar=file2_name+"-"+DATETIME+".tar.gz"
tarcmd= "tar -zcvf"+" "+TAR_BACKUP_PATH+"/"+filetar+" "+FILE_BACKUP_PATH+"/"+file2_name
os.system(tarcmd)
logging.info("文件%s打包完成!" %file2_name)
remove_cmd = "rm -rf "+FILE_BACKUP_PATH+"/"+file2_name
os.system(remove_cmd)
logging.info("##################所有文件打包完成!##################")
#执行删除函数,清空原始日志
def run_del():
logging.info("##################开始清空原始日志!##################")
for i in filelist:
file_path = os.path.join(SOURCE_PATH,i)
if os.path.isfile(file_path):
with open(file_path, 'r+', encoding='utf-8') as f:
if i[-14:-10] == TIME[0:4]:
os.remove(file_path)
logging.info("文件%s被删除" % i)
else:
res = f.readlines()
f.seek(0)
f.truncate()
logging.info("文件%s被清空" % i)
f.close()
elif os.path.isdir(file_path):
logging.info('%s是一个目录,清空该目录下的所有文件' % file_path)
for root,dirs,files in os.walk(file_path,topdown=False):
for name in files:
file1_path=os.path.join(root,name)
with open(file1_path, 'r+', encoding='utf-8') as f1:
res = f1.readlines()
f1.seek(0)
f1.truncate()
logging.info('文件%s被清空' % file1_path)
f1.close()
else:
logging.info(未知文件,请联系管理员)
#执行清空30天以前的打包数据
def run_rm():
logging.info('###############开始检测是否有一个月之前的备份数据################')
f = list(os.listdir(TAR_BACKUP_PATH))
# 获取当前时间
today=datetime.datetime.now()
# 计算偏移量,前30天
offset=datetime.timedelta(days=-30)
re_date = (today + offset)
# 前30天时间转换为时间戳
re_date_unix = time.mktime(re_date.timetuple())
for i in f:
if i[-6:] == 'tar.gz':
file_time = os.path.getmtime(TAR_BACKUP_PATH+"/"+i)
timeArray = time.localtime(file_time)
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
#print ("文件修改时间%s", % otherStyleTime)
if file_time <= re_date_unix:
logging.info('已经超过30天,删除%s下的%s成功!' % (TAR_BACKUP_PATH,i))
os.remove(TAR_BACKUP_PATH+"/"+i)
if __name__ == '__main__':
logging.info("脚本运行开始at:%s" % TIME)
run_backup()
run_tar()
run_del()
run_rm()
logging.info("脚本运行结束at:%s" % time.strftime('%Y-%m-%d %H:%M:%S'))
好了,这就是python3备份tomcat日志的代码,如有问题可与博主一起交流讨论!