#!/usr/bin/env tclsh8.4 cd ~/src/backups proc find.latest.mtime dir { set peak 0 foreach f [glob -nocomplain [file join $dir *]] { if {[file mtime $f] > $peak} { set peak [file mtime $f] } if {[file isdirectory $f]} { set mtime [find.latest.mtime $f] if {$mtime > $peak} { set peak $mtime } } } return $peak } proc main {} { set lastpeak 0 # 5 minutes set delay [expr {1000 * 60 * 5}] while 1 { set curpeak [find.latest.mtime /work] if {$curpeak == $lastpeak} { puts NOSAVE after $delay continue } catch {exec tar -zcvf [clock format [clock seconds] -format "%a_%b-%d_%H-%M"].tar.gz /work} err puts $err after $delay set lastpeak $curpeak } } main