Бэкап сервера и баз данных MySQL
Опубликовано admin в 14 апреля, 2010 - 21:41
Замучался я постоянно из шела с вводом пароля бэкапить БД и директорию с сайтом решил автоматизировать это дело. Все предельно просто, пишем примерно вот такой скрипт (пути и переменные можете ставить какие вам удобнее)
#!/bin/bash# Пишем имя хоста с которого будем делать бэкапHOSTNAME=localhost# имя пользователя БД, не помню почему но если пароль прописать в скрипте то доступ есть только # руту. Восстанавливать то все равно от суперпользователя так что указываем root.DBUSER=root# Указываем переменную директория куда будут ложиться сами бэкапы (у меня их 2)DIRECTORY=/media4/Linux/Backup/Server/MySQL DIRECTORY1=/media4/Linux/Backup/Server/Apache# Переменная с именем базы данныхDBNAME=wordpress DBNAME1=jabber# Аналогично, переменная значение которой ваш пароль суперпользователя (не root системы # а root пароль для подключения к серверу MySQLMySQL DBPASS=yourpassword# Переменная которая будет добавлять день и месяц бэкапаDATE=`date +%d-%m`# Переменная указывающая на директорию с файлами сервера (сайта)SRV=/srv/http# Сама команда дампа БДmysqldump -h $HOSTNAME -u $DBUSER -p$DBPASS $DBNAME > $DIRECTORY/Wordpress-$DATE-restyle.sql# Подождем малость :)sleep 2# Аналогично первомуmysqldump -h $HOSTNAME -u $DBUSER -p$DBPASS $DBNAME1 > $DIRECTORY/Jabber-$DATE.sql# Курим sleep 2# Переходим в директорию сервераcd $SRV# Тарим и жмем все что в этой директории естьsudo tar -cvjpf $DIRECTORY1/Server-$DATE.tar.bz2 .# Ну вот собственно и все, пути как сказал выше подправите Далее даем права на #выполнение и по желанию суем скрипт в крон. Восстановить БД можно так:sudo mysql -u root -pSuperPassword mydb < mydb.sql#Где mydb это имя восстанавливаемой БД, mysql.sql сам файл ранее сохраненного бэкапа БД
Что еще... Вроде все
Желание если есть, то конечно пиши. Я не писал по этой теме так как в разных дистрибутивах все существенно отличалось, да и без бубна не обходилось.
Желание если есть, то конечно пиши. Я не писал по этой теме так как в разных дистрибутивах все существенно отличалось, да и без бубна не обходилось.
Ух, а мне то как это далось )))) 4 - ро суток. Я ведь до этого Linux даже в глаза не видел ))).
Вопрос: если к названию архива не добавлять дату, а написать просто
sudo tar -cvjpf $DIRECTORY1/Server.tar.bz2 * ,
то при каждом бэкапе архивы просто будут заменяться? У меня каждый бэкап весит 22,5 гига, так было бы удобнее...
Да, так они будут перезаписываться. Но лучше делать не
а
Так как файлы начинающиеся с точки с выборкой "*" не будут архивироваться.