package main import ( "flag" "fmt" "log" "os" "path" "time" ) var ( uploadDir *string = flag.String("dir", "/srv/upload", "path to a directory where uploaded files are stored") expiry *int64 = flag.Int64("expiry", 36, "keep files for this much hours") showVersion *bool = flag.Bool("v", false, "show version") ) var version string func main() { flag.Parse() log.SetFlags(log.Llongfile) if *showVersion { fmt.Println("dwelling-upload-clean Ver. ", version, "\nCopyright (c) 2022,2023 Alexander \"Arav\" Andreev ") return } uploadsDir, err := os.ReadDir(*uploadDir) if err != nil { log.Fatalf("failed to open a directory %s: %s\n", *uploadDir, err) } for _, entry := range uploadsDir { file, err := os.Stat(path.Join(*uploadDir, entry.Name())) if err != nil { log.Printf("failed to stat a file %s: %s", entry.Name(), err) continue } if time.Now().UTC().Sub(file.ModTime().UTC()) >= time.Duration(*expiry)*time.Hour { if err := os.Remove(path.Join(*uploadDir, entry.Name())); err != nil { log.Printf("failed to remove a file %s: %s", entry.Name(), err) } } } }