How to create automated Linux/Unix backups Comment faire pour créer automatisé Linux / Unix sauvegardes

by Sukrit Dhandhania on November 18, 2008 par Sukrit Dhandhania le jour 18 Novembre, 2008

Linux

“A stitch in time saves nine”, goes an old saying. "Un point dans le temps d'économiser neuf", va un vieux dicton. In the world of computers we refer to that stitch as backups. Dans le monde des ordinateurs que nous référer à ce point que les sauvegardes. When running a production IT infrastructure, it is imperative that we achieve an uptime on our servers and applications of as close to a hundred percent as possible. Pendant l'exécution d'une infrastructure de production, il est impératif que nous parvenions à un uptime sur nos serveurs et des applications de plus près à cent pour cent que possible. While there are a number of ways to make an IT infrastructure solid, it is impossible to make it failure proof. Bien qu'il existe un certain nombre de moyens de faire une solide infrastructure de TI, il est impossible de faire la preuve échec. So we make a plan B. Donc nous faisons un plan B.

Servers are made of three broad layers - the hardware, the operating system and applications, and the data. Les serveurs sont composés de trois couches de large - le matériel, le système d'exploitation et les applications et les données. In case of a hardware failure it is rather simple to replace the machine with a new one. Dans le cas d'une défaillance matérielle, il est assez simple à remplacer la machine avec un nouveau. Installing the operating system and applications too are relatively simple. Installation du système d'exploitation et les applications sont aussi relativement simple. The part that is hard to replace is the data and configuration that your applications use. La partie qui est difficile est de remplacer les données et la configuration de vos applications qui utilisent. In case of failure this is the part that can not be replaced. En cas d'échec c'est la partie qui ne peut pas être remplacée. So we backup that data on a regular basis. Nous avons donc que les données de sauvegarde sur une base régulière. We back it up in such a way that it becomes easy to retrieve in case of emergency. Nous sauvegarde de telle manière qu'il devient facile de récupérer en cas d'urgence.

I will guide you through writing a script to take daily backups on your system. Je vais vous guider à travers l'écriture d'un script à prendre chaque jour des sauvegardes sur votre système. For this exercise I will use a server that runs the Apache web server, a MySQL database server, and has a directory on the /home partition that contains some data that needs to be backed up. Pour cet exercice que je vais utiliser un serveur qui exécute le serveur Web Apache, un serveur de base de données MySQL, et a un répertoire sur le / home partition qui contient certaines données qui doit être soutenue. We will also backup the previous day’s Apache access logs in a separate backup directory. Nous allons aussi sauvegarde de la veille, Apache journaux d'accès dans un autre répertoire de sauvegarde. First, we need to create a directory where our backups will reside. Tout d'abord, nous devons créer un répertoire où nos sauvegardes de résidence. As part of the exercise I have created a directory called BACKUP on the /opt partition. Dans le cadre de l'exercice J'ai créé un répertoire appelé sauvegarde sur le / opt partition. We will organize the backups in this directory so that each days backup resides in a directory formed like this - /opt/BACKUP/YEAR/MONTH/DATE/ . Nous organisons des sauvegardes dans ce répertoire afin que tous les jours de sauvegarde réside dans un répertoire constitué d'articles - / opt / backup / année / mois / DATE /. So on the 11th of August 2008 the backups will go into /opt/BACKUP/2008/08/11/ . Ainsi, le 11 du mois d'août 2008, le backups vont dans / opt/BACKUP/2008/08/11 /. Let’s create these directories. Nous allons créer ces répertoires. Run the following set of commands as the root user. Exécuter une série de commandes que l'utilisateur root.

# mkdir -p /opt/backup/DATA/2008 # Mkdir-p / opt/backup/DATA/2008
# cd /opt/backup/DATA/2008 # Cd / opt/backup/DATA/2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12 # Mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd /opt/backup/DATA/ # Cd / opt / backup / data /
# cp -r 2008 2009 # Cp-r 2008 2009
# cd /opt/backup/ # CD / opt / backup /
# cp -r DATA LOG # Cp-r l'enregistrement des données

See note below before issuing this last command. Voir la note ci-dessous avant de délivrer cette dernière commande.

# chown -R calvin.calvin /opt/backup # Chown-R calvin.calvin / opt / backup

We now have two sets of backup directories - one for data and another for log files. Nous avons maintenant deux séries de sauvegarde des répertoires - l'un pour les données et l'autre pour les fichiers de log. With the backups directories created we are now ready to start writing the script. Note: I’m using the user calvin throughout this article. Avec les sauvegardes des répertoires créés nous sommes maintenant prêts à commencer à écrire le script. Note: je suis à l'aide de la Calvin utilisateur tout au long de cet article. Please replace calvin with your own username. Calvin remplacer s'il vous plaît avec votre propre nom d'utilisateur.


