From dd819547ed8aafe3626bd0471fa64c89ea330c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Fri, 2 Feb 2024 11:32:12 +0100 Subject: [PATCH] Refactor file time handling and add USE_MODTIME flag --- main.go | 49 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index a2c7041..ed54d86 100644 --- a/main.go +++ b/main.go @@ -124,12 +124,22 @@ func scanArchive() { func processFile(path string, info os.FileInfo) { var now = time.Now().UnixMilli() - var fileATime int64 = times.Get(info).AccessTime().UnixMilli() - // var fileATime int64 = times.Get(info).ModTime().UnixMilli() - var accessTimeDelta = now - fileATime - log.Printf("File %s last accessed at %d, %dms ago\n", path, fileATime, accessTimeDelta) - if accessTimeDelta > constants.ARCHIVE_THRESHOLD { - log.Printf("File %s was accessed more than %dms ago, archiving...\n", path, constants.ARCHIVE_THRESHOLD) + var timeType = "accessed" + if constants.USE_MODTIME { + timeType = "modified" + } + + var fileTime int64 = 0 + if constants.USE_MODTIME { + fileTime = times.Get(info).ModTime().UnixMilli() + } else { + fileTime = times.Get(info).AccessTime().UnixMilli() + } + + var timeDelta = now - fileTime + log.Printf("File %s last %s at %d, %dms ago\n", path, timeType, fileTime, timeDelta) + if timeDelta > constants.ARCHIVE_THRESHOLD { + log.Printf("File %s was %s more than %dms ago, archiving...\n", path, timeType, constants.ARCHIVE_THRESHOLD) archiveFile(path) } } @@ -137,12 +147,23 @@ func processFile(path string, info os.FileInfo) { func processArchiveFile(path string, info os.FileInfo) { var now = time.Now().UnixMilli() - var fileATime int64 = times.Get(info).AccessTime().UnixMilli() - // var fileATime int64 = times.Get(info).ModTime().UnixMilli() - var accessTimeDelta = now - fileATime - log.Printf("File %s last accessed at %d, %dms ago\n", path, fileATime, accessTimeDelta) - if accessTimeDelta > constants.DELETE_THRESHOLD { - log.Printf("File %s was accessed more than %dms ago, deleting...\n", path, constants.DELETE_THRESHOLD) + var timeType = "accessed" + if constants.USE_MODTIME { + timeType = "modified" + } + + var fileTime int64 = 0 + if constants.USE_MODTIME { + fileTime = times.Get(info).ModTime().UnixMilli() + } else { + fileTime = times.Get(info).AccessTime().UnixMilli() + } + + var timeDelta = now - int64(fileTime) + log.Printf("File %s last %s at %d, %dms ago\n", path, timeType, fileTime, timeDelta) + + if timeDelta > constants.DELETE_THRESHOLD { + log.Printf("File %s was %s more than %dms ago, deleting...\n", path, timeType, constants.DELETE_THRESHOLD) deleteFile(path) } } @@ -224,6 +245,7 @@ type Constants struct { ARCHIVE_THRESHOLD int64 DELETE_THRESHOLD int64 SCAN_INTERVAL time.Duration + USE_MODTIME bool } func doRun() { @@ -261,6 +283,7 @@ func main() { var ARCHIVE_THRESHOLD = parseDuration(getEnv("ARCHIVE_THRESHOLD", "1d")) var DELETE_THRESHOLD = parseDuration(getEnv("DELETE_THRESHOLD", "12h")) var SCAN_INTERVAL = time.Duration(parseDuration(getEnv("SCAN_INTERVAL", "1m")) * 1e6) + var USE_MODTIME = strings.TrimSpace(getEnv("USE_MODTIME", "false")) == "true" constants.ROOT = ROOT constants.ROOT_ARCHIVE = ROOT_ARCHIVE @@ -268,6 +291,7 @@ func main() { constants.ARCHIVE_THRESHOLD = ARCHIVE_THRESHOLD constants.DELETE_THRESHOLD = DELETE_THRESHOLD constants.SCAN_INTERVAL = SCAN_INTERVAL + constants.USE_MODTIME = USE_MODTIME log.Println("Input args parsed as:") log.Printf("ROOT: %s\n", ROOT) @@ -276,6 +300,7 @@ func main() { log.Printf("ARCHIVE_THRESHOLD: %d\n", ARCHIVE_THRESHOLD) log.Printf("DELETE_THRESHOLD: %d\n", DELETE_THRESHOLD) log.Printf("SCAN_INTERVAL: %d\n", SCAN_INTERVAL.Milliseconds()) + log.Printf("USE_MODTIME: %s\n", strconv.FormatBool(USE_MODTIME)) doRun() for {