Содержание
Резервное копирование и восстановление Samba AD DC |
---|
Оригинал: Backup and Recovery
Перевел: Graf
Под редакцией: Serg Bormant
Дата перевода: сентябрь 2013 г.
Введение
Содержание этого документа актуально только для samba 4.x.
Надеемся, что данное пособие по резервному копированию и восстановлению samba окажется полезным. Но имейте ввиду, что написанное здесь не дает НИКАКИХ ГАРАНТИЙ!
До удаления этой строки из данного пособия, рассматривайте этот документ как черновик, который может содержать ошибки или в котором может чего-то не хватать!
Общее
Никогда не восстанавливайте из резервной копии DC, если хотя бы один другой DC все еще работает!
Вы повредите каталог, так как репликация метаданных рассинхронизируется!
Просто присоедините новую машину как DC. И все будет синхронизировано с рабочим(и) DC, кроме репликации SysVol, которая пока не реализована.
Если же сломан весь домен на всех DC, вы должны отправить сообщение в samba-technical на http://lists.samba.org для обсуждения наилучшего способа исправления.
Как можно сделать резервную копию/восстанавление LDB и TDB файлов
Если вы будете вносить изменения в скрипт samba_backup или создадите собственный, то вам пригодится некоторая полезная информация:
- Никогда не копируйте работающую базу данных!
- Онлайн резервные копии файлов *.ldb и *.tdb могут быть сделаны при помощи tdbbackup
- Файлы созданные при помощи tdbbackup, это целые и невредимые TDB-файлы. Извлечение файлов при помощи tdbbackup проходит безопасно.
- Для восстановления резервных копий *.ldb файлов можно просто переименовать их в свои старые названия (убрав *. bak).
О скрипте samba_backup
Samba предоставляет очень простой скрипт резервного копирования баз данных (он находится в архиве с исходными кодами в source4/scripting/bin/samba_backup). Для его работы необходимо, чтобы вся Samba была установлена в одном месте (например в /usr/local/samba/). Если во время сборки вы использовали запуск configure с различными опциями для хранения частей Samba в разных местах, то вы можете исправить скрипт или использовать его в качестве базы для написания собственного скрипта.
Поскольку на данный момент этот скрипт очень прост, и вы будете использовать его без изменений, то вам необходимо знать некоторые вещи:
- Сценарий не делает резервных копий расширенных ACL. Вследствие этого вы потеряете разрешения, например, на общий ресурс SysVol. Если у вас есть версия tar, которая поддерживает опцию - -xattrs (см. страницу руководства по использованию tar), вы должны добавить эту опцию ко всем командам tar внутри сценария. Это позволит tar сохранять расширенные ACL в архивах.
Резервное копирование
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
Если сценарий завершился без ошибок, то вы увидите три файла в папке назначения:
- etc.{Timestamp}.tar.bz2
- samba4_private.{Timestamp}.tar.bz2
- sysvol.{Timestamp}.tar.bz2
Если тест резервного копирования удался, то для ежедневного резервного копирования добавьте его в 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 и начать тестирование.