Linux резервное копирование samba

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

Резервное копирование Samba обеспечивает восстановление домена в случае серьезного сбоя. Если вы используете DC в качестве файлового сервера, вам придется создать резервную копию для хранимых данных отдельно.

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

Существует несколько способов резервного копирования, которые работают по-разному и достигают разных целей:

  • Интернет. Создает клон базы данных работающего DC. По функциональности это похоже на подключение нового DC к сети.
  • Оффлайн. Создает резервные копии файлов Samba по мере их появления на диске. Он включает метаданные репликации, которые являются локальными для данного конкретного контроллера домена и которые не включены в резервные копии в онлайн-хранилище. Он также может создать файл резервной копии, когда контроллер домена отключен (т.е. процесс samba не выполняется).
  • Переименование. Создает файл резервной копии с переименованным доменом и предназначен только для временной замены.

Данные типы резервного копирования имеют несколько общих черт. Все резервные копии создаются с использованием варианта команды ‘samba-tool domain backup’. Каждая команда создает файл резервной копии *.tar.bz2, который содержит полную резервную копию домена (на основе данного DC). Затем файл резервной копии можно использовать для восстановления домена с помощью команды samba-tool domain backup restore.

Примечание: ‘Обратите внимание, что файл резервной копии является резервной копией вашего домена, а не DC. Восстановление файла резервной копии создаст новый DC с информацией о вашем домене. Чтобы восстановить последующие контроллеры домена, вы должны присоединить новые восстановленные контроллеры домена к восстановленному контроллеру домена.

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

Примечание: Обратите внимание, что вы должны запустить резервное копирование от имени пользователя root. Оперативное резервное копирование на самом деле может быть успешным для пользователя, не являющегося пользователем root, но это вызовет головную боль позже, когда вы попытаетесь восстановить домен.

Резервное копирование в режиме онлайн

Чтобы создать резервную копию онлайн, выполните:

sudo samba-tool domain backup online --targetdir= --server= -U Administrator

Эта команда может быть запущена локально на контроллере домена или удаленно на другом компьютере. При удаленном запуске команды может потребоваться указать параметр —configfile, чтобы в резервную копию были включены правильные параметры smb.conf (т. е. локальный файл smb.conf может не существовать или его параметры могут отличаться от контроллеров домена вашего домена).

Автономное / локальное резервное копирование DC

Примечание: Обратите внимание, что автономные резервные копии требуют установленного пакета lmdb-utils (lmdb, liblmdb), в противном случае программа выдаст исключение при попытке запустить mdb_copy ()

Чтобы создать резервную копию в автономном режиме, войдите в систему, резервную копию которой вы делаете и просто укажите расположение целевого каталога для записи файла резервной копии. Например:

Читайте также:  Linux ubuntu сменить пароль root

sudo samba-tool domain backup offline —targetdir=

Обратите внимание, что, несмотря на имя этой опции, контроллер домена не обязательно должен находиться в автономном режиме при выполнении этой команды. Инструмент просто выполняет резервное копирование локальных файлов и имеет достаточную блокировку, чтобы обеспечить безопасное создание резервной копии.

Обратите внимание, что в то время как другие команды резервного копирования доступны начиная с Samba v4.9 и выше, автономная команда не включена до Samba v4.10.

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

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

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

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

1.Остановите samba на всех старых DC. (Если вы не используете переименованную резервную копию, в этом случае вы можете пропустить этот шаг).
2.Запустите команду ‘samba-tool domain backup restore’, чтобы восстановить базу данных домена на одном новом контроллере домена. Подробности смотрите ниже.
3.Запустите samba на новом DC.
4.Повторно добавьте старые DC обратно в сеть, присоединив их к восстановленному DC, например

samba-tool domain join DC —server=

Если вы используете переименованную резервную копию, вам потребуется перенастроить сетевые устройства, чтобы трафик перенаправлялся в восстановленный домен, а не в неисправный/исходный домен.

Примечание: Обратите внимание, что файл резервной копии восстанавливает весь домен, а не определенный DC. Шаг «Восстановление резервной копии домена samba» выполняется только один раз, при этом домен воссоздается на одном контроллере домена. Все старые контроллеры домена должны быть затем присоединены к восстановленному контроллеру домена, чтобы снова присоединиться к домену.

Восстановление из файла резервной копии

Команда для восстановления похожа на «domain provision» — шаг начальной настройки домена, за исключением того, что на этот раз резервная копия содержит все объекты базы данных, которые вы добавили с тех пор. Как и при подготовке, вам нужно указать новый DC при запуске команды восстановления. Этот новый DC не должен был существовать ранее в сети Samba. Команда восстановления будет выглядеть примерно так:

sudo samba-tool domain backup restore —backup-file= —newservername= —targetdir=

Примечание: Указанный вами —newservername для восстановленного DC не должен уже существовать в исходном домене. В противном случае вы получите ошибку

