BackupZit

将 Microsoft 365 备份到自己的服务器

分步指南:把 Microsoft 365 租户的 Exchange Online 邮箱、OneDrive、SharePoint、日历和联系人备份到您自己掌控的存储——使用只读权限、去重、加密,并保留异地副本。

您将搭建什么

BackupZit 通过 Microsoft Graph,使用一个仅有只读权限的应用注册来读取 Microsoft 365 租户:租户中的任何内容都不会被修改或删除。任何可访问互联网的 BackupZit 代理都可以下载数据——例如控制台所在机器上的代理——并像其他备份一样保存:去重、加密,并带有保留策略、复制作业和还原测试。BackupZit 免费且开源(AGPLv3),不按用户收取许可费。

为什么 Microsoft 365 需要单独的副本?

Microsoft 负责服务的运行,但其中的数据由您负责:误删的邮箱、通过同步的 OneDrive 被加密的文件,或员工离职时被删除的帐户。回收站和保留设置位于同一租户中,并且会过期。保存在您自己存储上的备份是一份由您掌控的独立副本,位于租户及其管理员帐户之外。

Microsoft 和其他厂商也以云服务形式出售 Microsoft 365 备份,通常按用户或按 GB 计费。BackupZit 是自托管方案:数据存放在您的 NAS、服务器或 S3 存储桶中,唯一的成本是存储。

准备条件

  • 一个 BackupZit 控制台——使用下载页面上现成镜像创建的小型 Linux 虚拟机(2 vCPU、2–4 GB 内存、16–20 GB 磁盘),或在现有的 Debian、Ubuntu、AlmaLinux 或 Rocky Linux 服务器上运行安装脚本。
  • 一个负责下载数据的代理:Windows 或 Linux,需能通过 HTTPS 访问 login.microsoftonline.com、graph.microsoft.com,以及用于 OneDrive 和 SharePoint 文件的 *.sharepoint.com。控制台所在机器上的代理即可。
  • 备份存储:SFTP、SMB 共享、S3 兼容存储桶、Azure Blob Storage 或 BackupZit 加固存储库。
  • 租户的一位全局管理员,只需一次,用于注册应用并授予同意。

第 1 步 — 在 Microsoft Entra ID 中注册应用

每个租户一次,在 Microsoft Entra 管理中心中:

  1. App registrations → New registration:命名为例如 BackupZit,选择 Accounts in this organizational directory only,不设重定向 URI。在概述页面记下 Application (client) ID 和 Directory (tenant) ID。
  2. Certificates & secrets → New client secret:选择有效期(例如 24 个月),并立即复制机密的 Value——它只显示一次。Secret ID 不是机密本身。
  3. API permissions → Add a permission → Microsoft Graph → Application permissions(不是委托权限):
    备份内容权限
    邮件和 OneDriveUser.Read.All、Mail.Read、Files.Read.All
    日历和联系人另加 Calendars.Read、Contacts.Read
    SharePoint 网站另加 Sites.Read.All
  4. 点击 Grant admin consent for …。在此之前状态显示 Not granted,备份会被拒绝。

这些都只是读取权限。如需把应用限制在部分邮箱,Exchange 管理员可以添加应用程序访问策略或 RBAC for Applications 范围;范围之外的帐户会被报告为不可读。

第 2 步 — 添加存储目标

在控制台中打开存储并添加目标——例如 NAS 上的 SMB 共享用于第一份副本,带 Object Lock 的 S3 存储桶用于异地副本。保持加密备份(AES-256)开启(默认):邮件和文件在离开代理前会在代理上以 AES-256 加密。请把控制台显示的恢复密钥与备份分开保存,例如打印出来或放在密码管理器中。

