Hetzner - DokuWiki

Tartarus Backup-Konfiguration/ru

Inhaltsverzeichnis

Резервное копирование с Tartarus

Tartarus это система резервного копирования, базирующаяся на широко распространённых Unix-утилитах, которые, в свою очередь, «заточены» под требования выделенного сервера.

Установка

Пользователи Debian могут легко установить программу с помощью пакетной системы и поддерживать актуальность её версий, добавив в конфигурацию APT следующую строку (например, в /etc/apt/sources.list.d/tartarus.list):

deb http://wertarbyte.de/apt/ ./

После выполнения «apt-get update», скрипт можно установить с помощью «apt-get install tartarus».

Ниже приведена последовательность команд, обеспечивающих подключение репозитория tartarus и его установку:

wget -O /etc/apt/sources.list.d/wertarbyte.list http://wertarbyte.de/apt/wertarbyte-apt.list
wget -O - http://wertarbyte.de/apt/software-key.gpg | apt-key add -
apt-get update
apt-get install tartarus

Скрипт использует широкий спектр классических инструментов Unix, установленных в системе — если это не произошло автоматически, то установите их с помощью менеджера пакетов:

apt-get install tar bzip2 lvm2 gnupg curl

Если у вас не Debian (или не Ubuntu), то программу можно установить вручную, просто скачав её с сайта и распаковав файлы в /usr/local/.

Однако, рекомендуется всё-таки установка с помощью менеджера пакетов, так как при этом устанавливается самая актуальная версия.

При использовании современного дистрибутива Ubuntu (начиная с версии 10), могут возникать ошибки с curl и sftp, поэтому curl необходимо собрать отдельно. Инструкцию по сборке можно найти здесь: Curl for sftp

Настройка резервного копирования

Tartarus считывает свою конфигурацию из файлов, расположенных в /etc/tartarus/. Это набор shell-скриптов, используемых в процессе резервного копирования. Поэтому другие конфигурационные файлы можно добавить в профиль с помощью команды «source». Это может быть использовано для централизованного хранения общих для всех профилей настроек резервного копирования:

Общая конфигурация

# /etc/tartarus/generic.inc
# Общие настройки резервного копирования
# на FTP сервере в Hetzner
STORAGE_FTP_SSL_INSECURE="yes"
STORAGE_METHOD="FTP"
# Адрес FTP сервера
STORAGE_FTP_SERVER="1.2.3.4"
# FTP доступ
STORAGE_FTP_USER="12345"
STORAGE_FTP_PASSWORD="SecretPassword"
# Шифрованная передача и использование SFTP
STORAGE_FTP_USE_SFTP="yes"
# Способ архивирования
COMPRESSION_METHOD="bzip2"
# Размер LVM снапшота
LVM_SNAPSHOT_SIZE="1000M"
# Симметричное шифрование данных
ENCRYPT_SYMMETRICALLY="yes"
# Чтение пароля из /etc/tartarus/backup.sec
ENCRYPT_PASSPHRASE_FILE="/etc/tartarus/backup.sec"
# Во время настройки копирования
# не превышайте лимиты файловой системы
STAY_IN_FILESYSTEM="yes"

С такими настройками данные шифруются с паролем, считываемым из файла /etc/tartarus/backup.sec. Содержимое этого файла также требуется для распаковки архивов. Поэтому содержимое необходимо хранить в безопасности (возможно также и в распечатанном виде).

Простое резервное копирование

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

# /etc/tartarus/root.conf
#
# Чтение главного конфигурационного файла
source /etc/tartarus/generic.inc
# Имя профиля
NAME="root"
# Директория / Резервная копия
DIRECTORY="/"
# Не делать копии временных файлов
# несколько директорий отделяются пробелом
EXCLUDE="/tmp/"
# Без LVM снапшота
CREATE_LVM_SNAPSHOT="no"

Просто начните копирование, запустив:

/usr/sbin/tartarus /etc/tartarus/root.conf

Копирование с LVM снапшотами

LVM снапшоты позволяют «заморозить» файловую систему во время выполнения операций. Система LVM создаёт виртуальное блочное устройство и хранит явные изменения в отдельном логическом томе.

# /etc/tartarus/home.conf
source /etc/tartarus/generic.inc
NAME="home"
DIRECTORY="/home"
# Создать LVM снапшот
CREATE_LVM_SNAPSHOT="yes"
# LVM том, хранящий данные файловой системы
LVM_VOLUME_NAME="/dev/volumegroup/home"
# Точка монтирования для файловой системы
LVM_MOUNT_DIR="/home"

