Алексей Набоков Web — разработка, seo, программирование

31Авг/100

скрипт для backup`а сайта

Не буду распинаться, почему бэкап дело важное и нужное. Кто данные уже когда-то терял, бэкапы делает ))

Хочу поделиться простеньким скриптом на bash, с помощью которого я делаю backup небольших проектов.  Сохраняется папка www (httpdocs) и дамп базы mysql, присутствует ротация, количество сохраняемых копий можно настроить в переменной limit.

#!/usr/local/bin/bash
# параметры вызова -путь к www -имя бд -название архива
#backup.sh /home/sites/site.tld/www  site_db site_backup
backup_path='/home/site.tld/.backup'  # папка для хранение бэкапов
db_host='db.site.tld' # адрес mysql сервера
db_user='site' #   пользователь mysql
db_pass='passsite' # пароль

www_path=$1
db=$2
arch_name=$3

cd $backup_path
dat=`date +%Y%m%d`

# mysql
 /usr/local/bin/mysqldump --quick   -u $db_user -p$db_pass -h $db_host  $db  --add-drop-table | gzip > ${arch_name}_sql${dat}.gz
# сколько копий хранить
limit=7
n=1
for i in `ls -t ${backup_path}/${arch_name}_sql*`
do
 if [ $n -gt $limit ]
 then
 rm -f $i
 fi
 n=$(($n+1))
done

# www-папка
cd $www_path
tar cf - . | gzip -9 > ${backup_path}/${arch_name}_www${dat}.tar.gz

n=1
for i in `ls -t ${backup_path}/${arch_name}_www*`
do
 if [ $n -gt $limit ]
 then
 rm -f $i
 fi
 n=$(($n+1))
done

Запуск

./backup.sh /home/site.tld/www site_db site.tld

Первый параметр - абсолютный путь к папке  www;

второй - имя БД;

третий - имя архива.

На выходе получается архив  папки www (site.tld_www20100831.tar.gz) и  архив с дампом базы (site.tld_sql20100831.gz).

Запускаю скрипт из-под cron  ежедневно в 5-6 утра, время выбираю из соображений  минимума посещаемости сайта.

Ну и для того, чтобы не хранить яйца в одной корзине, ежедневно бэкапы скачиваю себе на компьютер. Для этого использую GoodSync под Windows, под *nix системами для этой цели подойдет rsync.

Комментарии (0) Пинги (0)

Пока нет комментариев.


Оставить комментарий

Введите сумму с картинки *

Trackbacks are disabled.