Pull to refresh

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

Reading time3 min
Views26K
Всем привет.
Хочу описать процесс полностью автоматического создания резервных копий сайтов на 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 о выполнении бекапа.



Теперь необходимо написать небольшой 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 под запуск скрипта
Tags:
Hubs:
Total votes 4: ↑3 and ↓1+2
Comments13

Articles