• Авторизация


Скрипт бэкапа дампа баз MySQL и сайтов на ftp-сервер 17-10-2008 15:49 к комментариям - к полной версии - понравилось!


Уважаемые читатели, я давно не писал, так как много работы.:)

Сегодня мы пишем скрипт, который без особых проблем скопирует на FTP-сервер файлы дампа БД MySQL и некоторое колл-во сайтов, после чего отправит нам отчёт о проведённой работе:)

 

З.Ы. Сильно не пинайте, первый скрипт:)

 

Собственно с чего начать? А начнём мы с БД.

Предположим есть 5 БД, создаём файл, назовём его bcmysql.conf и положим в /var/bcscript

 

vim /var/bcscript/bcmysql.conf

#!/bin/bash
#
#
# MOUNT FTP Монтируем FTP-сервер в папку, если будет ошибка пишем в /var/bcscript/logs/bcscript.err

curlftpfs ftp://ftp-server /localdir -o user=username:password 2> /var/bcscript/logs/bcscript.err

# REMOVE OLD FILES Удаляем файлы старше 30 дней

find /ftpdir/db -mtime +30 -type f -exec rm {} \;
find /ftpdir/www -mtime +30 -type f -exec rm {} \;


# CREATE MAIL MESSAGE & ASK VARIABLЕS Создаём почтовое сообщение для отправки отчёта и задаём переменные для дальнейшей работы

DATE=`date +%d-%m-%Y` # Задаём текущую дату
TIME=`date +%H:%M:%S` # Время
EMAIL=kykywka@gmail.com # Электронную почту на которую отправи отчёт
MAILB=/tmp/mail.msg # Располодения файла сообщения
MAILS="BackUp report" # Тема сообщения
echo null > /tmp/mail.msg # Очищаем файл


echo Date $DATE > /tmp/mail.msg # Добавляем в сообщение дату


# START TIME

echo 'START SCRIPT' $TIME >> /tmp/mail.msg # Добавляем в сообщение время начала скрипта


# BACKUP SCRIPT STARTER !!!!Читаем примечание!!!!

/var/bcscript/dbbc.conf postfix 2>> /var/bcscript/logs/bcscript.err # Запускаем скрипт копирования базы с выводом ошибок в /var/bcscript/bcscript.err
/var/bcscript/wwwbc.conf sitename 2>> /var/bcscript/logs/bcscript.err # Запускаем скрипт копирования сайта с выводом ошибок в /var/bcscript/bcscript.err

#END TIME

TIME=`date +%H:%M:%S` # ...Снова задаём время
echo 'STOP SCRIPT' $TIME >> /tmp/mail.msg # ...И добавляем его в письмо. Это время окончания работы скрипта

# SEND MESSAGE # Отправляем сообщение на почту

mail -c mailcopy@mail.ru -s "$MAILS" $EMAIL < $MAILB 2>> /var/bcscript/logs/bcscript.err # Параметр -c задаёт получателя копии


# CLEAR TMP FOLDER Очистим временную папку

rm -r -f /tmp/*  2>> /var/bcscript/logs/bcscript.err


# UNMOUNT FTP Размонтируем фтп

fusermount -u /ftpdir 2>> /var/bcscript/logs/bcscript.err

 

 

Примечания:

1. Для работы скрипта необходимо установить curlftpfs. sudo aptitude install curlftpfs

2. Вернёмся к пункту BACKUP SCRIPT STARTER... Обращу внимание, на то что все файлы запускаются с параметром, сделано это для того, чтобы не лопатить 1 файл добавляя в него кусок копирования базы или сайта, а просто добавлением одной строки с параметром, который является или именем базы или папкой содержащей сайт. Далее мы увидим, как это работает...

 


 

Скрипт копирования БД.

Скрипт копирования БД помещаем в ту же папку, что и bcmysql.conf. Назовём его dbbc.conf. Создайте в MySQL пользователя, с правами SELECT, LOCK TABLES для всех баз. В данном случае это bcuser с паролем bcuser

 

#!/bin/bash
#
# DATABASE BACKUP
#
# VARIABLE Зададим переменные
DATE=`date +%d-%m-%Y` # Задаём дату
HOSTNAME=localhost # Имя хоста
DBNAME=$1 # Имя базы ($1 говорит о том, что мы используем в качестве имени БД первый указанный параметр)
DBPASS=bcuser # пароль пользователя от которого делаем ДАМП
DBUSER=bcuser # пользователь от которого делаем дамп
MAILB=/tmp/mail.msg # файл сообщения


# CREATE DUMP # Дамп создаём

mysqldump --opt -h $HOSTNAME -u $DBUSER -p$DBPASS $DBNAME > /tmp/backup.sql # Делаем дамп
tar -zcf /tmp/sql-$DBNAME-$DATE.tar.gz /tmp/backup.sql # Архивируем
cp /tmp/sql-$DBNAME-$DATE.tar.gz /ftpdir/db/$DATE-$DBNAME.sql.tar.gz # Копируем


#WRITE MESSAGE FILE # пишем в сообщение отчёт о проделанной работе

CP=$? # задаём переменной CP результат последнего действия

test $CP = 0 && echo BackUp MySQL DB $DBNAME ................. OK >> $MAILB || echo BackUp MySQL DB $DBNAME ................. FALSE >> $MAILB # Делаем вывод в файл (если СР = 0 тогда ОК, если чему-то другому тогда FALSE).

Собственно вот и готов бэкап БД. Если надо ещё одну базу, тогда просто допишем в файл bcmysql.conf сроку /var/bcscript/dbbc.conf postfix 2>> /var/bcscript/logs/bcscript.err , где postfix = имя БД


 

Ну остался самый короткий скрипт:) Копирование сайта. Теоретически ничем не отличается от копирования дампа.

Назовём файл wwwbc.conf

 

# BACKUP PROCEDURE FOR FILES
#
#VARIABLES Задаём переменные


FOLDERN=$1 # Имя папки (задаётся аналогично имени БД)
DATE=`date +%d-%m-%Y` #Дата
MAILB=/tmp/mail.msg # Письмо

tar -zcf /tmp/www-$FOLDERN-$DATE.tar.gz /var/www/vhosts/$FOLDERN # Архивируем папку с сайтом
mv /tmp/www-$FOLDERN-$DATE.tar.gz /ftpdir/www # Переносим на FTP-сервер

#WRITE MESSAGE FILE Пишем в сообщение (аналогично БД)

CP=$?

test $CP = 0 && echo BackUp www $FOLDERN ................. OK >> $MAILB || echo BackUp www $FOLDERN ................. FALSE >> $MAILB

 

Всё. скрипт готов:)

Поиграйтесь с правами на папки и файлы, в основном могут быть проблемы с этим.

Если выдаётся ошибка tar: Removing leading `/' from member names не обращайте внимания или просто поиграйте с опцией -C tar, в консоль сыпать ничего не будет, всё падает в лог-файл.

вверх^ к полной версии понравилось! в evernote
Комментарии (1):
Snysmik 05-11-2008-10:53 удалить
О, спасибо большое, запомнимс.


Комментарии (1): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Скрипт бэкапа дампа баз MySQL и сайтов на ftp-сервер | чим-чим - ДнЕВниЧоГГ | Лента друзей чим-чим / Полная версия Добавить в друзья Страницы: раньше»