Як налаштувати синхронізацію з сервісом 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.