Refactor file time handling and add USE_MODTIME flag

This commit is contained in:
2024-02-02 11:32:12 +01:00
parent c57102011e
commit dd819547ed

49
main.go
View File

@@ -124,12 +124,22 @@ func scanArchive() {
func processFile(path string, info os.FileInfo) { func processFile(path string, info os.FileInfo) {
var now = time.Now().UnixMilli() var now = time.Now().UnixMilli()
var fileATime int64 = times.Get(info).AccessTime().UnixMilli() var timeType = "accessed"
// var fileATime int64 = times.Get(info).ModTime().UnixMilli() if constants.USE_MODTIME {
var accessTimeDelta = now - fileATime timeType = "modified"
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 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) archiveFile(path)
} }
} }
@@ -137,12 +147,23 @@ func processFile(path string, info os.FileInfo) {
func processArchiveFile(path string, info os.FileInfo) { func processArchiveFile(path string, info os.FileInfo) {
var now = time.Now().UnixMilli() var now = time.Now().UnixMilli()
var fileATime int64 = times.Get(info).AccessTime().UnixMilli() var timeType = "accessed"
// var fileATime int64 = times.Get(info).ModTime().UnixMilli() if constants.USE_MODTIME {
var accessTimeDelta = now - fileATime timeType = "modified"
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 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) deleteFile(path)
} }
} }
@@ -224,6 +245,7 @@ type Constants struct {
ARCHIVE_THRESHOLD int64 ARCHIVE_THRESHOLD int64
DELETE_THRESHOLD int64 DELETE_THRESHOLD int64
SCAN_INTERVAL time.Duration SCAN_INTERVAL time.Duration
USE_MODTIME bool
} }
func doRun() { func doRun() {
@@ -261,6 +283,7 @@ func main() {
var ARCHIVE_THRESHOLD = parseDuration(getEnv("ARCHIVE_THRESHOLD", "1d")) var ARCHIVE_THRESHOLD = parseDuration(getEnv("ARCHIVE_THRESHOLD", "1d"))
var DELETE_THRESHOLD = parseDuration(getEnv("DELETE_THRESHOLD", "12h")) var DELETE_THRESHOLD = parseDuration(getEnv("DELETE_THRESHOLD", "12h"))
var SCAN_INTERVAL = time.Duration(parseDuration(getEnv("SCAN_INTERVAL", "1m")) * 1e6) 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 = ROOT
constants.ROOT_ARCHIVE = ROOT_ARCHIVE constants.ROOT_ARCHIVE = ROOT_ARCHIVE
@@ -268,6 +291,7 @@ func main() {
constants.ARCHIVE_THRESHOLD = ARCHIVE_THRESHOLD constants.ARCHIVE_THRESHOLD = ARCHIVE_THRESHOLD
constants.DELETE_THRESHOLD = DELETE_THRESHOLD constants.DELETE_THRESHOLD = DELETE_THRESHOLD
constants.SCAN_INTERVAL = SCAN_INTERVAL constants.SCAN_INTERVAL = SCAN_INTERVAL
constants.USE_MODTIME = USE_MODTIME
log.Println("Input args parsed as:") log.Println("Input args parsed as:")
log.Printf("ROOT: %s\n", ROOT) log.Printf("ROOT: %s\n", ROOT)
@@ -276,6 +300,7 @@ func main() {
log.Printf("ARCHIVE_THRESHOLD: %d\n", ARCHIVE_THRESHOLD) log.Printf("ARCHIVE_THRESHOLD: %d\n", ARCHIVE_THRESHOLD)
log.Printf("DELETE_THRESHOLD: %d\n", DELETE_THRESHOLD) log.Printf("DELETE_THRESHOLD: %d\n", DELETE_THRESHOLD)
log.Printf("SCAN_INTERVAL: %d\n", SCAN_INTERVAL.Milliseconds()) log.Printf("SCAN_INTERVAL: %d\n", SCAN_INTERVAL.Milliseconds())
log.Printf("USE_MODTIME: %s\n", strconv.FormatBool(USE_MODTIME))
doRun() doRun()
for { for {