部分的な復元は、メッセージストアの一部を復元するときにのみ行われます。完全な復元は、メッセージストア全体を復元するときに行われます。メッセージストアでは単一コピーによるメッセージシステムが使用されています。つまり、メッセージの 1 つのコピーのみが 1 つのファイルとしてストアに保存されます。コピーされたメッセージのほかのインスタンス (メッセージが複数のメールボックスに送信される場合など) は、コピーへのリンクとして保存されます。このため、メッセージを復元する場合には注意が必要です。次に例を示します。
完全な復元: 完全な復元では、リンクの付いたメッセージは、依然としてリンク先のメッセージファイルと同じ inode をポイントしています。
部分的なバックアップおよび復元: 部分的なバックアップおよび部分的な復元では、メッセージストアの単一コピーの特性は保持されないことがあります。
次の例では、部分的な復元が実行された場合に、複数のユーザーによって使用されるメッセージに発生する事柄を示します。次のように、3 人のユーザー A、B、C に属する、まったく同じ 3 つのメッセージが存在すると仮定してみてください。
A/INBOX/1 B/INBOX/1 C/INBOX/1 |
例 1: 最初の例では、システムは部分的なバックアップと完全な復元を次のように実行します。
ユーザー B および C のメールボックスをバックアップします。
ユーザー B および C のメールボックスを削除します。
手順 1 のバックアップデータを復元します。
この例では、B/INBOX/1 および C/INBOX/1 には新しい inode 番号が割り当てられ、メッセージデータはディスク上の新しい場所に書き込まれます。メッセージは 1 件だけ復元されます。2 件目のメッセージは最初のメッセージへのハードリンクです。
例 2: この例では、システムはフルバックアップと部分的な復元を次のように実行します。
フルバックアップを実行します。
ユーザー A のメールボックスを削除します。
ユーザー A のメールボックスを復元します。
A/INBOX/1 には新しい inode 番号が割り当てられます。
例 3: この例では、複数回の部分的な復元が必要となる可能性があります。
フルバックアップを実行します。
B/INBOX/1 と C/INBOX/1 は A/INBOX/1 へのリンクとしてバックアップされます。
ユーザー A と B のメールボックスを削除します。
ユーザー B のメールボックスを復元します。
復元ユーティリティーが、最初に A/INBOX を復元するよう管理者に要求します。
ユーザー A と B のメールボックスを復元します。
ユーザー A のメールボックスを削除します (任意)。
すべてのメッセージを部分的な復元で復元できるようにするためには、-i オプションを付けて imsbackup コマンドを実行します。-i オプションは必要に応じて各メッセージを複数回バックアップします。
ドライブやテープなど、バックアップデバイスが検索可能である場合、imsrestore は A/INBOX/1 が格納されている位置を検索し、B/INBOX/1 として復元します。UNIX パイプなど、バックアップデバイスが検索不能である場合、imsrestore はオブジェクト ID とリンクされているオブジェクトの ID をファイルに記録します。管理者は -r オプションを使用して imsrestore を再び呼び出し、欠落しているメッセージ参照を復元する必要があります。
増分バックアップされたメールボックスからメッセージを復元する際に、そのメールボックスがメッセージを復元するサーバーに存在する場合は、imesrestore を実行するだけでメッセージを復元できます。ただし、増分バックアップされたメールボックスからメッセージを復元する際に、そのメールボックスがすでに存在しない場合は、別の復元手順に従う必要があります。
メッセージストアサーバーに存在しないメールボックスを復元するには、次の手順のいずれかを使用します。
復元操作時に、ユーザーへのメッセージの配信を停止します。このためには、LDAP 属性の mailDeliveryOption に hold を設定します。
mboxutil -c コマンドでメールボックスを作成してから、imesrestore を使用します。
増分バックアップを復元するためにこれらの手順に従う必要がある理由は、次のとおりです。メールボックスが削除または移行された場合、imsrestore ユーティリティーはバックアップアーカイブに保存されたメールボックスの一意の ID 有効期間およびメッセージの一意の ID (UID) を使用してメールボックスを再作成します。
以前は、imsrestore は削除または移行されたメールボックスを再作成するときに、新しい UID 有効期間をメールボックスに、新しい UID をメッセージに割り当てました。その場合、キャッシュにメッセージが入っているクライアントはメールボックスの UID 有効期間およびメッセージの UID の同期をとりなおす必要がありました。クライアントは、新しいデータを再びダウンロードする必要があり、その結果、サーバーの作業負荷が増大しました。
新しい imsrestore の処理では、クライアントのキャッシュの同期は維持され、復元処理は透過的に実行され、パフォーマンスに悪影響を及ぼすことはありません。
メールボックスが存在する場合、imsrestore は新しい UID を復元されたメッセージに割り当てるので、新しい UID は既存のメッセージにすでに割り当てられている UID と矛盾しません。UID の一貫性を保証するために、復元操作時に imsrestore でメールボックスをロックします。ただし、imsrestore は、新しい UID 値を割り当てる代わりに、バックアップアーカイブからのメールボックスの UID 有効期間とメッセージ UID を使用するようになったため、増分バックアップおよび復元を実行すると UID の一貫性が保てなくなる場合があります。
imsbackup ユーティリティーの -d 日付オプションを使用して増分バックアップを実行する場合、復元操作を完了するために imsrestore を複数回呼び出す必要がある場合があります。増分バックアップを実行する場合、最後のフルバックアップとその後のすべての増分バックアップを復元する必要があります。
復元操作間に新しいメッセージをメールボックスに配信できますが、この場合、メッセージの UID に矛盾が生じることがあります。UID の矛盾が生じないようにするには、前述の手順のいずれかを実行する必要があります。