#!/usr/bin/perl -w ########################################################## # 5 Jan 2005 # # Christopher Juckins # # # # Tars up selected directories for periodic backups. # # Backups are run from the root crontab. # ########################################################## # Notification email address #$SYSADMIN = "username\@domain"; # Get local hostname chomp($MACHINE = `hostname -s`); # Set up logs - purge old, open new $LOG = "/tmp/backup.log"; $LOG_ERROR = "/tmp/backup_error.log"; `/bin/rm $LOG`; `/bin/rm $LOG_ERROR`; `/bin/touch $LOG`; `/bin/touch $LOG_ERROR`; open(LOG, ">$LOG"); open(LOG_ERROR, ">$LOG_ERROR"); # Do backups. # Notify by email when done, include errors. #if (chdir "/mnt/data1/$MACHINE") { if (chdir "/tmp/$MACHINE") { `/bin/tar -Pcvf home.tar /home >$LOG 2>$LOG_ERROR`; `/bin/tar -Pcvf etc.tar /etc >>$LOG 2>>$LOG_ERROR`; `/bin/tar -Pcvf root.tar /root >>$LOG 2>>$LOG_ERROR`; `/bin/tar -Pcvf var_spool_cron.tar /var/spool/cron >>$LOG 2>>$LOG_ERROR`; `/bin/tar -Pcvf var_www_html.tar /var/www/html >>$LOG 2>>$LOG_ERROR`; `/bin/gzip -f *.tar`; `/bin/cp $LOG /mnt/data1/$MACHINE`; if (-s $LOG_ERROR) { `/bin/mail -s "tar backups completed WITH ERRORS for $MACHINE" $SYSADMIN < $LOG_ERROR`; } else { `/bin/mail -s "tar backups completed for $MACHINE" $SYSADMIN < $LOG_ERROR`; } } else { print LOG_ERROR "Cannot cd to /mnt/data1/$MACHINE\n"; `/bin/mail -s "ERROR: tar backup failure on $MACHINE" $SYSADMIN < $LOG_ERROR`; }