第 3 步 — 创建 Microsoft 365 作业

  1. 在备份作业下创建一个类型为 Microsoft 365 的作业,并选择负责下载的代理。
  2. 输入第 1 步中的 Directory (tenant) ID、Application (client) ID 和 Client secret。机密会加密保存。
  3. 选择要备份的内容:邮件、OneDrive、日历和联系人、SharePoint 网站——可任意组合。
  4. 选择帐户:所有拥有邮箱或 OneDrive 的帐户(之后新增的帐户会自动包含;例外写在除了中,每行一个),或仅这些帐户。没有许可证的帐户会被跳过。SharePoint 网站也有同样的选择:所有网站并设置例外,或只列出地址,例如 https://contoso.sharepoint.com/sites/sales。
  5. 不必手动输入地址,点击从列表中选择:控制台会用刚输入的应用读取租户的帐户和网站,供您勾选。
  6. 选择存储目标、计划(例如每晚)和保留策略。

保存作业时,控制台会以该应用登录,并检查权限、帐户和网站,因此机密错误或缺少管理员同意会立即显示出来。

首次备份会下载全部内容。之后每次备份会重新列出文件夹,但只下载新增或更改的邮件和文件(已读、已标记、已移动或已编辑的邮件都算作更改);未更改的数据取自上一次备份。Microsoft 会限制应用的读取速度——当 Microsoft 要求时,BackupZit 会等待后继续,因此大型邮箱的首次备份可能需要数小时。

备份哪些内容

数据保存格式
邮件所有邮件文件夹及子文件夹;每封邮件连同附件完整保存为 .eml 文件,按日期和主题命名。Outlook、Thunderbird 和大多数邮件程序都能打开。
OneDrive所有文件和文件夹,保留修改时间。
日历每个日历;每个事件保存为 iCalendar 文件(.ics),包含时间、地点、参与者、提醒和重复规则。Outlook、Google 日历和 Thunderbird 都能导入。
联系人联系人和联系人文件夹,保存为 vCard(.vcf)。
SharePoint每个网站的每个文档库,包括所有文件夹和文件。Teams 文件存放在 SharePoint 中,也会被备份。

每个备份中每个帐户一个文件夹——ana@contoso.com/Mail/Inbox/…、…/OneDrive/…、…/Calendar/…、…/Contacts/…——以及 SharePoint/<网站>/<文档库>/…。由于都是标准格式,即使没有 BackupZit 文件也仍可读取。

第 4 步 — 保留异地副本(3-2-1)

添加一个类型为备份副本的作业,以 Microsoft 365 作业为源,以另一地点的第二个目标为目的地——带 Object Lock 的 S3 存储桶或加固存储库可使该副本不可变。只发送目标中尚不存在的数据,副本有自己的保留策略。自动还原测试(默认每周一次,位于设置 → 还原测试)会从最新备份中还原随机样本,并按已保存的校验和逐字节验证。

还原

  • 浏览并下载:在一次备份运行中打开某个帐户的邮件文件夹、OneDrive、日历或联系人,或某个 SharePoint 网站;勾选邮件、事件、文件或文件夹并下载——单个文件按原样下载,多个文件打包为 ZIP。在 Outlook 中打开 .eml 文件,或将其拖入邮箱。
  • 还原到文件夹,可在任意代理上执行:邮件为 .eml,事件为 .ics,联系人为 .vcf,OneDrive 和 SharePoint 文件保持原样,位于 <文件夹>/<帐户>/… 和 <文件夹>/SharePoint/… 下。

需要了解的限制

  • 暂不支持直接还原到邮箱或 OneDrive(已在计划中;届时只会写入新文件夹,绝不覆盖)。目前可下载或还原到文件夹。
  • 不包括:Teams 聊天和频道消息、SharePoint 列表和页面(只备份文档库)、日历事件附件、联系人照片、系列中单独修改的事件,以及没有用户帐户的共享邮箱。
  • 日历事件时间以 UTC 保存。

故障排除

  • AADSTS7000215 / invalid client secret:复制的是机密的 ID 而不是 Value,或机密已过期——创建新机密并填入作业。
  • 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 获得商业支持(仅提供英文服务)。