Joomla організація автоматичного бекапа сайту на віртуальному хостингу агава, html, programming

Спробував знайти в CPanelagava.ru можливість настройки автоматичного бекапа сайту. Хотілося отримати приблизно те ж саме, що без проблем можна налаштувати на хостингу FastVPS (тариф OVZ-3) прямо через WEB-інтерфейс. Потрібно, щоб щоночі створювався дамп бази MySQL і щотижня створювався повний архів сайту. Архіви повинні автоматично викачуватися на віддалений сервер, і потім стиратися з віртуального хостингу.

Однак нічого не вийшло. Довелося написати в техпідтримку.

Здрастуйте, шановна Agava.ru. Давно є користувачем Вашого хостингу (Віртуальний Unix хостинг / Тариф Normal). Працює хостинг дуже стабільно, коли останній раз звертався в техпідтримку - вже забув, за що Вам дякую. Тепер про справу. У розділі допомоги по CPanel згадується можливість створення автоматичного резервного копіювання домашнього каталогу / баз даних з передачею файлів / архівів бекапу по протоколам SCP і FTP. Однак коли спробував налаштувати такий бекап в своїй панелі керування [6] - у мене нічого не вийшло. Все, що вдалося знайти - тільки запуск процесу бекапа вручну (повного бекапа всього домашнього каталогу, або окремо баз даних).

Дуже б хотілося мати можливість простого створення автоматичного бекапа, щоб не морочитися з командним рядком і shell-скриптами. Саме такого, який описується в довідці по CPanel. Потрібно, щоб кожну добу вночі автоматично створювався бекап баз, і щотижня - повний бекап домашнього каталогу. Само собою, з автоматичним переміщенням архівів на віддалений сервер (за протоколом SCP або FTP) - щоб не займати обмежений простір домашнього каталогу.

Питання наступний: чи можна налаштувати щось подібне (автоматичний бекап) через CPanel Agava? Якщо можна, то як (дайте будь ласка посилання на інструкцію), а якщо не можна - що порадите для простої організації такого бекапа?

Відповідь прийшла швидко:

Добрий день. На нашому хостингу немає можливості автоматичного створення резервної копії з подальшою її завантаженням на інший сервер. Ви можете створити повну резервну копію облікового запису, додавши наступну команду в планувальник cron:

В результаті в домашньому каталозі буде створено архів:

Далі Ви можете так само через cron завантажити резервну копію на інший сервер (видаливши копію після успішного завантаження):

rsync -avH --progress --remove-source-files

Для створення резервних копій баз даних можете використовувати наступну команду:

mysqldump --opt -Q -uПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ ІМЯ_БД> ІМЯ_ДАМПА.sql

[Крок 1: створення скрипта для бекапу]

Створимо скрипти agava-backup-daily.sh і agava-backup-weekly.sh, і покладемо в папку myscrfolder (всі назви файлів і папок тут вказані тільки для прикладу). Створіть так само тимчасову папку mybackupdir, де буде створюватися архів дампа MySQL. Будьте уважні з призначенням прав доступу в створювані папки, оскільки там зберігається секретна інформація (паролі доступу до сервера FTP і баз даних MySQL), права на читання, зміна і запуск повинні бути тільки у власника. Ви вже напевно здогадалися, що один скрипт буде використовуватися для щоденного бекапа (він буде бекап дампи баз MySQL), а інший для щотижневого бекапу (він буде робити архів повної копії домашнього каталогу користувача, який і містить всі папки та файли сайту). На жаль, моє сховище бекапів не підтримувала ssh. тому від rsync довелося відмовитися, і передавати файли архіву по протоколу FTP.

Деякі пояснення по щоденному скрипту. Дамп бази даних MySQL робиться за допомогою утиліти mysqldump. Для підключення до MySQL потрібні спеціальний логін DBLOGIN і пароль DBPASSW, вони можуть не співпадати з логіном і паролем локального користувача shell. Зверніть також увагу на опцію --default-character-set, в ній задається кодування символів, в якій буде створено дамп бази. Кодування повинна використовуватися така ж, яка використовується на Вашому сайті. Для автоматичного іменування архівів за датою використовується обчислюється змінна prefixdate. Шлях в потрібний каталог / папку зовнішнього сервера ftp вказується через remoteftpfolder.

Щотижневий скрипт відрізняється від щоденного тільки додатковим запуском команди curl, яка запускає скрипт бекапа CPanel. Перевірити роботу скриптів можна командами:

Щотижневий скрипт буде виконуватися набагато довше, оскільки він буде робити архів всього домашнього каталогу сайту. Час виконання залежить від зайнятого дискового простору файлами домашнього каталогу. Враховуйте цей факт при плануванні часу виконання завдання (див. Крок 2).

Після завершення архівування файли архівів будуть вивантажені на віддалений ftp-сервер. Ось приклад завершення тестового запуску щотижневого скрипта, коли йде вивантаження архівів на віддалений сервер FTP:

[Крок 2: додавання завдань в планувальник cron]

Відкрийте браузер, введіть посилання CPanel, введіть логін і пароль. Знайдіть панель Додатково -> Планувальник завдань.

Зайдіть в планувальник, натисніть кнопку Стандартний. Налаштуйте два завдання приблизно так, як показано на скріншоті.

Joomla організація автоматичного бекапа сайту на віртуальному хостингу агава, html, programming

Joomla організація автоматичного бекапа сайту на віртуальному хостингу агава, html, programming

$ Crontab -l
MAILTO = "[email protected]";
15 0 * * * myscrfolder / agava-backup-daily.sh
30 0 * * 6 myscrfolder / agava-backup-weekly.sh

У цьому прикладі ми призначили два завдання, одне буде виконуватися в 00:15 хвилин кожен день (agava-backup-daily.sh), а друге в 00:30 кожен 6-й день тижня (в суботу).

Після цього залишиться тільки стежити за вільним місцем на сервері FTP (куди заливаються бекапи), і періодично видаляти старі архіви.

[Часті питання, FAQ]