Для монтирования снапшотов Tartarus использует /snap. «Замороженные» файловые системы монтируются в отдельные поддиректории.

Инкрементные резервные копии

Инкрементные резервные копи сохраняют только изменения по сравнению с последней версией резервной копии, вместо копирования целой файловой системы. Tartarus создаёт файлы-метки, для определения точной даты последнего резервного копирования. Для выполнения инкрементного копирования, вам сначала необходимо создать директорию для хранения этих файлов:

mkdir -p /var/spool/tartarus/timestamps/

В профилях конфигурации добавьте слудующую строку (с соответствующим именем файла):

INCREMENTAL_TIMESTAMP_FILE="/var/spool/tartarus/timestamps/home"

После каждого успешного создания резервной копии, скрипт обновляет этот файл. Для создания инкрементной копии, запустите Tartarus с дополнительным параметром «-i»:

/usr/sbin/tartarus -i /etc/tartarus/home.conf

Автоматическое резервное копирование

В типичной системе есть несколько файлов резервного копирования в директории /etc/tartarus/; для их автоматического вызова, используйте следующий скрипт:

#!/bin/sh
# /usr/local/sbin/backup.sh
# Выполнить все профили в /etc/tartarus/ и передать
# аргументы командной строки tartarus (например -i)
for profile in /etc/tartarus/*.conf; do
 /usr/sbin/tartarus $* "$profile"
done

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

/usr/local/sbin/backup.sh # полное копирование
/usr/local/sbin/backup.sh -i # инкрементное копирование

Команда «crontab -e» редактирует crontab для текущего пользователя:

PATH=/bin/:/sbin/:/usr/bin/:/usr/sbin/:/usr/local/sbin/:/usr/local/bin
# m    h       dom     mon     dow     command
0      1       *       *       mon-sat /usr/local/sbin/backup.sh -i
0      1       *       *       sun     /usr/local/sbin/backup.sh

В этом примере задано создание полной копии каждое воскресенье в 01:00, и инкрементной копии во все остальные дни.

Восстановление

Так как Tartarus работает на основе простых Unix-утилит, резервную копию просто восстановить из Rescue-системы. Чтобы посмотреть список файлов в резервной копии, используйте следующую команду:

curl [[Ftp: |
gpg --decrypt | tar tpvj

Для распаковки архива в директории /mnt/restore введите следующую команду:

curl [[Ftp: |
gpg --decrypt | tar xpvj -C /mnt/restore

Удаление старых копий

Если копии создаются регулярно, то вскоре выбирается квота FTP-сервера, поэтому старые копии должны также регулярно удаляться. Это можно делать автоматически с помощью «charon.ftp». Следующая команда проверяет на FTP-сервере все резервные копии профиля «home» на предмет их «срока годности». Выполнение с параметром «--dry-run» позволяет не удалять файлы.

/usr/sbin/charon.ftp --host 1.2.3.4 \
--user USERNAME \
--password PASSWORD \
--profile home \
--maxage 7 \
--dry-run

Charon удаляет все файлы, созданные более чем 7 дней назад. Однако это происходит только если не существует других инкрементных копий на основе этих файлов.

Для автоматической чистки FTP-сервера после успешного создания резервных копий, используйте Tartarus hook. Следующие строки в настройках Tartarus (например, в generic.inc), проверяют наличие неактуальных по дате архивов после каждого выполнения резервного копирования:

# Чистка FTP сервера после резервного копирования
TARTARUS_POST_PROCESS_HOOK() {
   echo -n "$STORAGE_FTP_PASSWORD" | /usr/sbin/charon.ftp \
   --host "$STORAGE_FTP_SERVER" \
   --user "$STORAGE_FTP_USER" --readpassword \
   --maxage 7 \
   --dir "$STORAGE_FTP_DIR" --profile "$NAME"
}

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

Документация и контакты

Подробную информацию по Tartarus можно найти на странице проекта, там же можно найти документацию программы и список рассылки.

Зарегистрируйтесь там, чтобы отправлять отчёты об ошибках скрипта, участвовать в проекте и просто, быть информированным о новшествах проекта.



© 2019. Hetzner Online GmbH. Alle Rechte vorbehalten.