How to create automated Linux/Unix backups Как создать автоматизированную Linux / Unix копий

by Sukrit Dhandhania on November 18, 2008 по Sukrit Dhandhania по 18 Ноября 2008

Linux

“A stitch in time saves nine”, goes an old saying. "Стежок вовремя, стоит девяти", выходит старая поговорка. In the world of computers we refer to that stitch as backups. В мире компьютеров мы говорим о том, что стежок, как резервное копирование. 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. При запуске производства ИТ-инфраструктуры, крайне важно, что мы достигнем работает на наших серверах и в приложениях, как почти сто процентов, как это возможно. While there are a number of ways to make an IT infrastructure solid, it is impossible to make it failure proof. Хотя Есть несколько способов сделать ИТ-инфраструктуру твердый, это невозможно сделать это доказательством провала. So we make a plan B. Поэтому мы делаем план B.

Servers are made of three broad layers - the hardware, the operating system and applications, and the data. Серверы сделаны из трех широких слоев - аппаратных средств, операционной системы и приложений и данных. In case of a hardware failure it is rather simple to replace the machine with a new one. В случае аппаратного сбоя она довольно проста для замены машин с новой. Installing the operating system and applications too are relatively simple. Установка операционной системы и приложений тоже довольно прост. The part that is hard to replace is the data and configuration that your applications use. Часть, которая будет трудно заменить это данные, а конфигурации, что ваши заявки использования. In case of failure this is the part that can not be replaced. В случае неудачи это часть, которая не может быть заменен. So we backup that data on a regular basis. Так что мы, что резервное копирование данных на регулярной основе. We back it up in such a way that it becomes easy to retrieve in case of emergency. Мы обратно ее таким образом, что она становится легко получить в случае чрезвычайной ситуации.

I will guide you through writing a script to take daily backups on your system. Я буду вести Вас путем написания сценария принимать ежедневные резервные копии на вашей системе. 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. Для этой работы я буду использовать сервер под управлением веб-сервера Apache, MySQL сервером баз данных и каталогов по / Главная раздел, который содержит некоторые данные, которые необходимо резервировать. We will also backup the previous day’s Apache access logs in a separate backup directory. Мы будем также резервного копирования накануне Apache журналов доступа в отдельную резервную копию каталога. First, we need to create a directory where our backups will reside. Во-первых, нам нужно создать директорию, где наши архивы будут проживать. As part of the exercise I have created a directory called BACKUP on the /opt partition. В рамках этой работы я создал каталог BACKUP об / выбрать раздел. 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/ . Мы будем организовывать резервное копирование в этот каталог так, что каждая дней резервного копирования находится в каталоге сформировали подобное - / исключить / BACKUP / год / месяц / ДАТА /. So on the 11th of August 2008 the backups will go into /opt/BACKUP/2008/08/11/ . Так на 11 августа 2008 года резервные копии будут идти в / opt/BACKUP/2008/08/11 /. Let’s create these directories. Давайте создавать эти каталоги. Run the following set of commands as the root user. Запуск следующего набора команд как корень пользователя.

# mkdir -p /opt/backup/DATA/2008 # Mkdir-п / opt/backup/DATA/2008
# cd /opt/backup/DATA/2008 # Кд / 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/ # Кд / исключить / резервное копирование / DATA /
# cp -r 2008 2009 # CP-R 2008 2009
# cd /opt/backup/ # Кд / исключить / резервное копирование /
# cp -r DATA LOG # CP-R ДАННЫМИ ВХОД

See note below before issuing this last command. См. примечание ниже до выдачи этой последней команды.

# chown -R calvin.calvin /opt/backup # Chown-R calvin.calvin / исключить / резервного копирования

We now have two sets of backup directories - one for data and another for log files. Сейчас у нас есть два вида резервного копирования директорий - один для данных, а другой для лог-файлы. With the backups directories created we are now ready to start writing the script. Note: I’m using the user calvin throughout this article. Что резервные копии каталогов создаются в настоящее время мы готовы начать писать сценарий. Примечание: Я использую пользователей Calvin всей этой статьи. Please replace calvin with your own username. Просьба заменить Кальвин с вашим собственным именем пользователя.


