Содержание

Резервное копирование и восстановление Samba AD DC

Оригинал: Backup and Recovery
Перевел: Graf
Под редакцией: Serg Bormant
Дата перевода: сентябрь 2013 г.

Введение

Содержание этого документа актуально только для samba 4.x.
Надеемся, что данное пособие по резервному копированию и восстановлению samba окажется полезным. Но имейте ввиду, что написанное здесь не дает НИКАКИХ ГАРАНТИЙ!

До удаления этой строки из данного пособия, рассматривайте этот документ как черновик, который может содержать ошибки или в котором может чего-то не хватать!

Общее

Если у вас запущенно более одного DC:
Никогда не восстанавливайте из резервной копии DC, если хотя бы один другой DC все еще работает!
Вы повредите каталог, так как репликация метаданных рассинхронизируется!

Просто присоедините новую машину как DC. И все будет синхронизировано с рабочим(и) DC, кроме репликации SysVol, которая пока не реализована.

Если же сломан весь домен на всех DC, вы должны отправить сообщение в samba-technical на http://lists.samba.org для обсуждения наилучшего способа исправления.

Как можно сделать резервную копию/восстанавление LDB и TDB файлов

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

О скрипте samba_backup

Samba предоставляет очень простой скрипт резервного копирования баз данных (он находится в архиве с исходными кодами в source4/scripting/bin/samba_backup). Для его работы необходимо, чтобы вся Samba была установлена в одном месте (например в /usr/local/samba/). Если во время сборки вы использовали запуск configure с различными опциями для хранения частей Samba в разных местах, то вы можете исправить скрипт или использовать его в качестве базы для написания собственного скрипта.

Поскольку на данный момент этот скрипт очень прост, и вы будете использовать его без изменений, то вам необходимо знать некоторые вещи:

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

Samba скрипт для резервного копирования не устанавливается во время запуска make install. Рекомендуется скопировать его из директории с исходным кодом (source4/scripting/bin/samba_backup) в систему, например в /usr/sbin и установить разрешения:

# cp ..../source4/scripting/bin/samba_backup /usr/sbin 
# chown root:root /usr/sbin/samba_backup 
# chmod 750 /usr/sbin/samba_backup

Настройте следующие переменные внутри скрипта под свои нужды:

FROMWHERE=/usr/local/samba 
WHERE=/usr/local/backups 
DAYS=90

Создайте директорию назначения, которую вы прописали в переменной $WHERE, и установите разрешения:

# mkdir /usr/local/backups 
# chmod 750 /usr/local/backups

Запустите скрипт резервного копирования для первого теста:

# /usr/sbin/samba_backup

Если сценарий завершился без ошибок, то вы увидите три файла в папке назначения:

Если тест резервного копирования удался, то для ежедневного резервного копирования добавьте его в cron:

# crontab -e

Для ежедневного резервного копирования в 2 часа ночи добавьте следующую строку:

0 2 * * *       /usr/sbin/samba_backup

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

Следующие рекомендации по восстановлению предполагают, что вы сделали резервные копии баз данных при помощи скрипта samba_backup. Если у вас есть свой собственный сценарий, отрегулируйте соответствующие шаги.


Никогда не делайте восстановление и изменение версии samba одновременно!
Всегда восстанавливайте в системе, которая использует ту же версию Samba, что была во время создания резервной копии!
Восстанавливайте в системе с тем же IP-адресом и именем хоста. В противном случае вам придется работать с ошибками Kerberos и DNS.
Рекомендуем: Восстанавливать в той же ОС, в которой была создана резервная копия.

Самое важное в восстановлении – это вернуть вашу систему в рабочее состояние. Сделайте все изменения позже, после того как всё «поднялось» и тест прошёл успешно. Никогда не делайте изменений вместе с восстановлением!

Если ваша система не работает, вы должны сначала настроить всю машину как описано в практических руководствах (HowTo) ( контроллера AD или рядового сервера).

Удалите те директории, которые будете восстанавливать (Samba не должна работать!):

# rm -rf /usr/local/samba/etc 
# rm -rf /usr/local/samba/private 
# rm -rf /usr/local/samba/var/locks/sysvol

Распакуйте последние рабочие файлы резервных копий в старое местоположение:

# cd /usr/local/backups 
# tar -jxf etc.{Timestamp}.tar.bz2 -C /usr/local/samba/ 
# tar -jxf samba4_private.{Timestamp}.tar.bz2 -C /usr/local/samba/ 
# tar -jxf sysvol.{Timestamp}.tar.bz2 -C /usr/local/samba/

Переименуйте файлы *.ldb.bak в каталоге private в *.ldb. С GNU find и Bash это можно сделать разом:

# find /usr/local/samba/private/ -type f -name '*.ldb.bak' -print0 | while read -d $'\0' f ; do mv "$f" "${f%.bak}" ; done

Если ваша резервная копия не содержит расширенные списки управления доступом (ACL) (см. раздел о скрипте samba_backup ), то запустите:

# samba-tool ntacl sysvolreset

Если вы используете Bind в качестве сервера DNS, исправьте жесткие ссылки на базы данных DNS:

# samba_upgradedns --dns-backend=BIND9_DLZ

Смотрите DNS Backend BIND - New added DNS entries are not resolvable.

Теперь, если восстановление прошло успешно, вы можете запустить samba и начать тестирование.

Подсказка: Конечно, можно восстановить одну базу данных из резервных копий, если вы знаете, какая из них сломана. Но будьте уверены, некоторые базы данных могут быть связаны с другими. И так тесно, что вы получите неустойчивую систему! Если вы не уверены, зависят ли ваши сломанные данные от других, вы должны спросить в samba-technical на http://lists.samba.org