2020年2月7日 / 370次阅读 / Last Modified 2021年2月2日
开源项目
为需要全自动运行的服务器开发了一款小工具,keepy,可以实现自动按规则删除文件或文件夹的功能。
比如网站每天产生的log文件,可能只希望保留最近18个月的;每天自动备份的数据库文件,可能只需要保留最近15天的,其它过期的文件,全部自动删除;或者给某类文件设置一个存储大小的上限,过限之后自动删除mtime最小的。
定时运行keepy,就可以实现全自动删除任何过期文件或文件夹,永远只保留自己需要的时间段的文件,不用担心文件越来越多,服务器因为硬盘被占满而影响运行。
help info有使用示例,这是各位同学clone项目后的第一个动作:
$ python3 keepy.py -h
keepy会要求指定一个路径,一个文件(夹)名的pattern(正则表达式),一个保留时间范围。然后keepy会找出所有符合删除条件的文件,最后在执行删除前,让你确认!keepy的运行原理,就是在指定的路径中搜索(非递归)符合pattern(代码中使用re.search进行匹配)和不在时间范围的文件!时间范围的确定,使用文件(夹)的mtime属性。
只保留最近18个月的log文件:
$ python3 keepy.py -p path --refile ^www.access.log_ --month 18
log文件的名称都是 www.access.log_ 开始,因为用此字符串来作为pattern。--month 18表示保留最近18个月的文件,如果算上当前这个月,就是19个月!
只保留最近15天的db备份文件:
$ python3 keepy.py -p path --refile _pynote.db.gzip$ --day 15
--day,--month和--year均可以配置0,这表示只保留当天,当月和当年的文件!
自动输入Yes(-y选项):
$ python3 keepy.py -p path -y --refolder pattern --day 90
--refolder表示对文件夹进行操作。--refile和--refolder这两个命令行参数互斥。
V0.04版本新增 --last N参数,保留最后的N个文件(夹):
$ python3 keepy.py -p path --refile pattern --last N
注意:当N==0时,keepy会删除全部匹配的文件(夹)!
V0.05版本新增 --sizelimit BYTES 参数,给某类文件或文件夹设置存储上限:
$ python3 keepy.py -p path --refile pattern --sizelimit 123456
注意:当sizelimit==0时,keepy会删除全部匹配的文件(夹)!
2021年1月27号,V0.05
2020年10月25日,V0.04
2020年7月9日,V0.03
2020年3月7日,V0.02
2020年2月9日, V0.01
-- EOF --
本文链接:https://www.pynote.net/archives/1797
前一篇:python的空格缩进
后一篇:add_argument函数的default参数
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记