Резервное копирование сайта и базы данных MySQL в DropBox
Раздел(ы): Резервное копирование
Просмотры: 4573
Комментарии: 0
Стоимость информации на жестком диске через год работы превышает стоимость компьютера. Это в полной мере относится и к сайтам. Все прекрасно понимают важность backup. И лишь бурной развитие облачных технологий позволило максимально упростить процесс создания и хранения резервных копий.
Процесс создания резервной копии стандартная и легко решаемая задача. Будь-то бэкап базы данный MySQL или сайта целиком. Все современные хостеры предоставляют такую услугу. Более того процесс создания резервной копии можно автоматизировать и производить по расписанию. Но пока еще никто из поставщиков услуг хостинга не реализовал синхронизацию сохраненных данных с популярными облачными системами хранения, такими как DropBox, GoogleDrive и Яндекс.Диск
Этой статьей я решил заполнить пробел. Тем более, что сам нуждался в таком решении. Прочитав однажды интересную статью популярного блогера Михаила Шакина Моя схема бэкапов я пришел к выводу, что на дворе XXI век, а в России все вручную. Нет, конечно, Михаил все правильно делает. И скорее всего так и надо. Но у меня нет столько времени, чтобы делать резерные копии, и потом их скачивать себе на компьютер, чтобы записать на компакт-диск.
Я тоже решил разнести копии своих сайтов в пространстве. Как говорится не кладите все яйца в одну корзину. Но сделать это решил с помощью облачных сервисов хранения данных. Как известно, при установке на компьютер приложения для доступа к облачному хранилищу, к примеру DropBox Вам на компьютер будет скачана копия того, что у Вас хранится в облаке. А если Вы пользуетесь двумя компьютерами, дома и на работе, то в сумме Вы получите 3 (три) независимые копиии своих данных. При желании эти данные Вы всегда сможете сохранить на внешний носитель или компакт-диск.
Почему мой выбор пал на 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
Необходимые условия для создания резервной копии
- Хостинг с поддержкой PHP, и cURL
- Аккаунт DropBox
ВНИМАНИЕ!!! В октябре 2012 скрипт DropboxUploader перестал работать — не работает авторизация на сайте DropBox. Автор закрыл проект, сообщив, что теперь необходимо использовать официальный API DropBox.
Благодарности
При написании статьи были использованы следующие источники: