9.1 Создание бекапов fsbackup

СОЗДАНИЕ БЕКАПОВ

Используется FSBACKUP – система инкрементального резервного копирования и синхронизации ФС.

Для установки достаточно запустить скрипт ./install.pl

– Программа автоматически скопируется в заданный директивой –prefix каталог,

– По умолчанию установка производится в каталог /usr/local/fsbackup.

– После установки достаточно переименовать и отредактировать файл конфигурации.

1 Создание файла конфигурации для бекапа.

В нем мы указываем настройки бекапа и каталоги, которые будут в него заносится.

Создайте свой файл конфигурации бекапа и отредактируйте его. Можно создавать таким образом сколько угодно файлов конфигурации.

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

# cp /usr/local/fsbackup/cfg_example /usr/local/fsbackup/cfg_obmen

# nano /usr/local/fsbackup/cfg_obmen

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

$cfg_backup_name = "obmen"; # имя бекапа

$cfg_save_old_backup = 0; # не сохранять бекап перед инкрементальной копией

$cfg_increment_level = 1; # установите в 1 для создания только одной копии

$cfg_local_path = "/mnt/obmen"; # директория создания бекапов

$cfg_cache_dir = "/srv/cashe"; # директория для помещения текущих хэшей
# Список файлов и условий для помещения в бэкап.

# (описываются после директивы __DATA__):

__DATA__

/srv/obmen

Создадим еще один конфигурационный файл для папок пользователей.

# cp /usr/local/fsbackup/cfg_example /usr/local/fsbackup/cfg_users

# nano /usr/local/fsbackup/cfg_users

Отредактируем необходимые поля.

$cfg_backup_name = "users"; # имя бекапа

$cfg_save_old_backup = 0; # не сохранять бекап перед инкрементальной копией

$cfg_increment_level = 1; # установите в 1 для создания только одной копии

$cfg_local_path = "/mnt/personal"; # директория создания бекапов

$cfg_cache_dir = "/srv/cashe"; # директория для помещения текущих хэшей

# Список файлов и условий для помещения в бэкап.

# (описываются после директивы __DATA__):

__DATA__

/srv/user1

/srv/user2

2 Скрипт создания бекапа

Далее отредактируйте скрипт создания бекапа. Создайте для каждого конфигурационного файла свой файл создания бекапа.

# cp /usr/local/fsbackup/create_backup.sh /usr/local/fsbackup/create_backup_users.sh

Отредактируйте нужные вам параметры.

# nano /usr/local/fsbackup/create_backup_users.sh

Самым главным является

config_files="cfg_users" # укажите необходимые конфигурации для создания по ним бекакпа.

Аналогично создаем для obmen

# cp /usr/local/fsbackup/create_backup.sh /usr/local/fsbackup/create_backup_obmen.sh

config_files="cfg_obmen" # укажите необходимые конфигурации для создания по ним бекакпа.

3 Скрипт полного восстановления из бекапа

Для полного восстановления отредактируйте скрипт fsrestore.sh

# cp /usr/local/fsbackup/scripts/fsrestore.sh /usr/local/fsbackup/scripts/fsrestore_obmen.sh
# nano /usr/local/fsbackup/scripts/fsrestore_obmen.sh
backup_name="obmen" # имя бекапа

backup_path="/mnt/obmen/" # директория где находится бэкап.

restore_path="/ " # корневая директория куда будут помещены данные, установите /, т.к распаковка происходит с полными путями.

Для каждой конфигурации создайте свой скрипт восстановления аналогичным образом.

СОЗДАНИЕ БЕКАПА

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

# /usr/local/fsbackup/create_backup_obmen.sh

# /usr/local/fsbackup/create_backup_users.sh

ВОССТАНОВЛЕНИЕ ИЗ БЕКАПА

Для восстановления отдельных файлов из бекапа воспользуйтесь утилитой tar.

tar -tf <имя архива>  просмотр директорий в архиве без его распаковки

tar -xf <имя архива> <имя файла> <имя файла> разархивирование одного или нескольких файлов.

Архивы на сервере хранятся в подключенных сетевых директориях /mnt/obmen и /mnt/personal

После перемещаете по нужному пути извлеченный файл.

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