########################################################### ################################################## #########
# CODE BEGINS HERE # Код начинается здесь
########################################################### ################################################## #########

#!/bin/bash #! / BIN / Bash

# SERVER DATA BACKUP V1.0 # Сервер резервного копирования данных, v1.0

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

#Configure the month, date, and day # Настройка месяц, дата и день
YEAR=`date +”%Y”` # 2008 Год = `Дата +"% Y "` # 2008
MONTH=`date +”%m”`# 11 Месяц = `Дата +"% M "` # 11
DAY=`date +”%d”` # 14 В день = `Дата +"% D "` # 14
YESTERDAY=`date –date=”yesterday” +%Y-%m-%d` # 2008-11-13 ВЧЕРА = `дата-дата =" вчера "+% Y-% M-%` # D 2008-11-13
YESTERDAY_DATE=`date –date=yesterday +%d` # 13 YESTERDAY_DATE = `дата-дата = вчера +% D` # 13
YESTERDAY_MONTH=`date –date=yesterday +%m` # 11 YESTERDAY_MONTH = `дата-дата = вчера +% м` # 11
YESTERDAY_YEAR=`date –date=yesterday +%Y` # 2008 YESTERDAY_YEAR = `дата-дата = вчера +% Y` # 2008
TODAY=`date +%Y-%m-%d` # 2008-11-14 СЕГОДНЯ = `сегодняшний день +% Y-% M-%` # D 2008-11-14
TODAY_DATE=`date +%d` # 14 TODAY_DATE = `сегодняшний день +% D` # 14

# directories to backup to # Каталоги для резервного копирования на
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- Change this your data backup dir DATA_BACKUP_PARENT_DIR = / исключить / резервное копирование / DATA / # <- Изменить эту резервную копию ваших данных реж
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- Change this your log backup dir LOG_BACKUP_PARENT_DIR = / исключить / резервное копирование / LOG / # <- Изменить этот ваш журнал архивации реж

# Apache Document Root Directory # Apache документе корневой каталог
APACHE_DOCROOT=/var/www/html/ APACHE_DOCROOT = / VAR / WWW / HTML /

# MySQL Database config # MySQL базу данных конфигурации
DB_IP="localhost" # <-- Change this to the IP of your database server DB_IP = "локальный" # <- Изменить это IP вашего сервера баз данных
DB_USER="calvin" # <-- Change this to your database username DB_USER = "Кальвин" # <- Изменение этой вашей базе данных имя пользователя
DB_PASS="calvin_password" # <-- Change this to your database password DB_PASS = "calvin_password" # <- Изменить это Ваша база данных паролем
DB_NAME="clientlist" # <-- Change this to your database name DB_NAME = "clientlist" # <- Изменить это ваша база данных наименования

# Apache Log Dir # Apache журнала реж
APACHE_LOG_DIR="/var/log/httpd/" # <-- Change this to the path data of your logs APACHE_LOG_DIR = "/ VAR / Журнал / HTTPD /" # <- Изменить это путь данных ваших журналов

# Application Files' Dir # Применение Files' Dir
APP_FILES="/home/calvin/application_files/" # <-- Change this to the path of the data directory APP_FILES = "/ главная / Кэлвин / application_files /" # <- Изменить это путь к каталогу данных

# Config Dir # Config Dir
CONFIG_DIR="/etc/" # <-- Change this to the path data directory CONFIG_DIR = "/ и т.д. /" # <- Изменить это путь каталога данных

# Mail report address # Почта докладе адрес
EMAIL_ID="you@youremailid.com" # <-- Change this to your e-mail ID EMAIL_ID = "you@youremailid.com" # <- изменить на ваш е-почта ID

########################################################### ################################################## #########
# DATA BACKUP # Резервного копирования данных
########################################################### ################################################## #########

# Create and go into backup directory # Создание и перейти в каталог резервного копирования
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH CD $ DATA_BACKUP_PARENT_DIR / $ YEAR / $ MONTH
mkdir $DAY mkdir $ ДНЯ
cd $DAY CD $ ДНЯ

