Резервное копирование сайта на FTP-сервер | Просто блог

Резервное копирование сайта на FTP-сервер

Практически любой динамический сайт состоит из двух связных компонентов: директории с файлами и базой данных. Хорошей практикой является выполнение регулярного резервного копирования. Автоматизировав этот процесс можно закрыть сразу несколько вопросов, таких как защита от потери данных, уменьшение срока восстановления системы после атаки хакеров или заражения вирусом.

Для наглядности разобъем резервное копирование на нескольких простых и понятных этапов:

  1. Подготовка резервной копии баз данных
  2. Подготовка архива файловой структуры
  3. Передача файлов на FTP
  4. Очистка старых копий
  5. Настройка расписания запуска скрипта

Самая распространенная база данных на хостингах планеты — Mysql. Команда для выполнения резервного копирования — mysqldump. Но просто сделать резервную копию недостаточно. Гораздо профессиональнее разложить резервные копии по папкам с датами. Это позволит в будущем легко найти нужный временной период и получить файлы для восстановления.

Все команды, написанные ниже, выполняются на хостинге с операционной системой linux Ubuntu. Однако они применимы и в ряде других, аналогичных ОС.

#!/bin/bash
# Текущая дата в формате YYYY-MM-DD
CURDATE=`date +%F`
# Абсолютный путь к папке, в которой мы будем хранить резервные копии
BACKUPSPATH=`/backup-sites`
# Абсолютный путь к папке, в которой лежат наши сайты
SITESPATH=`/sites`
# В папке с резервными копиями создаем директорию с текущей датой
mkdir $BACKUPSPATH/$CURDATE
# Массив с названиями баз данных
arrDBases=( \
«site1_ru» \
«site2_ru» \
)
# Массив с директориями сайтов
arrDirectories=( \
«site_1» \
«site_2» \
)
# Бежим по массиву баз данных и выполняем команду mysqldump
for unitDBase in «${arrDBases[@]}»
do
# Пароль от root сохранен в домашней директории пользователя в файле .my.cnf
mysqldump —routines -u root $unitDBase > $BACKUPSPATH/$CURDATE/$CURDATE.sql.$unitDBase.sql
# Архивируем полученный дамп базы данных
gzip -9 $BACKUPSPATH/$CURDATE/$CURDATE.sql.$unitDBase.sql
done
# Переходим в корневую папку с сайтами
cd $SITESPATH
# Бежим по массиву папок и создаем архив файловой структуры
for unitDir in «${arrDirectories[@]}»
do
# Склеивание всех файлов в один несжатый архив
tar -cf $BACKUPSPATH/$CURDATE/$CURDATE.www.$unitDir.tar $unitDir
# Архивация
gzip -9 $BACKUPSPATH/$CURDATE/$CURDATE.www.$unitDir.tar
done
# Переходим в папку, в которой лежат подготовленные к отправке файлы
cd $BACKUPSPATH/$CURDATE
# Вход на FTP-сервер
# Команды FTP-сервера
ftp -p -i -z nossl ENTER_YOU_REMOTE_SERVER_IP_OR_DOMAIN <<INPUT_END
cd /path/to/ftp/dir
mkdir $CURDATE
cd $CURDATE
mput *.gz
quit
INPUT_END
# Удаляем резервные копии, старше 3-х дней
/usr/bin/find $BACKUPSPATH -name «*» -type d -mtime +3 -exec rm -rf {} \;
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: