Резервная копия сайта в Яндекс.Диск
Раздел(ы): Резервное копирование
Просмотры: 10473
Комментарии: 8
Я привык все автоматизировать, в том числе и создание резервных копий. Облачные системы хранения DropBox и Яндекс.Диск существенно упрощают этот процесс.
Резервное копирование (англ. backup) — процесс создания копии данных на носителе (жёстком диске, дискете и т. д.), предназначенном для восстановления данных в оригинальном или новом месте их расположения в случае их повреждения или разрушения.
Из википедии.
Я уже писал о том как сделать резервную копию сайта и базы данных MySQL в DropBox — Резервное копирование сайта и базы данных MySQL в DropBox. Настала пора задействовать возможности Яндекс.Диск.
Программное обеспечение для резервного копирования на Яндекс.Диск
Для того, чтобы осуществить резевное копирование данных на облачный сервис Яндекс.Диск необходим cURL.
cURL — свободная (распространяемая по лицензии MIT), кроссплатформенная служебная программа командной строки для копирования файлов по различным протоколам с синтаксисом URL.
Из Википедии
Процедура копирования состоит из одной строки
curl --user yandex_login:yandex_password -T file_name_to_upload https://webdav.yandex.ru
Которая не нуждается в пояснениях. Все что Вам нужно это иметь аккаунт Яндекс.Диск.
Копирование в Яндекс.Диск на PHP
Я преобразовал свой скрипт резервного копирования на PHP. И сейчас он выглядит так:
<? // Резервное копирование MySQL и файлов хостинга // Версия 2.1 Яндекс $dbhost = "localhost"; //Адрес MySQL сервера $dbuser = "base_user"; //Имя пользователя базы данных $dbpass = "user_password"; //Пароль пользователя базы данных $dbname = "base_name"; //Имя базы данных $sitedir = "/home/username/public_html"; //Абсолютный путь к сайту от корня диска $excludefile = $sitedir.'/backup/*.gz'; //Файлы которые не должны попасть в архив $yadisk_email='XXXXXXX@yandex.ru'; //Имя пользователя Яндекс.Диск $yadisk_pass='ZZZZZZZ'; //Пароль пользователя Яндекс.Диск $yadisc_dir='backup/'; //Директория на Яндекс.Диск куда будем копировать. Она должна существовать! // Все что ниже, лучше не трогать $dbbackup = $dbname .'_'. date("Y-m-d_H-i-s") . '.sql.gz'; $filebackup = 'files_'. date("Y-m-d_H-i-s") .'.tar.gz'; system("mysqldump -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $dbbackup"); //Для больших баз данных закоментировать строчку выше и раскоментировать ниже. //system("mysqldump --quick -h $dbhost -u $dbuser --password='$dbpass' $dbname | gzip > $dbbackup"); system ("curl --user $yadisk_email:$yadisk_pass -T $dbbackup https://webdav.yandex.ru/$yadisc_dir"); unlink($dbbackup); shell_exec("tar cvfz $filebackup $sitedir --exclude=$filebackup --exclude=$excludefile"); system ("curl --user $yadisk_email:$yadisk_pass -T $filebackup https://webdav.yandex.ru/$yadisc_dir"); unlink($filebackup); ?>
Этот скрипт последовательно создает резервные копии базы данных MySQL и файлов виртуального хостинга, сжимает их и отправляет в Яндекс.Диск
Настройка резервного копирования по рассписанию Cron
Добавьте задание CRON с такой командой
/usr/bin/php -q /path-to-backup-folder/backup/backup.php
Подкорректируйте пути PHP и скрипта резервного копирования в соответствии с настройками вашего хостинга.
Если у Вас используется cPanel то это будет выглядеть следующим образом:
Что необходимо для создания резервной копии на сайте
- Хостинг с поддержкой PHP, и cURL
- Аккаунт Яндекс.Диск
P.S. Яндекс.Диск объявил акцию
Пригласите друзей на борт Яндекс.Диска и получите до 10 ГБ бесплатно
За каждого приглашенного на Яндекс.Диск друга вы получите 0,5 ГБ свободного места.
А ваш друг — 1 ГБ (Гигабайты будут начислены только после того, как ваш друг установит «Яндекс.Диск» на свой компьютер.).
Привет!
Хороший способ для копирования.
А добавить что бы ещё и п высылал письмо высылал, это можно?
Да ещё вопрос, если файл сделать как backup.sh будет работать?
curl —user $yadisk_email:$yadisk_pass — логин и пароль будут видны всем на пользователям хостинга командой ps -axw (если хостинг позволяет). А уж админам точно
Спасибо. Буду знать.
Здравствуйте, скажите, это как я понял скрипт для одной базы? Как модифицировать скрипт чтобы все базы данных и все папки сайтов бекапились?
как настроить чтоб удалялись старые копиии?
Я не придумал решения. Удаляю вручную.
Приветствую, очень полезным делом поделились! Вы еще не нашли решения, как старые копии удалять или заменять?
Я решения не нашел. Сейчас пользуюсь консольным клиентом для синхронизации резервных копий на Яндекс.Диск. https://moonback.ru/page/vestacp-backup-to-yandex-disk