#!/bin/sh # \ exec /usr/local/bin/tclsh "$0" ${1+"$@"} puts "Start backup..." puts "...create SCE backup..." puts "backup directory: /n/gold/3/weide/rsrgurop/backup" set backup-dir /n/gold/3/weide/rsrgurop/backup puts "cd /usr/class" cd /usr/class puts "skipping previous quarter directories" # don't backup previous quarters foreach f [lsort [glob sce/*]] { if {[string match "sce/rcpp-*" $f]} { if {[file isdirectory $f] && [file readable $f]} { foreach g [lsort [glob $f/*]] { if {($g != "$f/RESOLVE_Catalog-HTML") && ($g != "$f/Bugs_Catalog-HTML") && ($g != "$f/tmp")} { lappend dirs $g } } } } elseif {($f != "sce/1997sp") && ($f != "sce/1997su") && ($f != "sce/1997au") && ($f != "sce/1998wi") && ($f != "sce/1998sp") && ($f != "sce/1998su") && ($f != "sce/1998au") && ($f != "sce/1999wi") && ($f != "sce/1999sp") && ($f != "sce/1999su") && ($f != "sce/1999au") && ($f != "sce/2000wi") && ($f != "sce/2000sp") && ($f != "sce/2000su") && ($f != "sce/2000au") && ($f != "sce/2001wi") && ($f != "sce/2001sp") && ($f != "sce/2001su") && ($f != "sce/2001au") && ($f != "sce/2002wi") && ($f != "sce/2002sp") && ($f != "sce/2002su") && ($f != "sce/2002au") && ($f != "sce/2003wi") && ($f != "sce/2003sp") && ($f != "sce/2003su") && ($f != "sce/2003au") && ($f != "sce/2004wi") && ($f != "sce/2004sp") && ($f != "sce/2004su") && ($f != "sce/2004au")} { lappend dirs $f } } puts "get dates" # get date mmddyy of the last day a backup was performed if {[file exists ${backup-dir}/LOGS.zip]} { # file LOGS.zip exists already # use the date of last modification set date [clock format [file mtime ${backup-dir}/LOGS.zip] -format "%m%d%Y"] } else { # file LOGS.zip does not exist yet # use the day before set date [clock format [expr [clock seconds] - 86400] -format "%m%d%Y"] } # get current date set today [clock format [clock seconds] -format "%m%d%Y"] # get current weekday abbr. set day [clock format [clock seconds] -format "%a"] puts "Last backup was on $date. Today is $day, $today." # determine kind of backup based on current day: # Saturday => full backup # Sun-Fri => partial backup if {[string compare $day "Sat"] == 0} { puts "make complete backup" # make complete backup set cmd "catch \{exec zip -ryv ${backup-dir}/${today} \ ${dirs} >& ${backup-dir}/${today}.LOG\} result" } else { puts "make partial backup" # make partial backup set cmd "catch \{exec zip -ryv -t ${date} \ ${backup-dir}/${today} ${dirs} >& ${backup-dir}/${today}.LOG\} \ result" } puts "create backup..." puts $cmd eval $cmd if {[file exists ${backup-dir}/${today}.zip]} { puts "...backup created" puts "cd ${backup-dir}" cd ${backup-dir} file attributes ${today}.zip -permissions 00640 file attributes ${today}.LOG -permissions 00640 set cmd "catch \{exec zip -m LOGS.zip ${today}.LOG\} result" puts "archive LOG file..." puts $cmd eval $cmd puts "...done" } else { # error occurred # nothing new, nothing to backup - get rid of LOG file puts "...nothing new to backup" file delete -force ${backup-dir}/${today}.LOG } puts "...all finished with SCE backup" puts "all done with backups"