python3 x備份tomcat日誌

2021-09-26 21:17:15 字數 4093 閱讀 2675

說明:

此指令碼功能為備份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:

#執行清空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日誌的**,如有問題可與博主一起交流討論!

Python3 x編碼問題

1.記事本的ansi編碼為系統本地編碼,我的是gbk open 函式的encoding引數預設是本地編碼,也就是gbk,所以直接讀取ansi編碼的記事本檔案是木有問題的。怎麼檢視系統本地編碼?在cmd下輸入 chcp 從下表可以看出,936對應gbk編碼 下表列出了所有支援的 頁及其國家 地區 或者...

Python 內建函式(Python 3 x)

1 type obj 返回變數型別 2 isinstance object,class or type or tuple 測試物件是否為指定型別的例項 4 range start,end step 返回乙個 start,end 內的 range 物件,start 預設為 0,step 預設為 1 5...

python3記憶體快取 python 3 x

我試圖通過telnet 使用控制台伺服器控制台 到cisco路由器,執行一些show命令,並將它們的輸出儲存在變數中。下面是簡單的指令碼的工作原理 在執行指令碼之前已經登入到路由器 在實際使用案例中不是很有用 import telnetlib import datetime import getpa...