Как настроить синхронизацию с сервисом TuchaBackup через rsync
- Главная
- Блог
- Инструкции
- Как настроить синхронизацию с сервисом TuchaBackup через rsync
Пользователи задают вопросы в службу поддержки, а мы отвечаем подробными статьями, чтобы пользу получили все. Сегодня важная тема, которую мы ещё не освещали — настройка синхронизации с сервисом 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.