########################################################### ################################################## #########
# CODE BEGINS HERE # Le code commence ici
########################################################### ################################################## #########

#!/bin/bash #! / bin / bash

# SERVER DATA BACKUP V1.0 # Serveur de sauvegarde de données v1.0

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

#Configure the month, date, and day # Configuration du jour, mois, jour et
YEAR=`date +”%Y”` # 2008 ANNEE = `date +"% Y "` # 2008
MONTH=`date +”%m”`# 11 MONTH = `date +"% m "` # 11
DAY=`date +”%d”` # 14 JOUR = `date +"% d "` # 14
YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13 HIER = `date-date =" hier "+% Y-% m-% d` # 2008-11-13
YESTERDAY_DATE=`date –date=yesterday +%d` # 13 YESTERDAY_DATE = `date-hier = date +% d` # 13
YESTERDAY_MONTH=`date –date=yesterday +%m` # 11 YESTERDAY_MONTH = `date-hier = date +% m` # 11
YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008 YESTERDAY_YEAR = `date-hier = date +% Y» # 2008
TODAY=`date +%Y-%m-%d` # 2008-11-14 Aujourd'hui = `date +% Y-% m-% d` # 2008-11-14
TODAY_DATE=`date +%d` # 14 TODAY_DATE = `date +% d" # 14

# directories to backup to # Répertoires de sauvegarde sur
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- Change this your data backup dir DATA_BACKUP_PARENT_DIR = / opt / backup / data / # <- Changez la sauvegarde de vos données dir
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- Change this your log backup dir LOG_BACKUP_PARENT_DIR = / opt / backup / log / # <- Changez la sauvegarde du journal de votre dir

# Apache Document Root Directory # Apache répertoire racine de documents
APACHE_DOCROOT=/var/www/html/ APACHE_DOCROOT = / var / www / html /

# MySQL Database config # Config de base de données MySQL
DB_IP="localhost" # <-- Change this to the IP of your database server DB_IP = "localhost" # <- Modifier ce à l'adresse IP de votre serveur de base de données
DB_USER="calvin" # <-- Change this to your database username DB_USER = "calvin" # <- Changez la base de données à votre nom d'utilisateur
DB_PASS="calvin_password" # <-- Change this to your database password DB_PASS = "calvin_password" # <- Changez la base de données à votre mot de passe
DB_NAME="clientlist" # <-- Change this to your database name DB_NAME = "clientlist" # <- Changez la base de données à votre nom

# Apache Log Dir # Log d'Apache dir
APACHE_LOG_DIR="/var/log/httpd/" # <-- Change this to the path data of your logs APACHE_LOG_DIR = "/ var / log / httpd /" # <- Modifier ce la voie à des données de vos journaux

# Application Files' Dir # Application de fichiers' DIR
APP_FILES="/home/calvin/application_files/" # <-- Change this to the path of the data directory APP_FILES = "/ home / Calvin / application_files /" # <- à ce changement le chemin d'accès du répertoire de données

# Config Dir # Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory Config_dir = "/ etc /" # <- Changez la voie à la répertoire de données

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

########################################################### ################################################## #########
# DATA BACKUP # Sauvegarde de données
########################################################### ################################################## #########

# Create and go into backup directory # Créer et allez dans le répertoire de sauvegarde
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH DATA_BACKUP_PARENT_DIR $ cd / $ YEAR / $ mois
mkdir $DAY mkdir $ JOUR
cd $DAY cd $ JOUR

# Database backup # Sauvegarde de base de données
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${DB_NAME}.db mysqldump-h DB_IP $ ()-U $ () DB_USER-p $ () $ DB_PASS DB_NAME ()> $ () DB_NAME. db
tar -zcvf ${DB_NAME}.tar.gz ${DB_NAME}.db tar-zcvf DB_NAME $ (). tar.gz DB_NAME $ (). db
rm -f ${DB_NAME}.db rm-f $ () DB_NAME. db

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

# Application backup # Application de sauvegarde
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT} tar-zcf Apache_Doc_Root.tar.gz $ () APACHE_DOCROOT
tar -zcf App_Files.tar.gz ${APP_FILES} tar-zcf App_Files.tar.gz $ () APP_FILES

########################################################### ################################################## #########
# LOG BACKUP # Sauvegarde du journal
########################################################### ################################################## #########

