Нередкая это задача, но делается довольно просто!
Приступим:
1) бэкап мускула
Для этого есть очень хорошая утилитка “mysqldump”, она входит в состав мускула. (если вы юзаете lampp то она лежит в “/opt/lampp/bin/mysqldump”)
Вобщем набиваем в консоли примерно следующее:
эта команда забекапит все базы данных в файл “mysql.12.12.2008.dump” в корне! на самом деле пишем любой удобный путь! Если вы не рут то нужно указать логин/пароль с помощю –user логин –password пароль
Приготовьтесь, это может занять серьёзное количество времени если бд приличного размера.
Фишка может не работать, если в какой-нибудь из бд есть ошибки…
Кстати говоря можно подойти к проблеме немного подругому и не бекапить все базы, а каждую отдельно, плюс если в какойто из них есть ошибки то мы узнаем в какой, делается так:
2) бэкап файлов
Тут всё проще, достаточно просто заархивировать файлы, вот так:
Но опять-же гораздо удобнее упаковать папку каждого сайта в отдельный архив, поэтому:
Ну а в итоге у меня получился следующий скриптик:
Все Базы и файлы сайтов бекапятся в /home/BACKUPS/текущая дата и время/DB для дампов и /home/BACKUPS/текущая дата и время/DATA для архивов
Приступим:
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 для архивов