Как настроить синхронизацию с сервисом TuchaBackup через rsync

2018-02-15T17:18:54+00:00Февраль 13th, 2018|Блог|

Пользователи задают вопросы в службу поддержки, а мы отвечаем подробными статьями, чтобы пользу получили все. Сегодня важная тема, которую мы ещё не освещали — настройка синхронизации с сервисом TuchaBackup через rsync/SSH.

Основная функция rsync — синхронизация данных.

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

Мы продемонстрируем, как реализовать синхронизацию данных сайтов с облаком Tucha с помощью rsync и скрипта для создания резервных копий баз данных.

Задача. Необходимо настроить автоматическое создание копий баз данных и последующую загрузку этих копий совместно с данными сайта в облачное хранилище.

Решение. Для регулярного создания дампов баз данных можно использовать следующий скрипт:


#!/bin/sh
 
TIMESTAMP="$(date '+%Y%m%d%H%M%S')"
DIR="/var/backup/mysql"
DATABASES=$(find /var/lib/mysql -type d)
 
# Или просто перечислите имена баз данных через пробел
for DATABASE in ${DATABASES}; do
if [ ! -d "${DIR}/${DATABASE}" ]; then
mkdir "${DIR}/${DATABASE}"
fi
mysqldump \
--single-transaction=TRUE \
--lock-tables=FALSE \
--quick "${DATABASE}" \
> "${DIR}/${DATABASE}/${TIMESTAMP}.sql"
bzip2 -9 "${DIR}/${DATABASE}/${TIMESTAMP}.sql"
done
find "${DIR}" -name '*.sql.bz2' -mtime 20 -delete

При выполнении этого сценария система создаст бекапы для каждой базы и удалит резервные копии старше 20 дней.

Для его работы требуется следующее установленное ПО:

Сервер баз данных mysql и его утилита mysqldump. Без них работа этого сценария не имеет смысла.

Архиватор bzip2. Без него, не будут выполняться сжатие бэкапов баз, следовательно не будут создаваться файлы с расширением .bz2, а именно старые экземпляры сжатых файлов и удаляются при превышении 20 дневного лимита.

Для запуска этого сценария на регулярной основе потребуется добавить инструкцию, определяющую время периодичность запуска, в конфигурацию cron.

Для организации непосредственно копирования созданных файлов в хранилище TuchaBackup используется следующий сценарий:


#!/bin/sh
 
PATH=/bin:/usr/bin
HOSTNAME=$(hostname)
USERNAME="aXXXXXXXX" # имя пользователя сервиса TuchaBackup
INCLUDES="/etc/rsync-backup.includes"
EXCLUDES="/etc/rsync-backup.excludes"
BSERVERADDR="bh3.tuchastore.tucha13.net"
BSERVERPORT="22"
DATE=$(date +%Y.%m.%d-%H:%M:%S)
 
[ -e ${EXCLUDES} ] || touch ${EXCLUDES}
 
rsync \
--rsh="ssh -p ${BSERVERPORT} -i ${HOME}/.ssh/id_rsa.backup" \
--verbose \
--archive \
--relative \
--perms \
--force \
--ignore-errors \
--delete \
--backup \
--backup-dir="~/${HOSTNAME}-${DATE}" \
--exclude-from="${EXCLUDES}" \
$(cat "${INCLUDES}" | sed -r -n "s/^[[:space:]]*([^#]+)([[:space:]]*#.*)?$/\1/gp") \
"${USERNAME}@${BSERVERADDR}:~/${HOSTNAME}"

В файле /etc/rsync-backup.includes перечислите имена каталогов и файлов, которые должны быть включены в архив. Например, так:


/etc
/var

В файле /etc/rsync-backup.excludes перечислите имена тех файлов и каталогов, которые должны быть исключены. Например, так:


/var/log
/var/run

Для работы этого сценария есть ряд требований:

Собственно, сам rsync.

Клиент openssh. Без него система не сможет подключиться к удалённому серверу.

Наличие учетной записи на удаленном хранилище с соответствующими правами.

Наличие RSA-ключа для этой записи. Он служит для возможности авторизации без пароля. Ключ генерируется в системе, с которой осуществляется копирования данных, а его его публичная часть должна быть размещена в файле ~/.ssh/authorized_keys со стороны хранилища.

Как и для автоматизации процесса создания копий баз данных, для автоматизации процесса их копирования на сервер потребуется добавить этот сценарий в конфигурацию сервиса cron.

Предварительно советуем выполнить сценарий вручную, чтобы убедится, что копирование осуществляется успешно.

Как видите, всё просто и понятно.

А если у вас остались вопросы, обращайтесь к нам в любое время. Мы всегда на связи. И рады вам 24х7.

Метки: , , , , , ,