Обратите внимание, что указанный целевой каталог должен быть пустым (или не существовать). Это означает, что нецелесообразно восстанавливать базу данных домена обратно в место установки по умолчанию (например, /usr/local/samba). Вместо этого мы рекомендуем вам восстановить базу данных домена в другой целевой каталог, а затем использовать опцию ‘-s’ (или ‘—configfile’) при запуске samba, например

Указание восстановленного smb.conf будет означать, что Samba будет использовать файлы базы данных в правильном месте.

Восстановленный DC будет добавлен на сайт «Default-First-Site-Name». Этот сайт будет создан в восстановленной БД, если он еще не существует. Вы можете указать альтернативный сайт, чтобы добавить восстановленный DC, используя опцию —site.

Читайте также:  Install linux ubuntu tutorial

Перед запуском восстановленного DC Samba вы должны проверить правильность восстановленных настроек smb.conf. Также может быть полезно запустить samba_dnsupdate (хотя он все равно запускается автоматически при запуске Samba).

Источник

Introduction

The contents of this document are meant to be used with samba 4.x.

This is a tutorial about backup and restore of a Samba AD DC. It is hoped that it will be useful, but it comes WITHOUT ANY WARRANTY!

If at all possible, do not use this method. It is considered a deprecated DRAFT document and may contain faults or missing instructions!

General

WARNING, if you run more than one DC: Never restore a DC from a backup. You’ll corrupt the directory as the replication meta data will get out of sync!

If at least one other DC is still running, simply join the new machine as a DC again. Everything will be synchronized from the other running DC(s) — except SysVol replication, which isn’t implemented yet.

Only use a backup on the DC it came from, never use it to upgrade your DC by moving it to a new DC. In this instance, join a new DC instead.

If every DC in the domain is broken, you should post on the samba-technical mailing list on http://lists.samba.org to discuss the best way to fix this.

How LDB and TDB files can be backed-up/restored

If plan to modify the ‘samba_backup’ script or create your own solution, you’ll find some useful information here:

  • Whilst you must never normally copy a running database, you can backup *.ldb & *.tdb files online with ‘tdbbackup’
  • Files created by tdbbackup, are full and normal TDB files. tdbbackup does the extraction safely.
  • Backups of *.ldb files can be restored to their old names by simply removing the ‘.bak’ suffix.

About the samba_backup script

Samba provides a very basic shell script to backup its databases (source4/scripting/bin/samba_backup in the source tarball). This requires that your whole samba installation is in one place (such as /usr/local/samba/). If you have used configure options to store pieces of samba in different locations, you can adjust the script or use it as a base to write your own script.

Because the script is very basic and if you plan to use it as is, there is one thing to be aware of:

  • The script doesn’t backup extended ACLs. So you will lose the permissions e. g. on the SysVol share. If you have a tar version that supports the —xattrs option (see the tar manpage), you should add this option to all ‘tar’ commands inside the script. This enables tar to keep extended ACLs in the archives.
Читайте также:  Linux test if directory exist

Backup

The Samba backup script isn’t installed by ‘make install’. You need to you copy it from the sources directory (source4/scripting/bin/samba_backup) to somewhere like /usr/sbin, and set secure permissions:

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

Adjust the following variables inside the script to your needs:

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

Create the destination folder, you have configured in the $WHERE variable and set permissions:

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

Start the backup script for a first test:

If the script exits without an error, you should find three files in the destination folder:

If your test backup succeeded, you should add a cron-job for daily backup:

Add the following line to backup daily at 2am:

0 2 * * * /usr/sbin/samba_backup

Note: Ensure, when running the script via cron, all required binaries are in directories that are part of the $PATH variable. If the correct path isn’t defined system-wide, you can either set the variable in your crontab or at the beginning of the script after the shebang (#!) line.

Restore

The following restore guide assumes that you backed-up your databases with the ‘samba_backup’ script. If you have your own script, adjust the steps.

  • Never do a restore and a version change at the same time! Always restore on a system using the same Samba version as the one you created the backup on!
  • Always Restore on a system with the same IP and Hostname. Otherwise you will run into Kerberos and DNS issues.
  • Recommended: Restore on the same OS as you created the backup on.

The most important thing in a restore situation is to bring your system back to a running state. Once everything is up and tested, you can then do any required changes. Never try to make changes together with a restore!

If your whole system is broken, you will first have to setup the whole machine as described in the HowTo (Active Directory Controller).

Remove the folders, that we will restore (samba must not be running!):

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

Now unpack your latest working backup files to their old location:

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

Rename *.ldb.bak files in the ‘private’ directory back to *.ldb. This can be done with GNU find and Bash:

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

If your backup doesn’t contain extended ACLs (see section About the samba_backup script, you have to run:

# samba-tool ntacl sysvolreset

If you use Bind as DNS backend, you have to fix the hardlinks for the DNS databases:

# samba_upgradedns --dns-backend=BIND9_DLZ

Now you can start samba and test if your restore was successful.

Источник

Оцените статью
Adblock
detector