#!/usr/local/bin/perl # # Daily-Backup, 1.1b # /usr/sbin/backweb.pl # # Backup all Folder in CURRDIR to BACKUPDIR # as CronJob # # inbase/ti, 22.03.2001 # # added 14.11.01: no backup of log-tar-files # $TAG=&gerdate($TAG); $ZEIT=&gertime($ZEIT); $BACKUPDIR="/archive/backup/webs"; $CURRDIR="/www/webs"; # ----------------------------------------------------- nothing change below # print "BACKUP $CURRDIR started: $TAG, $ZEIT\n"; $TAG =~s/\.//ge; $ZEIT =~s/\://ge; if (!(-d $BACKUPDIR) ) { print "\tBackup canceled (0): Backup-Dir ".$BACKUPDIR." not exist\n"; exit; } if (!(-d $CURRDIR) ) { print "\tBackup canceled (1): Source-Dir ".$CURRDIR." not exist\n"; exit; } if (-d $BACKUPDIR."/".$TAG) { print "\tBackup canceled (2): Backup-Dir ".$BACKUPDIR."/".$TAG." already exist\n"; exit; } $CMD="mkdir $BACKUPDIR/".$TAG; $x=system("$CMD"); if ($x != 0) { print "\tBackup canceled (3): Backup-Dir ".$BACKUPDIR."/".$TAG." already exist, Error $x\n"; exit; } opendir(DIR,"$CURRDIR"); @fArr = readdir(DIR); closedir(DIR); @SORTED = sort @fArr; @fArr=@SORTED; for($n=0;$n<=$#fArr;$n++) { $FILE = "$CURRDIR"; $FILE .= "/$fArr[$n]"; ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)= stat("$FILE"); if ( (-d $FILE) && ($FILE ne "$CURRDIR/.") && ($FILE ne "$CURRDIR/..") ) { (($mtime)=(stat($FILE))[9]); $FDATE = &gerfdate($mtime); $FTIME = &gerftime($mtime); $CMD = "tar -czf".$BACKUPDIR."/".$TAG."/".$fArr[$n]."_".$ZEIT.".tar.gz "; if (-d "$FILE/htdocs") { $CMD .= $FILE."/htdocs ";} if (-d "$FILE/usage") { $CMD .= $FILE."/usage ";} if (-d "$FILE/cgi-bin") { $CMD .= $FILE."/cgi-bin ";} if (-d "$FILE/saferpay") { $CMD .= $FILE."/saferpay ";} if (-d "$FILE/saferpay.test") { $CMD .= $FILE."/saferpay.test ";} if (-f "$FILE/log/access.log") { $CMD .= $FILE."/log/access.log ";} if (-f "$FILE/log/error.log") { $CMD .= $FILE."/log/error.log ";} $CMD .= ">>/dev/null 2>>/dev/null"; $x=system("$CMD"); if ($x !=0) { print "Backup-Error ($x): $CMD not executed\n"; } else { $CMD = "touch $FILE"; system("$CMD"); print "\tBackup: $FILE ->OK\n"; } } # only DEBUG: # if ($n==7) { exit;} # } $TAG=&gerdate($TAG); $ZEIT=&gertime($ZEIT); print "BACKUP ended: $TAG, $ZEIT\n\n"; exit; # subs f. Date + Time sub gerfdate { local ($DATE) = @_; local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst,$tmp); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime($DATE); $mon=$mon+1; if ( length($mday) == 1) { $mday="0$mday";} if ( length($mon) == 1) { $mon="0$mon";} if (length($year) == 3) { $tmp = "20"; $tmp .= substr($year,1,length($year)); $year=$tmp; } $DATE = "$mday.$mon.$year"; return $DATE; } sub gerftime { local ($TIME) = @_; local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime($TIME); if ( length($hour) == 1) { $hour="0$hour";} if ( length($min) == 1) { $min="0$min";} if ( length($sec) == 1) { $sec="0$sec";} $TIME= "$hour:$min:$sec"; return $TIME; } sub gerdate { local ($DATE) = @_; local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst,$tmp); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time); $mon=$mon+1; if ( length($mday) == 1) { $mday="0$mday";} if ( length($mon) == 1) { $mon="0$mon";} if (length($year) == 3) { $tmp = "20"; $tmp .= substr($year,1,length($year)); $year=$tmp; } $DATE = "$mday.$mon.$year"; return $DATE; } sub gertime { local ($TIME) = @_; local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =localtime(time); if ( length($hour) == 1) { $hour="0$hour";} if ( length($min) == 1) { $min="0$min";} if ( length($sec) == 1) { $sec="0$sec";} $TIME= "$hour:$min:$sec"; return $TIME; } # eof