临时目录或者日志目录的过期或者无用的文件,需要写个程序定时清除下N天之前的旧文件, 保证服务器硬盘不那么容易爆满。

walkFiles 历遍文件,getCreationTime 获取文件创建时间, removeFile tryremoveFile 等来自os模块。

日期时间的运算,需要用到times模块,getCreationTime 返回的是Time类型,indays now()是datetime类型。需要加上local()转换成datetime类型。

import os
import times
import strformat
import strutils

const tmpath = "/data/tmp/"
const usage = """

删除 /data/tmp/ 目录下的过期文件。

Usage: cleartmp days

参数默认等于:
cleartmp 30

删除180天以前的文件:
cleartmp 180
"""
echo "---------------------"
echo usage
echo "当前时间:" & $now()

proc cleartmp(): int {.discardable.} =

var day = 30
if paramCount() == 1:
day = parseInt(paramStr(1))

echo fmt"输入的天数: {day}"

for f in walkFiles(tmpath & "*"):
var fctime = getCreationTime(f).local()

if indays(now() - fctime) > day:
result.inc
removeFile(f)

echo fmt"清理的文件数量:{result}"
echo "---------------------\n\n"

cleartmp()