17 December 2008

Бекапим сервер

Lumber room
Нередкая это задача, но делается довольно просто!

Приступим:

1) бэкап мускула

Для этого есть очень хорошая утилитка “mysqldump”, она входит в состав мускула. (если вы юзаете lampp то она лежит в “/opt/lampp/bin/mysqldump”)

Вобщем набиваем в консоли примерно следующее:
mysqldump –all-databases > /mysql.12.12.2008.dump


эта команда забекапит все базы данных в файл “mysql.12.12.2008.dump” в корне! на самом деле пишем любой удобный путь! Если вы не рут то нужно указать логин/пароль с помощю –user логин –password пароль

Приготовьтесь, это может занять серьёзное количество времени если бд приличного размера.

Фишка может не работать, если в какой-нибудь из бд есть ошибки…

Кстати говоря можно подойти к проблеме немного подругому и не бекапить все базы, а каждую отдельно, плюс если в какойто из них есть ошибки то мы узнаем в какой, делается так:

databases=”$(mysql -Bse ’show databases’)”

for db in $databases
do
mysqldump $db > $db.sql
done


2) бэкап файлов

Тут всё проще, достаточно просто заархивировать файлы, вот так:

tar -czf some.tar.gz -C /home some


Но опять-же гораздо удобнее упаковать папку каждого сайта в отдельный архив, поэтому:

names=`dir /home`
for i in $names
do
tar -czf $i.tar.gz -C /home $i
done


Ну а в итоге у меня получился следующий скриптик:
#!/bin/bash

date=`date +%d.%m.%Y_%H-%M`

mkdir /home/BACKUPS/$date
mkdir /home/BACKUPS/$date/DB
mkdir /home/BACKUPS/$date/DATA

databases=”$(mysql -Bse ’show databases’)”

for db in $databases
do
if [ "$db" != "" ];
then
echo ‘——————’
echo ‘START DUMPING “‘$db’” DATABASE’
mysqldump $db > /home/BACKUPS/$date/DB/$db.sql
echo ‘DB “‘$db’” WAS SUCCESSFULLY DUMPED’
fi
done

names=`dir /home`
for name in $names
do
if [ "$name" != "BACKUPS" -a "$name" != "" ];
then
echo ‘——————’
echo ‘START ARCHIVE “‘$name’” FOLDER’
tar -czf /home/BACKUPS/$date/DATA/$name.tar.gz -C /home $name
echo ‘FOLDER “‘$name’” WAS SUCCESSFULLY ARCHIVED’
fi
done

Все Базы и файлы сайтов бекапятся в /home/BACKUPS/текущая дата и время/DB для дампов и /home/BACKUPS/текущая дата и время/DATA для архивов
Tags:bashunixshelllinux
Hubs: Lumber room
+5
651 37
Comments 19
Top of the last 24 hours