構築する内容
BackupZit は、読み取り専用の権限だけを持つアプリ登録を使い、Microsoft Graph 経由で Microsoft 365 テナントを読み取ります。テナント内のものは何も変更・削除されません。インターネットに接続できる任意の BackupZit エージェント(たとえばコンソールのマシン上のエージェント)がデータをダウンロードし、ほかのバックアップと同様に保存します。重複排除と暗号化を行い、保持、コピージョブ、復元テストも使えます。BackupZit は無料のオープンソース(AGPLv3)で、ユーザーごとのライセンスはありません。
Microsoft 365 に別のコピーが必要な理由
Microsoft はサービスの稼働を担いますが、その中のデータは利用者の責任です。誤って削除したメールボックス、同期した OneDrive 経由で暗号化されたファイル、退職者のアカウント削除などが起こり得ます。ごみ箱や保持設定は同じテナント内にあり、期限が切れます。自社ストレージ上のバックアップは、テナントとその管理者アカウントの外にある、自社で管理する独立したコピーです。
Microsoft や他のベンダーも Microsoft 365 バックアップをクラウドサービスとして販売しており、通常はユーザー単位またはギガバイト単位の課金です。BackupZit はセルフホスト型の選択肢で、データは自社の NAS、サーバー、S3 バケットに保存され、費用はストレージだけです。
必要なもの
- BackupZit コンソール:ダウンロードページの既成イメージから作る小さな Linux VM(2 vCPU、2〜4 GB RAM、16〜20 GB ディスク)、または既存の Debian、Ubuntu、AlmaLinux、Rocky Linux サーバーでのインストールスクリプト。
- データをダウンロードするエージェント:Windows または Linux。
login.microsoftonline.com、graph.microsoft.com、OneDrive と SharePoint のファイル用に*.sharepoint.comへ HTTPS で接続できること。コンソールのマシン上のエージェントで十分です。 - バックアップ先ストレージ:SFTP、SMB 共有、S3 互換バケット、Azure Blob Storage、BackupZit の堅牢化リポジトリ。
- テナントのグローバル管理者(アプリの登録と同意のために 1 回だけ)。
手順 1 — Microsoft Entra ID でアプリを登録
テナントごとに 1 回、Microsoft Entra 管理センターで行います:
- App registrations → New registration:名前を例えば
BackupZitとし、Accounts in this organizational directory only を選択、リダイレクト URI はなしにします。概要ページで Application (client) ID と Directory (tenant) ID を控えます。 - Certificates & secrets → New client secret:有効期間(例:24 か月)を選び、シークレットの Value をすぐにコピーします。表示は 1 回だけです。Secret ID はシークレットではありません。
- API permissions → Add a permission → Microsoft Graph → Application permissions(委任されたアクセス許可ではありません):
バックアップ対象 アクセス許可 メールと OneDrive User.Read.All、Mail.Read、Files.Read.All予定表と連絡先 追加で Calendars.Read、Contacts.ReadSharePoint サイト 追加で Sites.Read.All - Grant admin consent for … をクリックします。それまでは状態が Not granted と表示され、バックアップは拒否されます。
これらは読み取り専用のアクセス許可です。アプリを一部のメールボックスに限定するには、Exchange 管理者がアプリケーションアクセスポリシーまたは RBAC for Applications のスコープを追加できます。範囲外のアカウントは読み取り不可として報告されます。
手順 2 — ストレージを追加
コンソールでストレージを開いて保存先を追加します。たとえば 1 つ目のコピーには NAS の SMB 共有、オフサイトコピーには Object Lock 付きの S3 バケットを使います。バックアップを暗号化(AES-256)はオンのままにしてください(既定)。メールとファイルはエージェントを出る前にエージェント上で AES-256 で暗号化されます。コンソールに表示されるリカバリーキーは、印刷するかパスワードマネージャーに入れるなどして、バックアップとは別に保管してください。
手順 3 — Microsoft 365 ジョブを作成
- バックアップ ジョブで種類が Microsoft 365 のジョブを作成し、ダウンロードを行うエージェントを選択します。
- 手順 1 の Directory (tenant) ID、Application (client) ID、Client secret を入力します。シークレットは暗号化して保存されます。
- バックアップ対象を選びます:メール、OneDrive、予定表と連絡先、SharePoint サイトを自由に組み合わせられます。
- アカウントを選びます:メールボックスまたは OneDrive を持つすべてのアカウント(後から追加したアカウントも自動的に含まれます。例外は除外に 1 行ずつ)またはこれらのアカウントのみ。ライセンスのないアカウントはスキップされます。SharePoint のサイトにも同じ選択が適用されます:例外付きですべてのサイト、または
https://contoso.sharepoint.com/sites/salesのように指定したアドレスのみ。 - アドレスを入力する代わりに一覧から選択をクリックすると、コンソールが入力したアプリでテナントのアカウントとサイトを読み取り、チェックを付けて選べます。
- ストレージ、スケジュール(例:毎晩)、保持を選びます。
ジョブを保存すると、コンソールはそのアプリとしてサインインし、アクセス許可、アカウント、サイトを確認します。シークレットの誤りや管理者の同意の不足はすぐにわかります。
初回のバックアップはすべてをダウンロードします。以降は毎回フォルダーを一覧し直しますが、ダウンロードするのは新規または変更されたメッセージとファイルだけです(既読、フラグ付け、移動、編集されたメッセージは変更とみなされます)。変更のないデータは前回のバックアップから引き継がれます。Microsoft はアプリの読み取り速度を制限しており、BackupZit は Microsoft に求められると待ってから再開するため、大きなメールボックスの初回バックアップには数時間かかることがあります。
バックアップ対象
| データ | 保存形式 |
|---|---|
| メール | すべてのフォルダーとサブフォルダー。各メッセージは添付ファイルを含めて完全な .eml ファイルとして、日付と件名で名前を付けて保存されます。Outlook、Thunderbird、ほとんどのメールソフトで開けます。 |
| OneDrive | すべてのファイルとフォルダー(更新日時付き)。 |
| 予定表 | すべての予定表。各予定は時刻、場所、出席者、アラーム、繰り返しを含む iCalendar ファイル(.ics)として保存されます。Outlook、Google カレンダー、Thunderbird でインポートできます。 |
| 連絡先 | 連絡先と連絡先フォルダーを vCard(.vcf)で保存。 |
| SharePoint | 各サイトのすべてのドキュメントライブラリ(すべてのフォルダーとファイルを含む)。Teams のファイルは SharePoint にあるため、これも含まれます。 |
バックアップにはアカウントごとに 1 つのフォルダーがあります(ana@contoso.com/Mail/Inbox/…、…/OneDrive/…、…/Calendar/…、…/Contacts/…)。さらに SharePoint/<サイト>/<ライブラリ>/… があります。標準形式なので、BackupZit がなくてもファイルを読めます。
手順 4 — オフサイトコピーを保持(3-2-1)
種類がバックアップ コピーのジョブを追加し、Microsoft 365 ジョブをソースに、別の場所にある 2 つ目の保存先を指定します。Object Lock 付きの S3 バケットや堅牢化リポジトリを使えば、このコピーは変更不可になります。保存先にまだないデータだけが送信され、コピーには独自の保持があります。自動復元テスト(既定は毎週、設定 → 復元テスト)は最新のバックアップからランダムなサンプルを復元し、保存済みのチェックサムと 1 バイトずつ照合します。
復元
- 参照とダウンロード:バックアップの実行で、アカウントのメールフォルダー、OneDrive、予定表、連絡先、または SharePoint サイトを開き、メッセージ、予定、ファイル、フォルダーにチェックを付けてダウンロードします(1 つならそのまま、複数なら ZIP)。
.emlファイルは Outlook で開くか、メールボックスにドラッグできます。 - 任意のエージェントでフォルダーに復元:メッセージは
.eml、予定は.ics、連絡先は.vcf、OneDrive と SharePoint のファイルは元のまま、<フォルダー>/<アカウント>/…と<フォルダー>/SharePoint/…の下に復元されます。
知っておくべき制限
- メールボックスや OneDrive への直接復元はまだできません(予定されています。新しいフォルダーにのみ書き込み、上書きはしません)。現時点ではダウンロードするかフォルダーに復元します。
- 対象外:Teams のチャットとチャネルメッセージ、SharePoint のリストとページ(ドキュメントライブラリのみ対象)、予定の添付ファイル、連絡先の写真、定期的な予定の個別に変更された回、ユーザーアカウントのない共有メールボックス。
- 予定の時刻は UTC で保存されます。
トラブルシューティング
- AADSTS7000215 / invalid client secret:シークレットの Value ではなく ID をコピーしたか、シークレットの期限が切れています。新しいシークレットを作成してジョブに入力してください。
- Missing application permissions / Authorization_RequestDenied:アクセス許可をアプリケーションのアクセス許可として追加し、Grant admin consent をクリックします。
- The account has no Exchange Online mailbox:そのアカウントには Exchange ライセンスがありません(または連絡先です)。ジョブから外してください。
- 警告付きの実行では、読み取れなかったメッセージやファイル(OneNote ノートブックなど)が一覧表示されます。バックアップの残りは完全です。
次のステップ
BackupZit をダウンロードして、すべての Microsoft 365 機能を確認するか、コンソール内蔵ガイドの Microsoft 365 の章をお読みください。同じコンソールでサーバーや仮想マシンもバックアップできます。Proxmox VE と Hyper-V のガイドもご覧ください。質問は GitHub Discussions で歓迎しています。企業向けには MaxZit が有償サポートを提供しています(英語のみ)。