From 73b6ebe0e9f6ae901c03b0a39187169eaf029e8a Mon Sep 17 00:00:00 2001 From: xc Date: Thu, 23 Oct 2025 18:00:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=8E=8B=E7=BC=A9=E5=8C=85?= =?UTF-8?q?=E5=AD=98=E6=94=BE=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scagent/util/fsutil.go | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/scagent/util/fsutil.go b/scagent/util/fsutil.go index 7dc1519..e4c8171 100644 --- a/scagent/util/fsutil.go +++ b/scagent/util/fsutil.go @@ -14,6 +14,7 @@ import ( "path/filepath" "scagent/config" "strings" + "time" "github.com/schollz/progressbar/v3" "go.uber.org/zap" @@ -319,9 +320,7 @@ func DecompressZip(zpFname string, dirpath string) error { // dest:目的地址以及压缩文件名 eg:/data/logZip/2022-12-12-log.zip // paths:需要压缩的所有文件所组成的集合 func CompressToZip(dest string, currentPath string, paths []string) error { - // fmt.Printf("currentPath:%s\n", currentPath) - // fmt.Printf("paths len:%d\n", len(paths)) - // fmt.Println("real path", currentPath) + // 打开files 目录 filesPath := "" if dir, err := os.Getwd(); err == nil { @@ -339,6 +338,15 @@ func CompressToZip(dest string, currentPath string, paths []string) error { zipWriter := zip.NewWriter(zfile) defer zipWriter.Close() + // 目录格式 2025/10 + dirpath := fmt.Sprintf("%d/%02d", time.Now().Year(), time.Now().Month()) + // 组织目录路径 + filesPath = filepath.Join(filesPath, dirpath) + // 创建目录 + if err := os.MkdirAll(filesPath, os.ModePerm); err != nil { + return err + } + // 遍历带压缩的目录信息 for _, src := range paths { // 替换文件名,并且去除前后 "\" 或 "/" @@ -432,3 +440,23 @@ func ReadConfig() { func DeleteFile(filePath string) error { return os.Remove(filePath) } + +// 删除过期文件 +func DeleteExpiredFiles(dirPath string, expiredTime time.Duration) error { + // 遍历目录下的所有文件 + err := filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + // 检查文件是否过期 + if info.IsDir() { + return nil + } + if time.Since(info.ModTime()) > expiredTime { + // 删除过期文件 + return DeleteFile(path) + } + return nil + }) + return err +}