Showing posts with label Backup. Show all posts
Showing posts with label Backup. Show all posts

Sunday, 13 March 2016

Backup Script Linux

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
dt=`date +%Y-%m-%d`

#mkdir /var/www/html/backup/womcms_${dt}
#cp -r /var/www/html/womcms /var/www/html/backup/womcms_${dt}

mkdir /var/backup/womall_${dt}
cp -r /var/www/html /var/backup/womall_${dt}

==================================

# Redmine Full backup 3pm and 9pm
0 15 * * * zip -r /home/backup_redmine/redmine_$(date +\%d-\%m-\%Y_\%H:\%M:\%S).zip /var/www/redmine

0 21 * * * zip -r /home/backup_redmine/redmine_$(date +\%d-\%m-\%Y_\%H:\%M:\%S).zip /var/www/redmine

* * * * 6 find /home/backup_redmine/ -mtime +5 -exec rm {} \;

0 * * *  * sync; echo 3 > /proc/sys/vm/drop_caches


 ===========================

 [root@ip-172-31-9-134 web]# pwd
/opt/backup/web
[root@ip-172-31-9-134 web]# cat log-rotate.sh
#!/bin/sh

#############################################################
# File:         folder-backup.sh
# Description:  A shell script to backup Multiple FOLDERs
# Cron Example: 0 2 * * * sh /path/to/direbackup.sh
#############################################################
# a. create a folder /opt/backup/web b. check DISKFREE parameter c. --exclude option in tar
####DEFINE THESE#############################################
FOLDERLIST="/var/log/messages";
DUMPBASEDIR="/opt/backup/web";
SCPTOREMOTE=0;

####END CHANGE HERE###########################################

DATE=`/bin/date +%d-%b-%Y_%k:%M`;
DUMPDIR="$DUMPBASEDIR/$DATE";

    if [ ! -d $DUMPDIR ];
    then
          echo "Creating Directory: ".$DUMPDIR;
            mkdir $DUMPDIR;
    fi

for FOLDER in $FOLDERLIST
do
        echo "FOLDER $FOLDER Backup Started";
    WOBFOLDER=${FOLDER/#\//}
    tar -czf $DUMPBASEDIR/$DATE/${WOBFOLDER//\//-}.tar.gz $FOLDER
        echo "FOLDER $FOLDER Backup Completed";

done

cat /dev/null > /var/log/messages  

exit;

[root@ip-172-31-9-134 web]# crontab -l
#0 0 * * * /bin/bash /opt/backup/web/folder-bak.sh >> /opt/backup/web/folder-bak.log
1 1,3,5,7,9,11,13,15,17,19,21,23 * * * /opt/backup/web/log-rotate.sh >> /opt/backup/web/log-rotate.log

========================================



[root@ip-172-31-3-161 backup]# pwd
/opt/backup
[root@ip-172-31-3-161 backup]# cat mysql-bak-rotation-weekly.sh
#!/bin/sh

#############################################################
# File:         dbbackup.sh
# Description:  A shell script to backup all mysql databases
# Cron Example: 0 2 * * * sh /path/to/dbbackup.sh
#############################################################

####DEFINE THESE#############################################
USER="root"
PASSWORD=`cat /opt/backup/password`
SCPTOREMOTE=0;
REMOTESERVER="192.168.0.0";
REMOTEDIR="/backup";
DUMPBASEDIR="/opt/backup";
####END CHANGE HERE###########################################

MYSQLDUMP=`which mysqldump`
MYSQL=`which mysql`
LOOK=`which find`
DATE=`/bin/date +%d-%b-%Y`;
DELDIR=`/bin/date -d "-7 day" +%d-%b-%Y`;
DUMPDIR="$DUMPBASEDIR/$DATE";
DISKFREE=`df -h | grep -v Filesystem|grep '/dev/xvda1' | awk '{print $5}'| sed 's/%//g'`

if [ $DISKFREE -le "75" ]
then

    echo "Free Space on Drive...Starting Backups"

    if [ ! -d $DUMPDIR ];
    then
            echo "Creating Directory: ".$DUMPDIR;
            mkdir $DUMPDIR;
    fi

# get a list of databases
databases=`$MYSQL --user=$USER --password=$PASSWORD \
 -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

# dump each database in turn
for db in $databases; do
    echo "Database $db Backup Started";
    $MYSQLDUMP --single-transaction --events --force --opt --user=$USER --password=$PASSWORD \
    --databases $db > "$DUMPDIR/$db.bak"
    echo "Database $db Backup Completed";
done

#################################################################
tar -cvzf $DUMPBASEDIR/$DATE.tar.gz $DUMPBASEDIR/$DATE
rm -rf $DUMPBASEDIR/$DATE
mkdir -p $DUMPBASEDIR/$DATE
mv $DUMPBASEDIR/$DATE.tar.gz $DUMPBASEDIR/$DATE/
#################################################################

    if [ $SCPTOREMOTE -eq "1" ]
    then
            echo "Backing up data to remote server";
            scp -r $DUMPDIR $REMOTESERVER:$REMOTEDIR
    fi

        echo "Done";

    if [ ! -d $DELDIR ];
    then
        echo "No directory with name: $DELDIR"
        echo "exiting....."
        exit 1;
    else
   
        echo "Deleting Backup Of Date : $DELDIR"
        $LOOK $DUMPBASEDIR -type d -name $DELDIR -mtime +7 -exec rm -rf {} \; 2>/dev/null
                #find /opt/backup/ -iname "$(date +%A)*.tar.gz" -mtime +7 -exec rm -rf {} \;
        echo "Backup Deleted Successfully...!"
        exit 0;
    fi

fi

exit;

============================