Резервное копирование сайта и базы данных MySQL в DropBox

 30 июля 2012      
 Резервное копирование      
 Комментариев еще нет      
 3208

Стоимость информации на жестком диске через год работы превышает стоимость компьютера. Это в полной мере относится и к сайтам. Все прекрасно понимают важность backup. И лишь бурной развитие облачных технологий позволило максимально упростить процесс создания и хранения резервных копий.

Процесс создания резервной копии стандартная и легко решаемая задача. Будь-то бэкап базы данный MySQL или сайта целиком. Все современные хостеры предоставляют такую услугу. Более того процесс создания резервной копии можно автоматизировать и производить по расписанию. Но пока еще никто из поставщиков услуг хостинга не реализовал синхронизацию сохраненных данных с популярными облачными системами хранения, такими как DropBox, GoogleDrive и Яндекс.Диск
Этой статьей я решил заполнить пробел. Тем более, что сам нуждался в таком решении. Прочитав однажды интересную статью популярного блогера Михаила Шакина Моя схема бэкапов я пришел к выводу, что на дворе XXI век, а в России все вручную. Нет, конечно, Михаил все правильно делает. И скорее всего так и надо. Но у меня нет столько времени, чтобы делать резерные копии, и потом их скачивать себе на компьютер, чтобы записать на компакт-диск.
Я тоже решил разнести копии своих сайтов в пространстве. Как говорится не кладите все яйца в одну корзину. Но сделать это решил с помощью облачных сервисов хранения данных. Как известно, при установке на компьютер приложения для доступа к облачному хранилищу, к примеру DropBox Вам на компьютер будет скачана копия того, что у Вас хранится в облаке. А если Вы пользуетесь двумя компьютерами, дома и на работе, то в сумме Вы получите 3 (три) независимые копиии своих данных. При желании эти данные Вы всегда сможете сохранить на внешний носитель или компакт-диск.

Читайте также:  Резервное копирование Linux сервера.

Почему мой выбор пал на DropBox?

Все очень просто. Я не программист и поэтому искал готовое решения для доступа к этой системе хранения данных. Очень скоро я наткнулся на PHP скрипт DropboxUploader Который без особого труда позволял прямо со страниц своего сайта отправлять файлы в DropBox. Единственное условие — на вашем хостинге должен быть cURL. cURL — свободная (распространяемая по лицензии MIT), кроссплатформенная служебная программа командной строки для копирования файлов по различным протоколам с синтаксисом URL.
[color=red]ВНИМАНИЕ!!! В октябре 2012 скрипт DropboxUploader перестал работать — не работает авторизация на сайте DropBox. Автор закрыл проект, сообщив, что теперь необходимо использовать официальный API DropBox.[/color]

Резервная копия базы данных MySQL на PHP

Я не стал изобретать велосипед и воспользовался популярной утилитой mysqldump, которая позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии. Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.

Резервная копия сайта на PHP

Для создания резервной копии всех файлов моего сайта я решил использовать архиватор TAR со сжатие gzip.

PHP скрипт резервного копирования базы данных MySQL и файлов в DropBox

В результате двухдневных поисков в интернете был собран из различных источников нижеследующий скрипт на PHP

<?
// Создание полной копии сайты и базы данных mysql
// Параметры, которые нужно отредактировать
$dbhost = "localhost"; // Адрес сервера MySQL, обычно localhost
$dbuser = "user";   // имя пользователя базы данных
$dbpass = 'password'; // пароль пользователя базы данных
$dbname = "database_name";  // название базы данных
$dropbox_email='your dropbox username';  // имя пользователя Dropbox обычно e-mail
$dropbox_pass='your dropbox password';   // пароль пользователя Dropbox
$dropbox_dir=''; // папочка DropBox в которой будете хранить бэкапы 
$full_site_path='' // абсолютный адрес вашего сайта на диске
$exclude_file_path='' // папки и файлы которые нужно исключить 

// все что ниже лучше не трогать

$dbbackup = $dbname .'_'. date("Y-m-d_H-i-s") . '.sql.gz';
$filebackup = 'file_backup_'. date("Y-m-d_H-i-s") .'.tar.gz';
$backupdir = dirname(__FILE__);
system("mysqldump -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $dbbackup");
include('DropboxUploader.php');
$uploader = new DropboxUploader($dropbox_email, $dropbox_pass);
$uploader->upload($backupdir.'/'.$dbbackup, $dropbox_dir);
unlink($dbbackup);
shell_exec("tar cvfz $filebackup $full_site_path --exclude=$filebackup --exclude=$exclude_file_path"); 
$uploader->upload($filebackup, $dropbox_dir);
unlink($filebackup);
?>

В результате работы этого скрипта Вы получите два архива. Один будет содержать дамп базы данных MySQL, а второй копию всех файлов вашего сайта. Оба этих файла будут загружены в ваше хранилище DropBox

Читайте также:  Перенос резервных копий на Гугл.Диск

Как использовать Cron для создания резервных копий по расписанию

Положите ваш скрипт себе на сервер и добавьте задание CRON с такой командой

/usr/bin/php -q /path-to-backup-folder/backup/backup.php

Подкорректируйте пути PHP и скрипта резервного копирования в соответствии с настройками вашего хостинга.
Если у Вас используется cPanel то это будет выглядеть следующим образом:


Полный боекомплект можно скачать по адресу http://yadi.sk/d/P7bpX97P0V2H В архиве находятся три файла: собственно сам скрипт резервного копирования backup.php, необходимая библиотека DropboxUploader.php и файл примера demo.php

Необходимые условия для создания резервной копии

  1. Хостинг с поддержкой PHP, и cURL
  2. Аккаунт DropBox

ВНИМАНИЕ!!! В октябре 2012 скрипт DropboxUploader перестал работать — не работает авторизация на сайте DropBox. Автор закрыл проект, сообщив, что теперь необходимо использовать официальный API DropBox.

Благодарности

При написании статьи были использованы следующие источники:

Поделись страницей с друзьями!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" я даю свое согласие на обработку введенной мной персональной информации в соответствии с Федеральным Законом от 27.07.2006 №152-ФЗ "О персональных данных", на условиях и для целей определенных политикой конфиденциальности.

2017 © Технический блог
SQL - 62 | 0,236 сек. | 10.67 МБ
доступность сайта