# Create and go into backup directory # Créer et allez dans le répertoire de sauvegarde
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH LOG_BACKUP_PARENT_DIR $ cd / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $YESTERDAY_DATE mkdir $ YESTERDAY_DATE
cd $YESTERDAY_DATE cd $ YESTERDAY_DATE

# HTTPD Log Backup # Httpd sauvegarde du journal
for i in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; do cp $i .; done pour i dans APACHE_LOG_DIR $ () / access_log. HIER $ () *; faire cp $ i.; fait
for i in access_log.${YESTERDAY}*; do gzip $i; done pour i dans access_log. HIER $ () *; faire gzip $ i; fait

########################################################### ################################################## #########
# Send out mail notifications # Envoyer par mail des avis
########################################################### ################################################## #########

# Mail notify # Mail notifier
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s “Backup for ${HOSTNAME}::DATA done :)” ${EMAIL_ID} du-SHC DATA_BACKUP_PARENT_DIR $ / $ ANNÉE / MOIS $ / $ JOUR / * | mail-s "Sauvegarde de $ (HOSTNAME):: DATA fait:)" $ () EMAIL_ID
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s “Backup for ${HOSTNAME}::LOG done :)” ${EMAIL_ID} du-SHC LOG_BACKUP_PARENT_DIR $ / $ YESTERDAY_YEAR / YESTERDAY_MONTH $ / $ YESTERDAY_DATE / * | mail-s "Sauvegarde de $ (HOSTNAME):: LOG fait:)" $ () EMAIL_ID

########################################################### ################################################## #########
# CODE ENDS HERE # Code se termine ici
########################################################### ################################################## #########

Save this script in a directory such as /home/calvin/scripts/backup.sh. Sauvegarder ce script dans un répertoire tel que / home / Calvin / scripts / backup.sh. Give executable permissions to the file: Exécutable donner les permissions sur le fichier:

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

Now you are good to go. Maintenant vous êtes prêts à partir. Run the script form your command line: Exécuter le script de votre ligne de commande:

# /home/calvin/scripts/backup.sh # / 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. Vous pouvez aussi éventuellement ajouter ce script comme une tâche cron pour qu'il puisse être exécuté sur une base quotidienne à un moment de votre choix. If you want to run this script at 4 AM daily do the following: Si vous voulez exécuter le script à 4 heures du matin tous les jours faire ce qui suit:

# crontab -e # Crontab-e

Create a new line in the file that opens and add the following: Créer une nouvelle ligne dans le fichier qui s'ouvre et ajouter le texte suivant:

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

There you go. Il vous aller. Your server will now backup your data, database, configuration files, application files, and log files to /opt/backup everyday at 4 AM. Votre serveur va maintenant sauvegarder vos données, bases de données, les fichiers de configuration, fichiers d'application, et les fichiers journaux dans / opt / sauvegarde de tous les jours à 4 heures du matin. 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. Une puce chose à faire serait d'exporter ces sauvegardes sur une machine distante afin de ne pas perdre vos sauvegardes si votre serveur est confronté à des problèmes. We will cover how to do that in my next article. Nous aborderons la façon de le faire dans mon prochain article.

Related Posts: Connexes:
  • Increase your Linux/Unix Productivity: How to use crontab Augmentez votre Linux / Unix productivité: Comment faire pour utiliser crontab
  • Walkthrough: Time Machine for OS X 10.5 Leopard Solution: Time Machine pour Mac OS X 10.5 Leopard
  • How to backup your files to your Dreamhost account (OS X) Comment faire pour sauvegarder vos fichiers sur votre compte Dreamhost (OS X)
  • How to create a custom Windows Vista Installation DVD Comment faire pour créer un personnalisé d'installation de Windows Vista DVD
  • Review: BackBlaze backup service - 25 Beta Invites for Simple Help readers Review: BackBlaze service de sauvegarde - 25 Beta Invite simple pour aider les lecteurs à
  • Get Simple Help tutorials just like this one in your email inbox every day - for free! Aide simple pour obtenir des tutoriels comme celui-ci dans votre boîte de courriel tous les jours - gratuitement! Just enter your email address below: Il vous suffit d'entrer votre adresse e-mail ci-dessous:

    You can always opt out of this email subscription at any time. Vous pouvez toujours choisir de ne pas cet e-mail abonnement à tout moment.


    Bookmark and Share Signet et part

    { 0 comments… (0 commentaires ... add one now maintenant ajouter un } )

    Leave a Comment Laissez un commentaire

    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> Vous pouvez utiliser ces balises HTML et les attributs: <a href="" title="fete_christel <abbr title="fete_christel <acronym title="fete_christel <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>