python3.x备份tomcat日志

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日志的代码,如有问题可与博主一起交流讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值