# Database backup База данных # резервного копирования
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. дб
tar -zcvf ${DB_NAME}.tar.gz ${DB_NAME}.db TAR-zcvf DB_NAME $ (). tar.gz DB_NAME $ (). дб
rm -f ${DB_NAME}.db RM-F $ DB_NAME (). дб

# /etc backup # / Резервного копирования и т.д.
tar -zcf etc.tar.gz /etc TAR-zcf etc.tar.gz / и т.д.

# Application backup # Применение резервного копирования
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 # BACKUP LOG
########################################################### ################################################## #########

# Create and go into backup directory # Создание и перейти в каталог резервного копирования
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH CD $ LOG_BACKUP_PARENT_DIR / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH
mkdir $YESTERDAY_DATE mkdir $ YESTERDAY_DATE
cd $YESTERDAY_DATE CD $ YESTERDAY_DATE

# HTTPD Log Backup # HTTPD журнала резервного копирования
for i in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; do cp $i .; done Я в $ () APACHE_LOG_DIR / access_log. ВЧЕРА $ () *; делать CP $ I.; сделали
for i in access_log.${YESTERDAY}*; do gzip $i; done Я в access_log. ВЧЕРА $ () *; делать GZIP $ I; сделали

########################################################### ################################################## #########
# Send out mail notifications # Отправка уведомлений почта
########################################################### ################################################## #########

# Mail notify # Почта уведомить
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s “Backup for ${HOSTNAME}::DATA done :)” ${EMAIL_ID} дю-ОТС DATA_BACKUP_PARENT_DIR $ / $ YEAR / $ MONTH / $ ДЕНЬ / * | почта-S "Backup для $ () HostName:: ДАННЫЕ сделали:)" $ () EMAIL_ID
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s “Backup for ${HOSTNAME}::LOG done :)” ${EMAIL_ID} дю-ОТС LOG_BACKUP_PARENT_DIR $ / $ YESTERDAY_YEAR / $ YESTERDAY_MONTH / $ YESTERDAY_DATE / * | почта-S "для резервного копирования $ HostName ():: Войти сделали:)" $ () EMAIL_ID

########################################################### ################################################## #########
# CODE ENDS HERE # Код заканчивается здесь
########################################################### ################################################## #########

Save this script in a directory such as /home/calvin/scripts/backup.sh. Сохраните этот скрипт в директорию например, / дома / Calvin / скрипты / backup.sh. Give executable permissions to the file: Предоставьте разрешения на исполняемый файл:

# chmod +x /home/calvin/scripts/backup.sh # Chmod + X / дома / Calvin / скрипты / backup.sh

Now you are good to go. Теперь вы хорошо идти. Run the script form your command line: Запуск сценария форму вашей командной строке:

# /home/calvin/scripts/backup.sh # / Дома / Calvin / скрипты / 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: Если вы хотите использовать этот сценарий в 4 часа утра ежедневно делать следующее:

# crontab -e # Кронтаб-э

Create a new line in the file that opens and add the following: Создать новую строку в файл, который открывает и добавить следующее:

0 4 * * * /home/calvin/scripts/backup.sh > /dev/null 0 4 * * * / дома / Calvin / скрипты / backup.sh> / Dev / нуль

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. Ваш сервер будет время резервного копирования ваших данных, базы данных, конфигурационные файлы, файлы приложений, файлы журналов и в / исключить / резервного копирования повседневной в 4 часа утра. 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: Связанные Сообщений:
  • Increase your Linux/Unix Productivity: How to use crontab Увеличьте ваш Linux / Unix Производительность: Как использовать кронтаб
  • Walkthrough: Time Machine for OS X 10.5 Leopard Прохождение: Машина времени для OS X 10,5 Леопард
  • How to backup your files to your Dreamhost account (OS X) Как для резервного копирования файлов на ваш счет Dreamhost (OS X)
  • How to create a custom Windows Vista Installation DVD Как создать пользовательские установки Windows Vista DVD
  • Review: BackBlaze backup service - 25 Beta Invites for Simple Help readers Обзор: резервная BackBlaze службы - 25 Бета-версия предлагает для простых читателей Справка
  • 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 Закладка и Поделитесь

    { 0 comments… (0 комментарии ... add one now Добавить сейчас } )

    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> Вы можете использовать эти теги HTML и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>