|  |  | 
| — | wiki:articles:samba4_br [13/09/2013 20:49] (текущий)  – создано - внешнее изменение 127.0.0.1 | 
|---|
|  | ^   **Резервное копирование и восстановление Samba AD DC**   ^ | 
|  |  | 
|  |  | 
|  | Оригинал: [[https://wiki.samba.org/index.php/Backup_and_Recovery | Backup and Recovery]] \\ | 
|  | Перевел: //Graf// \\ | 
|  | Под редакцией: //Serg Bormant//\\ | 
|  | Дата перевода: //сентябрь 2013 г.//\\ | 
|  |  | 
|  |  | 
|  | ====== Введение ====== | 
|  |  | 
|  | Содержание этого документа актуально только для samba 4.x.\\ | 
|  | Надеемся, что данное пособие по резервному копированию и восстановлению samba окажется полезным. Но имейте ввиду, что написанное здесь не дает **НИКАКИХ ГАРАНТИЙ!** | 
|  |  | 
|  | **До удаления этой строки из данного пособия, рассматривайте этот документ как черновик, который может содержать ошибки или в котором может чего-то не хватать!** | 
|  |  | 
|  | ====== Общее ====== | 
|  | <note warning> | 
|  | //Если у вас запущенно более одного DC:// \\ | 
|  | **Никогда не восстанавливайте из резервной копии DC, если хотя бы один другой DC все еще работает!\\ | 
|  | Вы повредите каталог, так как репликация метаданных рассинхронизируется!** | 
|  | </note> | 
|  |  | 
|  | Просто [[https://wiki.samba.org/index.php/Samba4/HOWTO/Join_a_domain_as_a_DC | присоедините новую машину как DC]]. И все будет синхронизировано с рабочим(и) DC, кроме репликации SysVol, которая пока не реализована. | 
|  |  | 
|  | Если же сломан весь домен на всех DC, вы должны отправить сообщение в [[mailto:samba-technical@lists.samba.org | samba-technical]] на [[http://lists.samba.org| 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// и установить разрешения: | 
|  | <code> | 
|  | # cp ..../source4/scripting/bin/samba_backup /usr/sbin | 
|  | # chown root:root /usr/sbin/samba_backup | 
|  | # chmod 750 /usr/sbin/samba_backup | 
|  | </code> | 
|  |  | 
|  | Настройте следующие переменные внутри скрипта под свои нужды: | 
|  | <code> | 
|  | FROMWHERE=/usr/local/samba | 
|  | WHERE=/usr/local/backups | 
|  | DAYS=90 | 
|  | </code> | 
|  |  | 
|  | Создайте директорию назначения, которую вы прописали в переменной //$WHERE//, и установите разрешения: | 
|  | <code> | 
|  | # mkdir /usr/local/backups | 
|  | # chmod 750 /usr/local/backups | 
|  | </code> | 
|  |  | 
|  | Запустите скрипт резервного копирования для первого теста: | 
|  | <code> | 
|  | # /usr/sbin/samba_backup | 
|  | </code> | 
|  |  | 
|  | Если сценарий завершился без ошибок, то вы увидите три файла в папке назначения: | 
|  | * etc.{Timestamp}.tar.bz2 | 
|  | * samba4_private.{Timestamp}.tar.bz2 | 
|  | * sysvol.{Timestamp}.tar.bz2 | 
|  |  | 
|  | Если тест резервного копирования удался, то для ежедневного резервного копирования добавьте его в cron: | 
|  | <code> | 
|  | # crontab -e | 
|  | </code> | 
|  |  | 
|  | Для ежедневного резервного копирования в 2 часа ночи добавьте следующую строку: | 
|  | <code> | 
|  | 0 2 * * *       /usr/sbin/samba_backup | 
|  | </code> | 
|  |  | 
|  | ====== Восстановление ====== | 
|  |  | 
|  | Следующие рекомендации по восстановлению предполагают, что вы сделали резервные копии баз данных при помощи скрипта //samba_backup//. Если у вас есть свой собственный сценарий, отрегулируйте соответствующие шаги. | 
|  |  | 
|  | <note warning> | 
|  | \\ | 
|  | ** | 
|  | Никогда не делайте восстановление и изменение версии samba одновременно! \\ | 
|  | Всегда восстанавливайте в системе, которая использует ту же версию Samba, что была во время создания резервной копии! \\ | 
|  | Восстанавливайте в системе с тем же IP-адресом и именем хоста. В противном случае вам придется работать с ошибками Kerberos и DNS. \\ | 
|  | Рекомендуем: Восстанавливать в той же ОС, в которой была создана резервная копия.\\ | 
|  | \\ | 
|  | Самое важное в восстановлении -- это вернуть вашу систему в рабочее состояние. Сделайте все изменения позже, после того как всё "поднялось" и тест прошёл успешно. Никогда не делайте изменений вместе с восстановлением! | 
|  | ** | 
|  | </note> | 
|  |  | 
|  | Если ваша система не работает, вы должны сначала настроить всю машину как описано в практических руководствах (HowTo) ([[wiki:articles:samba4_ht| контроллера AD]] или [[https://wiki.samba.org/index.php/Samba4/Domain_Member | рядового сервера]]). | 
|  |  | 
|  | Удалите те директории, которые будете восстанавливать (Samba не должна работать!): | 
|  | <code> | 
|  | # rm -rf /usr/local/samba/etc | 
|  | # rm -rf /usr/local/samba/private | 
|  | # rm -rf /usr/local/samba/var/locks/sysvol | 
|  | </code> | 
|  |  | 
|  | Распакуйте последние рабочие файлы резервных копий в старое местоположение: | 
|  | <code> | 
|  | # 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/ | 
|  | </code> | 
|  |  | 
|  | Переименуйте файлы //*.ldb.bak// в каталоге //private// в //*.ldb//. С GNU //find// и //Bash// это можно сделать разом: | 
|  | <code> | 
|  | # find /usr/local/samba/private/ -type f -name '*.ldb.bak' -print0 | while read -d $'\0' f ; do mv "$f" "${f%.bak}" ; done | 
|  | </code> | 
|  |  | 
|  | Если ваша резервная копия не содержит расширенные списки управления доступом (ACL) (см. раздел о скрипте | 
|  | [[wiki:articles:samba4_br#o_skripte_samba_backup | samba_backup]] ), то запустите: | 
|  | <code> | 
|  | # samba-tool ntacl sysvolreset | 
|  | </code> | 
|  |  | 
|  | Если вы используете Bind в качестве сервера DNS, исправьте жесткие ссылки на базы данных DNS: | 
|  | <code> | 
|  | # samba_upgradedns --dns-backend=BIND9_DLZ | 
|  | </code> | 
|  |  | 
|  | Смотрите [[https://wiki.samba.org/index.php/Dns-backend_bind#New_added_DNS_entries_are_not_resolvable |DNS Backend BIND - New added DNS entries are not resolvable.]] | 
|  |  | 
|  | Теперь, если восстановление прошло успешно, вы можете запустить samba и начать тестирование. | 
|  | <note tip> | 
|  | Подсказка: Конечно, можно восстановить одну базу данных из резервных копий, если вы знаете, какая из них сломана. Но будьте уверены, некоторые базы данных могут быть связаны с другими. И так тесно, что вы получите неустойчивую систему! Если вы не уверены, зависят ли ваши сломанные данные от других, вы должны спросить в [[mailto:samba-technical@lists.samba.org | samba-technical]] на [[http://lists.samba.org| http://lists.samba.org]] | 
|  | </note> | 
|  |  | 
|  |  | 
|  |  |