# /usr/local/fsbackup/scripts/fsrestore_obmen.sh

# /usr/local/fsbackup/scripts/fsrestore_users.sh

ДОБАВЛЕНИЕ И УДАЛЕНИЕ НОВЫХ ДИРЕКТОРИЙ В БЕКАП

Для добавления новых директорий в бекап отредактируте файл его создания.

Например добавим пользователя user3 в бекап users. Для этого добавим папку с данными user3 в конец секции __DATA__. Для удаления директорий из бекапа удалите путь к директории из файла.

# nano /usr/local/fsbackup/create_backup_users.sh

…

__DATA__

/srv/user1

/srv/user2

/srv/user3

Теперь каталоги трех пользователей будут добавляться в бекап users.

АВТОМАТИЗАЦИЯ СОЗДАНИЯ БЕКАПОВ

Для автоматизации можно использовать cron. Отредактируйте файл /etc/crontab. Например для создания еженедельного бекапа общей папки в 23.30 по субботам впишите следующую строку в конец файла.

# nano /etc/crontab

30 23 * * 6 root /usr/local/fsbackup/create_backup_users.sh

Команды cron

Формат команд cron(8) аналогичен стандарту V7 и является совместимым с ним. Каждая стока в системном состоит из шести полей и команды:

минута час число месяц день_недели пользователь команда

Каждая стока в пользовательском состоит из пяти полей и команды:

минута час число месяц день_недели команда

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

Поле Допустимые значение
минута * или 0-59
час * или 0-23
число * или 1-31
месяц *, 1-12 или имя месяца (см. ниже)
день-недели *, 0-7 или имя дня (воскресенье – это 0 и 7)
пользователь имя существующего пользователя
команда  строка

Допустимо указание нескольких значений (и диапазонов через тире) через запятую. Примеры: “1 , 2 , 5 , 9” “0-4 , 8-12”

Диапазон указывается как два числа, разделенных дефисом. Указываемые числа включаются в диапазон. Например, значение поля Fa час 8-11 приведёт к выполнению команды в 8, 9, 10 и 11 часов.

При указании диапазона можно пропускать некоторые его значения, указав шаг в форме / число Например: “0-23/2” для поля Fa час означает запуск команды через два часа (по стандарту V7 пришлось бы указывать “0,2,4,6,8,10,12,14,16,18,20,22 )” Шаг можно указывать также после звёздочки: “каждые два часа ” соответствует значению “*/2”

Звёздочка (`*’ ) без шага соответствует полному диапазону значений.

Для задания полей Fa месяц и Fa день_недели можно использовать имена. Указывайте первые три буквы нужного дня или месяца на английском, регистр букв не имеет значения. Диапазоны или списки имён не разрешены.

Поле Fa команда (остаток строки) определяет запускаемую по расписанию команду. Вся оставшаяся часть строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab Знак процента (`%’ ) в команде (если он не экранирован обратной косой чертой (`\’ ) ) будет соответствовать символу перевода строки и все данные после первого `%’
будут посланы для команды на стандартный ввод.

Демон cron(8) запускает команды когда значения полей Fa минута , Fa час , Fa месяц и хотя бы одно из полей Fa число и Fa день_недели, совпадают с текущим временем (см. замечание ниже). Демон cron(8) сверяет директивы с текущим временем раз в минуту.

Замечание: день выполнения команды может быть задан в двух полях — число и день_недели Если оба поля определены (т.е не равны *), то команда будет запущена, когда любое поле совпадёт с текущим временем. Например, запись:

30 4 1,15 * 5

приведёт к выполнении команды в 4:30 по полуночи первого и пятнадцатого числа каждого месяца, плюс в каждую пятницу.

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

Строка Значение
@reboot Выполнить команду один раз, при запуске ronc.
@yearly Выполнять команду каждое 1 января, “0 0 1 1 *”.
@annually (эквивалентно @yearly).
@monthly Выполнять команду в начале каждого месяца, “0 0 1 * *”.
@weekly Выполнять команду каждое воскресенье, “0 0 * * 0”.
@daily Выполнять команду в полночь, “0 0 * * *”.
@midnight (эквивалентно @daily).
@hourly  Выполнять команду в начале каждого часа

 

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