13.07.2010 Bash-cкрипт для бекапирования хостинга (файлы+бд)

0.250 Предисловие
Вместо предисловия:

103247 [ 883 ] смешно / [:||||:] / не смешно / утверждена 2007-02-06 в 21:38
Vse Do Fe'Ni:
ты чем бэкапишь?

krang:
админами

391492 [ 1738 ] смешно / [:||||:] / не смешно / утверждена 2007-08-22 в 17:05
Есть 2 типа админов - те, кто ещё не делают бекапы, и те, кто уже делают.

Так вот, чтобы такого не было, читаем дальше...
1. Скрипт для бекапирования

Нашел в интернете скриптик, которые делает следующее:
1. Каждое некоторое количество времени CRON запускает скрипт
2. Скрипт архивирует tar`ом содержимое htdocs из /var/www
3. Скрипт делает sql дампы
4. Раскладывает это по соответствующим директориям, потом раскладывает это всё по директориям с датой.

Удобно? Кому лень это писать самому – забирайте.

#!/bin/bash
 
dir=$1
date=`date \+\%d-%m-%y`
d_dir=$2/$date
sql_pass=$3
 
mkdir -p $d_dir/files
mkdir -p $d_dir/sql
 
for i in $(ls -1 $dir);
do
	file=$i.zip
	tar czf  /tmp/$file $dir/$i/htdocs/* &&
	mv /tmp/$file $d_dir/files/$file
done
 
dbs=$(mysql -p$sql_pass -e "show databases;" | grep [:alnum:])
 
for i in $dbs;
do
	if [ "$i" == "Database" ] || [ "$i" == "information_schema" ] || [ "$i" == "mysql" ]
	then
		continue
	fi
 
	file=$i.sql
	mysqldump -p$sql_pass $i > /tmp/$file &&
	mv /tmp/$file $d_dir/sql/$file
done


Стартуем следующим образом:
./backup.sh директория_с_сайтами куда_копируем_бекапы пароль_от_mysql

Пароль от Mysql естественно должен быть для текущего пользователя (от чьего имени запускается скрипт - root?).

2. Настройка CRON

0 6 * * * /home/xxxx/backup.sh /var/www /mnt/net_disk "пароль"


3. Итог

В итоге имеем:

# ls -R bcp_new
bcp_new:
13-07-10

bcp_new/13-07-10:
files  sql

bcp_new/13-07-10/files:
dmzdubna.ru.zip  dmzkamov.ru.zip  gnu.su.zip  localhost.zip  old.dmzdubna.ru.zip

bcp_new/13-07-10/sql:
dmzdubna.sql  gnu08.sql  gnu.sql


Автор: sb0y

От автора сайта: Корявый скриптик, нуждается в доработке...