Hur man skapar automatiserade Linux/Unixreserver

vid Sukrit Dhandhania November 18, 2008

Linux

”Sparar en sy i tid nio”, går ett gammalt ordstäv. I världen av datorer som vi ser till det, sy som reserver. När spring en produktion DET infrastruktur, det är imperativet att vi uppnår ett använt på våra serveror och applikationer av som nästan hundra procent som möjlighet. Stunder där är ett nummer av väg att göra DET infrastrukturheltäckande, det är omöjliga att göra det fel motståndskraftigt. Så gör vi en planera B.

Serveror göras av tre breda lagrar - maskinvaran, fungerande systemet och applikationerna och datan. I fall att av ett maskinvarufel är det ganska enkelt att byta ut bearbeta med maskin med ny. Installera fungerande systemet och applikationerna var för förhållandevis enkel. Delen, som är hård att byta ut, är datan och konfigurationen som dina applikationer använder. I fall att av fel är denna delen som inte kan bytas ut. Oss så reserv de data på en stamgästbas. Vi drar tillbaka det, upp in som ett sådan det det blir långt lätt att hämta i fall att av nöd-.

Jag ska vägleder dig till och med handstil en skriva för att ta dagligen reserver på ditt system. För denna öva mig ska bruk en server som kör den Apache webbservern, en MySQL databasserver och har ett arkiv på /home delade som innehåller några data, som behöver att dras tillbaka - upp. Vi ska också säkerhetskopia som den föregående dagens Apache tar fram loggar in ett separat reserv- arkiv. Först behöver vi att skapa ett arkiv var våra ska reserver bor. Som delen av öva mig har skapat ett kallat arkiv RESERV/opt delning. Vi ska organiserar reserverna i detta arkiv, så att varje dagreserv bor i arkivet bildad något liknande detta - /opt/BACKUP/YEAR/MONTH/DATE/. Så på 11th Augusti 2008 går de ska reserverna in i /opt/BACKUP/2008/08/11/. Låt oss skapa dessa arkiv. Kör uppsättningen av befaller efter som rota användare.

# mkdir - p /opt/backup/DATA/2008
# cd /opt/backup/DATA/2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd /opt/backup/DATA/
# cp - r 2008 2009
# cd /opt/backup/
# cp - r-DATA LOGGAR

Se att att notera nedanfört, innan du utfärdar denna jumbo befalla.

# chown - R calvin.calvin /opt/backup

Vi har nu två uppsättningar av reserv- arkiv - man för data och another för att logga sparar. Med reservarkiven skapat som vi är ordna till nu, för att starta handstil skriva. Notera: Förmiddag I genom att använda användaren calvin throughout this article. Please replace calvin with your own username.


###########################################################
# CODE BEGINS HERE
###########################################################

#!/bin/bash

# SERVER DATA BACKUP V1.0

#########################
# BACKUP CONFIG
#########################

#Configure the month, date, and day
YEAR=`date +”%Y”` # 2008
MONTH=`date +”%m”`# 11
DAY=`date +”%d”` # 14
YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13
YESTERDAY_DATE=`date –date=yesterday +%d` # 13
YESTERDAY_MONTH=`date –date=yesterday +%m` # 11
YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008
TODAY=`date +%Y-%m-%d` # 2008-11-14
TODAY_DATE=`date +%d` # 14

# directories to backup to
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- Change this your data backup dir
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- Change this your log backup dir

# Apache Document Root Directory
APACHE_DOCROOT=/var/www/html/

# MySQL Database config
DB_IP="localhost" # <-- Change this to the IP of your database server
DB_USER="calvin" # <-- Change this to your database username
DB_PASS="calvin_password" # <-- Change this to your database password
DB_NAME="clientlist" # <-- Change this to your database name

# Apache Log Dir
APACHE_LOG_DIR="/var/log/httpd/" # <-- Change this to the path data of your logs

# Application Files' Dir
APP_FILES="/home/calvin/application_files/" # <-- Change this to the path of the data directory

# Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory

# Mail report address
EMAIL_ID="you@youremailid.com" # <-- Change this to your e-mail ID

###########################################################
# DATA BACKUP
###########################################################

# Create and go into backup directory
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH
mkdir $DAY
cd $DAY

# Database backup
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_NAME}.db
tar -zcvf ${DB_NAME}.tar.gz ${DB_NAME}.db
rm -f ${DB_NAME}.db

# /etc backup
tar -zcf etc.tar.gz /etc

# Application backup
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT}
tar -zcf App_Files.tar.gz ${APP_FILES}

###########################################################
# LOG BACKUP
###########################################################

# Create and go into backup directory
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH
mkdir $YESTERDAY_DATE
cd $YESTERDAY_DATE

# HTTPD Log Backup
for i in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; do cp $i .; done
for i in access_log.${YESTERDAY}*; do gzip $i; done

###########################################################
# Send out mail notifications
###########################################################

# Mail notify
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s “Backup for ${HOSTNAME}::DATA done :)” ${EMAIL_ID}
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s “Backup for ${HOSTNAME}::LOG done :)” ${EMAIL_ID}

###########################################################
# CODE ENDS HERE
###########################################################

Save this script in a directory such as /home/calvin/scripts/backup.sh. Give executable permissions to the file:

# chmod +x /home/calvin/scripts/backup.sh

Now you are good to go. Run the script form your command line:

# /home/calvin/scripts/backup.sh

You can also optionally add this script as a cron job so that it will be executed on a daily basis at a time of your choice. If you want to run this script at 4 AM daily do the following:

# crontab -e

Create a new line in the file that opens and add the following:

0 4 * * * /home/calvin/scripts/backup.sh > /dev/null

There you go. Your server will now backup your data, database, configuration files, application files, and log files to /opt/backup everyday at 4 AM. A smart thing to do now would be to export these backups to a remote machine so that you don’t lose your backups if your server faces problems. We will cover how to do that in my next article.

Related Posts:
  • Windows XP Recovery System Features
  • Increase your Linux/Unix Productivity: How to use crontab
  • How to download files from the Linux command line
  • Walkthrough: Time Machine for OS X 10.5 Leopard
  • How to backup your files to your Dreamhost account (OS X)
  • Get Simple Help tutorials just like this one in your email inbox every day - for free! Just enter your email address below:

    You can always opt out of this email subscription at any time.


    Bookmark and Share

    { 1 comment… read it below or add one }

    1 Alberto 12.09.08 at 5:56 am

    Hello
    I’m testing the script, but I’ve errors with the lines:

    YESTERDAY=`date ?date=?yesterday? +%Y-%m-%d` # 2008-11-13
    YESTERDAY_DATE=`date ?date=yesterday+%d` # 13
    YESTERDAY_MONTH=`date ?date=yesterday +%m` # 11
    YESTERDAY_YEAR=`date ?date=yesterday +%Y` # 2008

    The error I’ve is by example:

    mysystem# YESTERDAY=`date .date=.yesterday. +%Y-%m-%d` # 2008-11-13
    date: extra operator `+%Y-%m-%d’
    Try `date –help’ for mor information

    I’ve tested it in : Ubuntu Linux 7.04

    Thanks (and good work !!)

    Leave a Comment

    You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>