Резервное копирование базы данных и сайта по SSH в Linux

0 Comments
backup-wordpress

В этой статье я расскажу, как настроить резервное копирование с помощью ssh и cron в Linux дистрибутивов.

Как нетрудно догадаться, нам понадобятся две машины. На одной хранятся важные данные и поднят sshd (сервер), на второй имеется crond и место под хранение резервных копий (клиент).

Доступ к серверу без пароля

Поскольку делать backup мы будем по крону, придется настроить доступ к серверу по identity file. Заходим на сервер, и проверяем, что /etc/ssh/sshd_config содержит строчку:

PubkeyAuthentication yes

По умолчанию она там закомментирована. Затем переходим в домашний каталог пользователя, от чьего имени будем делать резервные копии и проверяем, что права доступа к каталогу .ssh установлены в 700.

На стороне клиента выполняем следующую последовательность команд от имени пользователя, который будет производить резервное копирование по крону:

ssh-keygen

Этой командой генерируем ключи rsa для подключения к серверу без ввода пароля.

cat ~/.ssh/id_rsa.pub | ssh user@server "cat >> .ssh/authorized_keys"

Здесь мы скопировали наш public-key на сервер. Делаем проверку:

ssh user@server

Если нам удалось зайти без пароля, значит все сделано правильно. В противном случае внимательно перечитываем эту часть и ищем ошибку.

Скрипт резервного копирования

На машине, названной клиентом, создаем каталог, где будет хранится скрипт, запускаемый по крону, и каталог для резервных копий. Для определенности, у меня это будут ~/cron-backup и ~/cron-backup/backups/ соответственно. Важно убедится, что последний каталог находится в разделе, где достаточно место для хранения резервных копий.

Вот так может выглядеть скрипт резервного копирования:

!/bin/sh
# daily-backup.sh script
# переходим в каталог, где находится скрипт
cd /home/client-user/cron-backup
# делаем резервную копию каталога на сервере
ssh user@server \
"tar cvzf - path/to/data/abc" > \
./backups/data-abc-date "+%Y-%m-%d".tgz
# делаем резервную копию базы данных MySQL на сервере
ssh user@server \
"mysqldump --defaults-extra-file=.dbname_backup db_name | gzip" > \
./backups/db-name-date "+%Y-%m-%d".sql.gz
удаляем резервные копии старше одной недели
find ./backups -mtime +7 -print -delete

Примечание: Помните, что для получения горячей копии базы данных в непротиворечивом состоянии необходимо использовать утилиту mysqldump с флагом --lock-tables (возможно, --lock-all-tables — см. man) в случае с MyISAM или --single-transaction в случае с InnoDB. При резервном копировании файлов может быть целесообразно создать снапшот файловой системы.

Файл .dbname_backup на сервере должен хранить настройки подключения к базе данных db_name и иметь права доступа 600.

[mysqldump]
host = db_host
port = 3306 # или другой
user = db_user
password = db_password

Меняем права доступа к нашему скрипту и проверяем его работоспособность:

 chmod u+x daily-backup.sh
./daily-backup.sh
ls -la backups

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Русифицируем Ubuntu Server 16.04/18.04/20.04 LTS
linux-logo

Сегодня в статье настроим и русифицируем Ubuntu Server 16.04/18.04/20.04. Чтобы поддерживался русский язык, и перевод системы стал русским

Вносим CAA запись в DNS (bind9)
dns_bind9

Начиная с сентября 2017 года удостоверяющим центрам предписано обязательно проверять CAA-записи в DNS перед генерацией сертификата

Обновления Ubuntu Server 16.04 до 18.04
linux-logo

В этой статье рассмотрим пример обновления Ubuntu Server 16.04 до Ubuntu Server 18.04 Все наши действия нам придется выполнять из Читать

Защита OpenVPN с помощью Fail2Ban
fail2ban-logo

В связи с последними блокировками IP-адресов Роскомнадзором, встала необходимость завести свой собственный VPN сервер. Если VPN у вас ещё не Читать

0 0 голоса
Рейтинг статьи

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 комментариев
Inline Feedbacks
Просмотреть все комментарии

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: