| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- // Author: simon
- // Author: ynwdlxm@163.com
- // Date: 2025/1/26 16:05
- // Desc:
- package main
- import (
- "compress/gzip"
- "fmt"
- "io"
- "log"
- "os"
- "path/filepath"
- )
- func filterOut(path, ext string, minSize int64, info os.FileInfo) bool {
- if info.IsDir() || info.Size() < minSize {
- return true
- }
- if ext != "" && filepath.Ext(path) != ext {
- return true
- }
- return false
- }
- func listFile(path string, out io.Writer) error {
- _, err := fmt.Fprintln(out, path)
- return err
- }
- func delFile(path string, delLogger *log.Logger) error {
- if err := os.Remove(path); err != nil {
- return err
- }
- delLogger.Println(path)
- return nil
- }
- func archiveFile(destDir, root, path string) error {
- // Check destDir is a directory
- info, err := os.Stat(destDir)
- if err != nil {
- return err
- }
- if !info.IsDir() {
- return fmt.Errorf("%s is not a directory", destDir)
- }
- // Root path relative directory
- relDir, err := filepath.Rel(root, filepath.Dir(path))
- if err != nil {
- return err
- }
- // Create the new file name by adding the .gz suffix
- dest := fmt.Sprintf("%s.gz", filepath.Base(path))
- targetPath := filepath.Join(destDir, relDir, dest)
- // 创建所有目录
- if err := os.MkdirAll(filepath.Dir(targetPath), 0755); err != nil {
- return err
- }
- out, err := os.OpenFile(targetPath, os.O_RDWR|os.O_CREATE, 0644)
- if err != nil {
- return err
- }
- defer func(out *os.File) {
- err := out.Close()
- if err != nil {
- return
- }
- }(out)
- in, err := os.Open(path)
- if err != nil {
- return err
- }
- defer func(in *os.File) {
- err := in.Close()
- if err != nil {
- return
- }
- }(in)
- zw := gzip.NewWriter(out)
- zw.Name = filepath.Base(path)
- if _, err = io.Copy(zw, in); err != nil {
- return err
- }
- if err := zw.Close(); err != nil {
- return err
- }
- return out.Close()
- }
|