Автоматическое резервное копирование блога на WORDPRESS средствами плагина
WordPress Database Backup, ftp клиента lftp и роутера Asus WL-500gP.
Как все мы прекрасно знаем, постоянное резервирование значимых данных просто необходимо, и чем важнее данные, тем важнее backup этих данных.
В этой процедуре есть один существенный недостаток, мешающий регулярному бэкапу - это лень. Избавится от этого нам поможет автоматизация
процесса резервного копирования. В этой статье я расскажу как создать резервную копию файлов и базы данных блога на движке WordPress.
В статье подразумевается, что доступ к файлам блога имеется только по ftp, но с возможностью подключения через TLS/SSL.
Итак, приступим к поставленной задаче.
Автоматическое резервное копирование бызы данных блога на WordPress. Плагин WordPress Database Backup.
Скачка и установка плагина стандартна и подробно останавливаться на ней я не буду. Перейдем непосредственно к настройке плагина.
В панели «инструменты» админки блога выбираем «резервное копирование», попадаем в меню настройки WordPress Database Backup.
Здесь можно отметить дополнительные таблицы которые вы хотите включить в основную резервную копию, а в поле снизу
«Расписание резервного копирования» выбрать время копирования и почтовый ящик, куда эти копии будут отсылаться.
Для этих целей лучше специально создать ящик на gmail.com.
Автоматическое резервное копирование файлов блога WordPress с помощью фтп клиента lftp и роутера Asus WL-500gP.
Для реализации задуманного понадобится альтернативная прошивка для нашего роутера с возможностью доступа
к консоли и установки пакетов программного обеспечения. За прошивкой можно обратиться на форум http://wl500g.info.
На этом ресурсе есть несколько мануалов по прошивке устройства и установки дополнительного ПО.
Чтобы продолжить реализацию нашей затеи у вас должны быть установлены: менеджер пакетов ipkg и cron.
Вообще регулярный бэкап требует ответственного подхода к распределению дискового пространства под это дело.
Как минимум следует выделить отдельный раздел под резервные копии, а лучше отдельный физический диск.
Ни в коем случае не пытайтесь сохранять резервные копии на корневом раздели, потому что, если вдруг
резервирование выйдет из под вашего контроля, вы рискуете полностью заполнить корневой раздел
и «вывести систему из строя».
В своем примере, я воспользуюсь отдельной флешкой, смонтированной под резервные копии.
Подключаемся к консоли роутера и командуем:
После отработки команды индикатор питания роутера погаснет и вилку сетевого шнура можно извлечь из розетки.
(ничего не мешает вам просто выдернуть вилку, но я стараюсь использовать «щадящий» режим для файловой системы)
Устанавливаем в свободный USB разъем Flash накопитель, либо, если вы используете многофункциональный картридер
- flash карту в свободный разъем считывателя карт. Включаем роутер и подключаемся к консоли.
Смотрим файл устройства нашей флешки и каталог куда она была смонтирована.
Путь к файлу устройства у вас должен быть примерно следующий:
Code:
/dev/discs/disc0/part3
А точка монтирования примерно такая:
Следующие команды отмонтируют устройство и создадут на нем новую файловую систему ext3:
Code:
# umount /tmp/mnt/disc0_3
# mke2fs -j /dev/discs/disc0/part3
Следующим шагом я создам каталог для точки монтирования флешки и пропишу в файл
fstab параметры автоматического монтирования устройства при загрузке роутера.
Code:
# mkdir /opt/backup
# nano /etc/fstab
В файл fstab добавляем следующую строку:
Code:
/dev/discs/disc0/part3 /opt/backup ext3 rw,noatime 1 1
Сохраняем результат(Жмем ctrl+o, Enter, ctrl+x). Так как файл fstab находится в основной
флеш-памяти устройства, выполняем команды, чтобы закрепить результат.
Code:
# flashfs save && flashfs commit && flashfs enable && reboot
После перезагрузки и подключения к консоли следует проверить работоспособность
наших предыдущих действий, выполнив команду:
Если точка монтирования нашей флешки /opt/backup, значит все хорошо
и мы переходим к следующему пункту настройки.
Установка lftp и настройка резервного копирования блога.
До установки lftp (если вы хотите соединяться с фтп сервером по протоколу SSL)
вы должны убедиться, что у вас установлен пакет OpenSSL.
Code:
# ipkg list_insalled
Если установлен, все хорошо, если нет устанавливаем.
Code:
# ipkg update
# ipkg install openssl
Теперь, непосредственно сам клиент фтп:
Code:
# ipkg install lftp
Для удобства создадим файл инструкций для клиента:
Code:
# touch /opt/backup/ftp_connect
# nano /opt/backup/ftp_connect
Code:
set ftp:ssl-allow yes # принудительное использование SSL(очень желательно использовать
set ftp:ssl-auth TLS # если есть поддержка на сервере)
set ftp:ssl-force true #
open login.server.ru # подключение к серверу
user login password #
mirror domains . # директория которую копируем(domains) и куда копируем(.)
exit
В файле пароли к фтп лежат в открытом доступе, что уже не хорошо, поэтому выставляем на него права 400.
Code:
# chmod 400 /opt/backup/ftp_connect
А теперь, собственно сам скрипт:
Code:
#!/bin/sh
backupdir=/opt/backup
dir=`date +%Y-%m-%d` \
echo "[--------------------------------[`date +%Y-%m-%d`]--------------------------------]" >> /opt/backup/backup.log
echo "[----------][`date +%Y-%m-%d`] Run the backup script..." >> /opt/backup/backup.log
mkdir $backupdir/$dir 2> /dev/null
echo "[----------] Go to a directory with the backup..." >> /opt/backup/backup.log
cd $backupdir/$dir 2> /dev/null
if [[ $? -gt 0 ]];then echo "[----------] Aborted. Not possible Go to a directory ." >> /opt/backup/backup.log
exit 1
fi
echo "[----------] Successfully passed the directory with the backup..." >> /opt/backup/backup.log
echo "[----------] Downloading files..." >> /opt/backup/backup.log
lftp -f $backupdir/ftp_connect > /dev/null 2>&1
if [[ $? -gt 0 ]];then echo "[----------] Aborted. Not possible Downloading files ." >> /opt/backup/backup.log
exit 1
fi
echo "[----------] Successfully Downloading files..." >> /opt/backup/backup.log
echo "[----------] Archiving the downloaded files..." >> /opt/backup/backup.log
tar -zcf $backupdir/`date +%u`.tar.gz $backupdir/$dir 2> /dev/null
if [[ $? -gt 0 ]];then
echo "[----------] Aborted. Not possible to create an archive ." >> /opt/backup/backup.log
exit 1
fi
echo "[----------] Successfully Archiving the downloaded files..." >> /opt/backup/backup.log
echo "[----------] Delete the temporary folder..." >> /opt/backup/backup.log
cd $backupdir
rm -rf $backupdir/$dir 2> /dev/null
if [[ $? -gt 0 ]];then
echo "[----------] Aborted. Not possible Delete the temporary folder ." >> /opt/backup/backup.log
exit 1
fi
echo "[+++++++++-][`date +%Y-%m-%d`] Free HDD space: `df -h $backupdir | tail -n1 | awk '{print $4}'`" >> /opt/backup/backup.log
echo "[++++++++++][`date +%Y-%m-%d`] All operations completed successfully!" >> /opt/backup/backup.log
exit 0
Сохраняем скрипт и делаем его исполняемым:
Code:
# chmod +x /opt/backup/script.sh
Теперь скрипт нужно закинуть в задания cron, в зависимости от частоты обновления блога. Например так:
Code:
# cp /opt/backup/script.sh /opt/etc/cron.daily/script.sh
Если вы настраивали роутер по мануалам из вышеприведенного форума, где предлагается для удобства
создать папки для скриптов запускаемых cron и настроить сам cron для обработки этих папок, то делаете
так как я написал выше. Если вы этого не сделали, то просто добавьте задание в crontab файл.
По поводу crontab – убедитесь, сто в строке, где прописаны пути для PATH, указан путь /opt/bin.
Если исполнение скрипта назначить на каждый день, то ротация архивов с резервной копией
будет осуществляется за счет того, что ежедневно будут создаваться архивы с номером
текущего дня недели, а каждую следующую неделю архивы будут перезаписываться.
На этом, все! Все предложения по улучшению поставленной задачи приветствуются. Удачи.
http://bruteforcer.ru/index.php/2010...asus-wl-500gp/