Резервное копирование

by Larin

Все знают о том, как важно резевное копирование данных. Важно не забывать копировать данные со своего сайта, т.к. и у крупных хостеров случаются аварии. А бэкап хостера не всегда спасает, поэтому каждый владелец сайта должен взять за правило: регулярно (в зависимости от частоты одновления сайта) создавать резервную копию всех данных своего сайта.

Занятие это не сложное, но нудное. Однако, его можно легко автоматизировать. Что нам понадобиться:

  • Наличие на сервере планировщика Cron
  • Небольшие знания команд Linux
  • Желательно (но не обязательно) знание PHP
  • и минут 15 времени =)

#!/bin/sh
time=$(date +%d_%m_%Y)
mkdir /home/larin/tmp_$time/
cd /home/larin/tmp_$time/
mysqldump –user=larin –password=****** database_name > backup_sql_$time.sql
tar -zcvf www_$time.tgz /var/www/your-site.ru > /dev/null
cd ..
tar -zcvf backup.tgz tmp_$time > /dev/null
rm -rf tmp_$time/

Таким не сложным скриптом мы создали архив содержащий musql-дамп БД и все файлы сайта.

Но файлы по прежнему на сервере… как нам их получить? Ответ очевиден: отправим себе на почту (многие используют почту от Google для хранения бэкапов).

В наш bash-скриптик добавим еще пару строк:

php sendbackup.php
rm backup.tgz

Затем берем любую библиотеку для отправки почты на PHP, например, Email with Attachment и на основе этой библиотеки делаем отправку файла на мыло:

Содержание файла sendbackup.php:

<?php
include(“sendmail.class.php”);
$mail = new sendmail();
$mail->SetCharSet(‘UTF-8′);
$mail->from(‘mailbot’, ‘mailbot@ваш_домен’);
$mail->to(‘адрес@вашего.ящика’);
$mail->subject(‘Резервная копия сайта от ‘ . date(‘d-m-Y’));
$mail->text(‘=)’);
$mail->attachment(‘backup.tgz’);
$mail->send();
?>

Вот и все, теперь ставим наш bash-скрипт на выполнение в Cron, например, 1 раз в неделю ([00 23 * * 7] – в 23:00 воскресенье) и спим спокойно, не боясь потерять данные.