Полный цикл в digital

Rsnapshot

Rsnapshot утилита для резервного копирования, написанная на языке Perl и использующая Rsync. Она упрощает создание периодических копий файловых систем. Для дедупликации данных Rsnapshot использует жёсткие ссылки. Резервное копирование, необходимая задача системного администрирования, так как всегда есть риск потери данных.

Rsnapshot позволяет делать несколько уровней копий:

  1. alpha
  2. beta
  3. gamma

Утилита производит ротацию резервных копий, удаляя устаревшие. По дефолтным настройкам, используется 6 alpha, 7 beta, 4 gamma копии.

Для фиксации резервной копии, ее нужно поместить на уровень alpha. При первом запуске будет создан каталог alpha.0. При втором запуске alpha.0 будет переименована в alpha.1, а текущая копия будет снова сохранена в alpha.0. Таким образом, в alpha.0 всегда будет находиться самая свежая копия. При последующих созданиях резервных копий они также будет переименовываться и накапливаться, пока их количество не достигнет шести, в этом случае копия alpha.5 будет перемещена на уровень beta, а её место займёт alpha.4.

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

              +---+---+---+---+---+---+---+
alpha-уровень | 0 | 1 | 2 | 3 | 4 | 5 | - |
              +---+---+---+---+---+---+---+
                                    |
                ---------------------
                |
                ∇            -->
              +---+---+---+---+---+---+---+---+
beta-уровень  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | - |
              +---+---+---+---+---+---+---+---+
                                        |
                -------------------------
                |
                ∇      -->
              +---+---+---+---+---+
gamma-уровень | 0 | 1 | 2 | 3 | - |
              +---+---+---+---+---+

Копия уровня beta создаётся из самой старой копии уровня alpha, gamma создаётся из самой старой копии уровня beta.

Если на момент выполнения копии beta уровня alpha.5 ещё не существует, копия beta.0 сделана не будет. При этом ротация остальных копий beta будет проведена. Поэтому не следует запускать следующие уровни чаще предыдущих.

Установка Rsnapshot

Установка довольно проста, нужно выполнить следующую команду от root пользователя:

Debian, Ubuntuapt install rsnapshot
Fedora, CentOSyum install rsnapshot

Настройка Rsnapshot

По умолчанию создается файл /etc/rsnapshot.conf. Его необходимо скопировать в /etc/rsnapshot.conf.default. Чтобы иметь возможность вернуться к настройкам по умолчанию:

cp /etc/rsnapshot.conf /etc/rsnapshot.conf.default

Все настройки создаются в конфиге, открываем для редактирования rsnapshot.conf, я обычно пользуюсь редактором nano:

nano /etc/rsnapshot.conf

Файл конфигурации очень хорошо прокомментирован, что облегчает настройку. Важное примечание, нельзя использовать пробелы только табуляция иначе будет ошибка.

Резервное копирование в пределах одной машины

Все копии будут храниться в этом корневом каталоге:

snapshot_root   /.snapshots/

Утилита позволяет делать несколько уровней резервных копий. Следует обратить внимание, что самый свежий бэкап в списке будет под нулевым номером, остальные бэкапы смещаются вниз на единицу и так по циклу:

retain  alpha   6
retain  beta    7
retain  gamma   4
#retain delta   3

В этом разделе мы задаем пути к данным, с которых нам надо делать резервные копии и куда мы будем их складывать:

backup  /home/          localhost/
  1. backup определяет точку резервного копирования
  2. /home/ путь к данным, которые нам надо сохранять. Обязательно должен заканчиваться на /
  3. localhost/ относительный путь, куда будет производиться копирование в нашем случае это в директории .snapshots

Резервное копирование для удалённого узла

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

backup      root@hmarketing.ru:/etc/     hmarketing.ru/

Это в принципе тоже самое, что и пример выше, но вы должны помнить о некоторых дополнительных параметрах:

  1. SSH-демон должен быть запущен на удаленном хосте hmarketing.ru
  2. Вы должны иметь доступ к учетной записи, заданной на удаленной машине, в этом случае root пользователь на hmarketing.ru
  3. У вас должна быть включена авторизация по ключу для пользователя root на hmarketing.ru, без пароля

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

Существует дополнительные backup_script параметр:

backup_script      /root/backup_sql.sh       localhost/mysql/

В этом примере будет выполняться скрипт /root/backup_sql.sh в каталог Temp, затем результаты синхронизируются в localhost/mysql/ директории snapshot_root.

Сценарий резервного копирования должен выгружать содержимое базы, в текущий рабочий каталог. В скрипте не должна быть задана определенная директория выгрузки. Причина этого заключается в том, что rsnapshot создает Temp директорию, делает в нее выгрузки, запускает скрипт резервного копирования, затем синхронизирует содержимое каталога Temp в относительный путь, указанный в третьей колонке.

Создаем в директории файл:

nano /root/backup_sql.sh

Типовой скрипт резервного копирования будет один, который архивирует содержимое базы данных:

/root/backup_sql.sh#!/bin/bash

# Имя пользователя базами данных
USER='root'
# Пароль пользователя базами данных
PASS='sbn!Om5G6AGX4WO)QE}Y'
# Название базы данных
DBNAME='sitemanager'
# Переменная с датой
DATA=`date +"%Y%m%d"`

mysqldump -u $USER -p$PASS $DBNAME > dump-$DATA.sql

Файл нужно сделать исполнительным:

chmod ugo+x /root/backup_sql.sh

Тестирование и запуск конфигурации

Когда вы внесли изменения в конфиг, вы должны убедиться в правильности параметров и сделать тестирование конфигурации:

rsnapshot configtest

Если нет ошибок, выдаст сообщение Syntax ОК. Если обнаружиться проблема, будет указана ошибка.

Чтобы проверить свои настройки, запустите rsnapshot в тестовом режиме. Это выведет подробный список действий, которые он будет делать, на самом деле не выполняя их:

rsnapshot -t alpha

Для первого боевого копирования, выполните:

rsnapshot alpha

Автоматизация с Cron

Если в ручном режиме все прошло нормально, надо добавить задание, для выполнения резервного копирования, в автоматическом режиме. Для этого добавляем задание в Cron:

* * * * * rsnapshot alpha

С этими настройками, резервная копия будет выполнятся на уровне alpha каждую минуту.

Дополнительные команды

Просмотреть занимаемое место резервными копиями:

rsnapshot du
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг