From 1909602caf0f47ff17080918655d76670a3a9ebb Mon Sep 17 00:00:00 2001 From: moe Date: Sat, 13 Jun 2015 14:17:16 +1000 Subject: [PATCH] Added rotate backups, updated diskalert for email --- dbbackup.sh | 10 +++++- diskalert.sh | 81 ++++++++++++++++++++++++++++++++++++++++++------- gitlabbackup.sh | 8 +++-- svnbackup.sh | 24 ++++++--------- wwwbackup.sh | 8 +++++ 5 files changed, 103 insertions(+), 28 deletions(-) diff --git a/dbbackup.sh b/dbbackup.sh index 8ad823a..3a92032 100755 --- a/dbbackup.sh +++ b/dbbackup.sh @@ -5,6 +5,13 @@ DBUSER='dbbackup' DBPASS='EWFfP3GZsqr427Yj' BACKUPDIR='/BACKUP/db/' +rotate_backups() { + find /BACKUP/db/ -type f -mtime +7 -exec rm -fr {} \; +} + + +rotate_backups + databases=`mysql --user=$DBUSER --password=$DBPASS -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` for db in $databases; do @@ -13,5 +20,6 @@ for db in $databases; do mysqldump --force --opt --user=$DBUSER --password=$DBPASS --databases $db > $BACKUPDIR/$db.`date +%Y%m%d`.sql fi - done + + diff --git a/diskalert.sh b/diskalert.sh index 7fad4d2..98d1905 100755 --- a/diskalert.sh +++ b/diskalert.sh @@ -1,14 +1,73 @@ #!/bin/bash -source /etc/profile +MAILTO="mmckinnon@comprofix.com" +SMTP=mail.comprofix.com +LOGFILE="/var/log/diskalert.log" +THISSERVER=`hostname --fqdn` +MAILFROM="mmckinnon@comprofix.com" + +startlogging() { + echo $DASHES2 >> $LOGFILE + echo "$0 started running at `date`" >> $LOGFILE + echo $DASHES2 >> $LOGFILE +} + + +stoplogging() { + echo "`date` [MESSAGE] $0 finished runnning" >> $LOGFILE + echo $DASHES >> $LOGFILE +} + +DASHES="---------------------------------------------------------------------------------" +DASHES2="=================================================================================" + +declare -a DEVICES +index=0 + +startlogging + +for i in $( df -h | grep "/dev/" | grep -v tmpfs | awk '{print $1}' ); +do + DEVICES[$index]=$i + let "index += 1" +done + +for i in ${DEVICES[@]}; +do + let space=`df -Pk $i | grep -v ^File | awk '{printf ("%i", $5) }'` + if [ $space -le 89 ] +then + echo "`date` [MESSAGE] Disk space usage on $i acceptable. $space% currently in use." >> $LOGFILE +fi +if [ $space -ge 90 ] +then + +echo "`date` [WARNING] $i is running out of disk space. $space% currently in use." >> $LOGFILE +echo " +Hello, + +You are running out of disk space on $THISSERVER. + +Your $i is currently using $space% of disk space. + +See the logfile for more info: vim $LOGFILE + +Regards, " >/tmp/diskalertmail.msg + +cat /tmp/diskalertmail.msg | sendemail -s $SMTP -t $MAILTO -f "$THISSERVER <$MAILTO>" -u "[$THISSERVER] is running out of disk space" +echo "`date` [MESSAGE] Running out of disk space email sent to $MAILTO" >> $LOGFILE + +fi +done + + +stoplogging + + + + + + + + -devnames=`df -h | grep "/dev/" | awk '{print $1}'` -for devname in $devnames - do - let p=`df -Pk $devname | grep -v ^File | awk '{printf ("%i", $5) }'` - if [ $p -ge 90 ] - then - df -h $devname > /dev/null - echo "Running out of space \"$devname ($p%)\" on $(hostname) as on $(date)" - fi - done diff --git a/gitlabbackup.sh b/gitlabbackup.sh index 22b12ee..1d69506 100755 --- a/gitlabbackup.sh +++ b/gitlabbackup.sh @@ -1,4 +1,8 @@ #!/bin/bash -mkdir -p /BACKUP/gitlab -chown -R git:git /BACKUP/gitlab +# Add the following lines to /etc/gitlab/gitlab.rb once added +# run gitlab-ctl reconfigure for changes to take effect +# +# gitlab_rails['backup_path'] = '' +# gitlab_rails['backup_keep_time'] = 604800 #7 days of backups to keep + gitlab-rake gitlab:backup:create diff --git a/svnbackup.sh b/svnbackup.sh index b631610..94ee486 100755 --- a/svnbackup.sh +++ b/svnbackup.sh @@ -1,26 +1,22 @@ #!/bin/bash bakdate=$(date +%Y%m%d%H%M) -echo "--------------------------------" -echo "Running SVN backup $bakdate" -echo "--------------------------------\n" - -svnrepos="/var/lib/svn" -echo "\nGoing to backup all SVN repos located at: $svnrepos \n" - + bakdest="/BACKUP/svn/" +svnrepos="/var/lib/svn" + +rotate_backups() { + find /BACKUP/svn/ type f -mtime +7 -exec rm -fr {} \; +} + + +rotate_backups + cd $svnrepos if [ -d "$bakdest" ] && [ -w "$bakdest" ] ; then for repo in *; do - echo "Taking backup/svndump for: $repo" - echo "Executing : svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump \n" svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump done -else - echo "Unable to continue SVN backup process." - echo "$bakdest is *NOT* a directory or you do not have write permission." fi -echo "\n\n=================================" -echo " - Backup Complete, THANK YOU :-]" diff --git a/wwwbackup.sh b/wwwbackup.sh index 29534b8..86c73f7 100755 --- a/wwwbackup.sh +++ b/wwwbackup.sh @@ -4,6 +4,14 @@ DATE=$(date +%Y%m%d%H%M) BACKUPDIR='/BACKUP/www' WWW='/var/www/' +rotate_backups() { + find /BACKUP/www/ -type f -mtime +7 -exec rm -fr {} \; +} + + + rotate_backups + + cd $WWW for folder in `ls -d *`; do