#encoding=utf-8
import os
import logging
import datetime
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s -%(levelname)s -%(message)s')
log = logging.getLogger(__name__)
class FileOprate():
def __init__(self,obsfn,fp,fn,create_time,update_time,access_time,file_size):
self.obsfn = obsfn
self.fp = fp
self.fn = fn
self.create_time = create_time
self.update_time = update_time
self.access_time = access_time
self.file_size = file_size
def time2str(time):
return str(datetime.datetime.fromtimestamp(time)).split('.')[0]
def getAllFiles(folder):
fo_list = []
for root,folder_names,file_names in os.walk(folder):
for file_name in file_names:
file_path = root + os.sep + file_name
file_stat = os.stat(file_path)
ct = file_stat.st_ctime
ut = file_stat.st_mtime
at = file_stat.st_atime
fs = os.path.getsize(file_path)
fo = FileOprate(file_path,root,file_name,ct,ut,at,fs)
fo_list.append(fo)
return fo_list
'''
保留15天的文件(ceph 存储目录下的日志文件)
'''
def keep_days(folder,appName,days):
now = datetime.datetime.now()
last15d = now - datetime.timedelta(days=days)
fo_list = getAllFiles(folder)
fo_list_appName = []
# 过滤掉文件名不包含appName的文件
for fo in fo_list:
if appName in fo.fn:
fo_list_appName.append(fo)
#保留15天的文件
for fo in fo_list_appName:
log.info(str(fo.create_time))
print (type(fo.create_time))
print (last15d,type(last15d))
#t = datetime.datetime.strptime(fo.create_time,'%Y-%m-%d')
#tdd = datetime.date(t.year,t.month,t.day)
#if tdd < last15d:
# log.info('deleting{}'.format(fo.obsfn))
'''
保留最新的前3个版本文件(ceph 存储目录下的应用文件)
folder:文件目录
appName:文件名称的关键字
num:保留文件版本个数
'''
def keep_three_versions(folder,appName,num):
fo_list = getAllFiles(folder)
fo_list_appName = []
for fo in fo_list:
log.info(fo.obsfn+'-->'+fo.fp+'-->'+fo.fn+'-->'+str(fo.file_size)+'-->'+time2str(fo.create_time)+'-->'+time2str(fo.update_time)+'-->'+time2str(fo.access_time))
# 过滤掉文件名不包含appName的文件
for fo in fo_list:
if appName in fo.fn:
fo_list_appName.append(fo)
# 对文件进行排序(按文件创建时间倒序排序)
for fo in fo_list_appName:
fo_list_appName = sorted(fo_list_appName,key=lambda a:a.create_time,reverse=True)
log.info(os.linesep)
# 保留3个版本
for index,fo in enumerate(fo_list_appName):
if index > (int(num)-1):
os.remove(fo.obsfn)
for fo in fo_list_appName:
log.info(fo.obsfn+'-->'+fo.fp+'-->'+fo.fn+'-->'+str(fo.file_size)+'-->'+time2str(fo.create_time)+'-->'+time2str(fo.update_time)+'-->'+time2str(fo.access_time))
if __name__=='__main__':
#keep_three_versions(r'F: mp est','app','2')
keep_days(r'F: mp est','app',15)
页面更新:2024-03-15
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号