2008-03-28 [Sarnold]: I wanted a cron task to make backups of an important file, and be able to simply restore or examine a backup. The following script is just to be invoked every 3 minutes (or more if you want) by calling `autosave /path/to/myfile`. It creates a directory `_SAVE` and subdirectories named after the date (%Y%m%d) which contain indexed backups. Just see the listing: ====== - myprecious.gnumeric + _SAVE |- myprecious.gnumeric |-+ 20080320 |- 1_myprecious.gnumeric |- 2_myprecious.gnumeric |-+ 20080321 |- 1_myprecious.gnumeric ====== ---- ''autosave source code'' ====== #!/usr/bin/env tclsh proc mkdir {dir name} { if {![file isdirectory $dir/$name]} { file mkdir $dir/$name } return $dir/$name } proc save {file dir} { set date [clock format [clock seconds] -format "%Y%m%d"] set dir [mkdir $dir $date] set index 0 while {[file exists $dir/[incr index]_$file]} {} file copy $file $dir/${index}_$file } proc main {file} { set dir [file dirname [file normalize $file]] cd $dir set file [file tail $file] set save [mkdir $dir _SAVE] if {![file exists $save/$file]} { file copy $file $save/$file save $file $save } elseif {[file mtime $file] > [file mtime $save/$file]} { file copy -force $file $save/$file save $file $save } } ====== ---- !!!!!! %| [Category File] | [Category Tools] |% !!!!!!