Sambaバックアップスクリプトを使用する

提供: 雑廉堂Wiki

はじめに

このドキュメントの内容は、samba 4.xで使用するためのものです。

これは、Samba AD DCのバックアップと復元に関するチュートリアルです。それは有用であることが期待されていますが、保証は一切ありません !

この行が削除されるまで、このドキュメントはDRAFTとみなされます。

一般

少なくとも1つの他のDCがまだ動作している場合は、新しいマシンをDCとして再び接続します。他の実行中のDCからすべてが同期されます - まだ実装されていないSysVolレプリケーションを除きます。

ドメイン内のすべてのDCが壊れている場合は、http://lists.samba.orgのsamba-technicalメーリングリストに投稿して、これを解決する最善の 方法について議論する必要があります。

LDBおよびTDBファイルのバックアップ/リストア方法

'samba_backup'スクリプトを修正する予定がある場合や独自のソリューションを作成する場合は、ここでいくつかの有益な情報を見つけるでしょう:

  • 実行中のデータベースを決してコピーする必要はありませんが、* .ldb* .tdbファイルを'tdbbackup'でオンラ インでバックアップできます。
  • tdbbackupによって作成されたファイルは、完全なTDBファイルと通常のTDBファイルです。 tdbbackupは安全に抽出を行います。
  • * .ldbファイルのバックアップは、単に '.bak'というサフィックスを削除するだけで元の名前に復元できます。

samba_backupスクリプトについて

Sambaはデータベースをバックアップする非常に基本的なシェルスクリプトを提供しています(ソースtarballのsource4/scripting/bin/samba_backup)。これには、Sambaインストール全体が1つの場所にあることが必要です(/usr /local/samba/など)。 configureオプションを使用して異なる場所にsambaを格納している場合は、スクリプトを調整するか、ベースとして使用して独自のスクリプトを作成 できます。

スクリプトは非常に基本的なものであり、それをそのまま使用する予定がある場合、注意すべき点が1つあります。

  • スクリプトは拡張ACLをバックアップしません。したがって、あなたはパーミッションを失います(例:SysVol共有)。--xattrsオプションを サポートするtarバージョン(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

スクリプトがエラーなしで終了する場合は、出力先フォルダに3つのファイルがあります。

  • etc.{Timestamp}.tar.bz2
  • samba4_private.{Timestamp}.tar.bz2
  • sysvol.{Timestamp}.tar.bz2

テストバックアップが成功した場合は、毎日のバックアップ用にcronジョブを追加する必要があります。

# crontab -e

毎日2:00AMにバックアップするために、次の行を追加します。

0 2 * * *       /usr/sbin/samba_backup

注意:cronを使用してスクリプトを実行するときは、すべての必要なバイナリが$PATH変数の一部であるディレクトリにあることを確認してください。正しいパスがシステム全体で定義されていない場合は、変数をcrontabに設定するか、またはスクリプトの先頭でshebang(#!)行の後に設定します。

リストア

以下のリストアガイドでは、 'samba_backup'スクリプトを使用してデータベースをバックアップしたことを前提としています。独自のスクリプ トをお持ちの場合は、手順を調整してください。

非常に重要なメモ:

  • 同時に、復元とバージョンの変更を行わないでください!バックアップを作成したものと同じSambaバージョンを使用しているシステムでは、常に復元してください!
  • 同じIPとホスト名を持つシステムでは、常にリストアしてください。そうしないと、KerberosとDNSの問題が発生します。
  • 推奨:バックアップを作成したのと同じOSで復元してください。

復元状況で最も重要なことは、システムを実行状態に戻すことです。すべてアップしてテストされたら、必要な変更を行うことができます。 復元と一緒に変更しようとしないでください!

システム全体が壊れている場合は、まずHowTo(SambaをActive Directoryドメインコントローラとして設定する)の説明に従ってマシン全体をセットアップする必要があります。

復元するフォルダを削除します(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/

privateディレクトリの*.ldb.bakファイルの名前を*.ldbに戻します。これはGNU findBashで行うことができます:

# 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 as DNSバックエンドを使用する場合は、DNSデータベースのハードリンクを修正する必要があります。

# samba_upgradedns --dns-backend=BIND9_DLZ

DNSバックエンド BIND - 新しいDNSバックエンドエントリが解決できない」 を参照してください。

これで、sambaを起動し、復元が成功したかどうかをテストできます。

ヒント:バックアップから単一のデータベースを復元することは可能ですが、一部のデータベースは他のデータベースにリンクされている可能性があるため、矛盾するシステムがないように注意してください。壊れたデータベースが他のデータベースに依存しているかどうか不明な場合は、http://lists.samba.orgのsamba技術的メーリングリストに問い合わせるか、すべてを復元する必要があります。