Донецкий техникум промышленной автоматики

Простий спосіб автоматичного створення бекапу joomla сайтів за допомогою Akeeba backup + Crontab

Всім привіт.
Хочу описати процес повністю автоматичного створення резервних копій сайтів на CMS Joomla за допомогою компонента Akeeba backup, причому його безкоштовної версії.
Знаю, що Джумла на Хабре не особливо шанують, але думаю все ж знайдуться хабровчане, які створюють сайти з її допомогою.

Як приклад буду використовувати Joomla 2.5.16
Насамперед нам потрібно встановити компонент Akeeba Backup. Завантажити його можна звідси: www.akeebabackup.com/downloads/akeeba-backup.html
Що з себе являє резервна копія, зроблена за допомогою Akeeba backup

На виході ми отримаємо файл з розширенням jpa, який включає в себе всі файли нашого сайту, а також дамп бази даних. Даний бекап дуже легко хильнути на будь-який сервер, слідуючи покроковим інструкціям. Як це зробити, напишу нижче.


Мій сайт знаходиться на хостингу timeweb, але я думаю, що більшість хостингів має в своїй панелі керування спосіб створювати завдання за допомогою планувальника crontab. Якщо ваш сайт знаходиться на власному сервері, тут ще простіше.
Насамперед нам необхідно активувати можливість робити бекап не тільки з панелі Joomla. Для цього переходимо в Компоненти -> Akeeba backup -> Component Parameters. Потрібно встановити перемикач на ДА у властивості Enable front-end and remote backup. Вказати секретне слово, яке буде використовуватися для генерації посилання, опціонально можна включити повідомлення по e-mail про виконання бекапа.
Мій сайт знаходиться на хостингу timeweb, але я думаю, що більшість хостингів має в своїй панелі керування спосіб створювати завдання за допомогою планувальника crontab
Тепер необхідно написати невелике shell скрипт, який буде запускатися планувальником Crontab.
Виглядає він так:
#! / Bin / bash wget --max-redirect = 10000 "http: // <Адреса сайту> /index.php?option=com_akeeba&view=backup&key= <Секретна слово, яке ми вказували в настройках>" find $ {<Повний адреса до каталогу з бекапу>} -type f -mtime + <Вік файлу в днях> -delete # Наприклад find $ {/ site / BACKUP} -type f -mtime +30 -delete - видалить всі файли старше 30 днів
Даний скрипт здійснює бекап нашого сайту.
Після чого необхідно вказати планувальником Crontab періодичність бекапу. Для хостингу timeweb це робиться так: Панель Crontab. Далі вибрати Додати нове завдання
Пишемо назву нашого завдання, тип файлу: SH сценарій, вказуємо шлях до файлу на нашому сервері (природно файл зі скриптом повинен бути завчасно залитий на сервер), ну і вибираємо потрібну нам періодичність бекапу.

Якщо у вас є повний доступ до сервера, на якому розташовується сайт, то потрібно занести рядок в конфиг crontab , За замовчуванням розташований в / etc / с ім'ям crontab
Все, тепер наші бекапи будуть робитися в автоматичному режимі за розкладом і складатися в каталог, прописаний в налаштуваннях компонента Akeeba Backup. За замовчуванням: administrator / components / com_akeeba / backup /
Надалі планую розширити bash скрипт, щоб він видаляв застарілі бекапи і також переносив ці файли на дропбокс. Якщо є якісь думки, як це зробити, прошу поділитися в коментарях.
Як відновлювати сайт з резервної копії Для того, щоб відновити сайт або перенести його на інший сервер, необхідно завантажити набір файлів під назвою Akeeba Kickstart: www.akeebabackup.com/downloads/akeeba-kickstart.html
Цей набір включає в себе наступні файли:

  • jquery.min.js -Бібліотека Jquery
  • json2.min.js -Бібліотека Json
  • kickstart.php -PHP скрипт, що виконує відновлення
  • ru-RU.kickstart.ini -Мова локалізації

Необхідно помістити ці файли на сервер і туди ж скинути файл з бекапу, який має розширення jpa.
Далі просто пройти за адресою: http: ///kickstart.php і слідувати інструкціям.
Якщо ви відновлюєте сайт на тому ж сервері, де він і був, то частина налаштувань підтягнеться автоматично, інакше потрібно буде вказати нові настройки для коректного формування конфіга: шлях до БД, ім'я БД, ім'я користувача БД і тд.
Після виконання всіх інструкцій, система відновить сайт. І ніяких танців з бубном з перезаливка руками всіх файлів (особливо огидно це робити по FTP), а також ручної правкою конфігураційного файлу configuration.php в корені сайту.

UPD 17.12.2013: Розширив скрипт, тепер він видаляє застарілі бекапи.
UPD 16.05.2014: Хотів задурити з відправкою бекапу на дропбокс, але виходить боляче ретельно, набагато простіше використовувати хмарне сховище з підтримкою WebDAV, я використовував Яндекс диск. Ось так виглядає скрипт:
#! / Bin / bash # переходимо в каталог, в який складаються бекапи, зроблені Akeeba Backup cd site / backup for i in * .jpa; do # username: password - ім'я користувача та пароль до аккаунту Яндекса # зазначені в шляху каталоги / backups / sites / повинні бути попередньо створені в Яндекс диску curl -T $ {i} --user username: password https://webdav.yandex .ru / backups / sites / # при бажанні можна видаляти ці бекапи з веб сервера для економії місця командою rm rm $ {i} done
Ну і створюємо за аналогією завдання в cron під запуск скрипта

Php?