Что вы настроите
BackupZit читает клиент Microsoft 365 через Microsoft Graph с помощью регистрации приложения, у которой есть права только на чтение: в клиенте ничего не изменяется и не удаляется. Данные скачивает любой агент BackupZit с доступом в интернет — например, агент на машине с консолью — и сохраняет их, как любую другую копию: с дедупликацией, шифрованием, хранением, заданиями копирования и тестами восстановления. BackupZit бесплатен и с открытым исходным кодом (AGPLv3), без лицензий на пользователя.
Зачем отдельная копия Microsoft 365?
Microsoft отвечает за работу сервиса, но за данные в нём отвечаете вы: почтовый ящик, удалённый по ошибке, файлы, зашифрованные через синхронизированный OneDrive, или учётная запись, удалённая при уходе сотрудника. Корзины и параметры хранения находятся в том же клиенте и истекают. Копия на вашем хранилище — независимая копия под вашим контролем, вне клиента и его учётных записей администраторов.
Microsoft и другие поставщики продают резервное копирование Microsoft 365 и как облачный сервис, обычно с оплатой за пользователя или за гигабайт. BackupZit — вариант на собственном сервере: данные попадают на ваш NAS, сервер или бакет S3, а единственные расходы — хранилище.
Что нужно
- Консоль BackupZit — небольшая Linux-ВМ (2 vCPU, 2–4 ГБ ОЗУ, диск 16–20 ГБ) из готового образа со страницы загрузки или скрипт установки на существующем сервере 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:
- 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 секрета — оно показывается только один раз. Secret ID — это не секрет.
- API permissions → Add a permission → Microsoft Graph → Application permissions (не делегированные):
Что копировать Разрешения Почта и OneDrive User.Read.All,Mail.Read,Files.Read.AllКалендари и контакты также Calendars.Read,Contacts.ReadСайты SharePoint также Sites.Read.All - Нажмите Grant admin consent for …. До этого статус показывает Not granted, и копирование отклоняется.
Это только права на чтение. Чтобы ограничить приложение отдельными ящиками, администратор Exchange может добавить политику доступа приложений или область RBAC for Applications; учётные записи вне её будут отмечаться как недоступные для чтения.
Шаг 2 — Добавьте хранилище
В консоли откройте Хранилище и добавьте место назначения — например, общую папку SMB на NAS для первой копии и бакет S3 с Object Lock для внешней копии. Оставьте включённым Шифровать копии (AES-256) (по умолчанию): почта и файлы шифруются AES-256 на агенте до того, как покинут его. Храните ключ восстановления, который покажет консоль, отдельно от копий — например, распечатанным или в менеджере паролей.
Шаг 3 — Создайте задание Microsoft 365
- В разделе Задания копирования создайте задание типа Microsoft 365 и выберите агент, который будет скачивать данные.
- Введите Directory (tenant) ID, Application (client) ID и Client secret из шага 1. Секрет хранится в зашифрованном виде.
- Выберите, что копировать: Почта, OneDrive, Календари и контакты, Сайты SharePoint — в любом сочетании.
- Выберите учётные записи: Все учётные записи с почтовым ящиком или OneDrive (добавленные позже включаются автоматически; исключения в поле Кроме, по одному на строку) или Только эти учётные записи. Учётные записи без лицензии пропускаются. Для SharePoint тот же выбор действует для сайтов: все сайты с исключениями или только указанные адреса, например
https://contoso.sharepoint.com/sites/sales. - Вместо ввода адресов нажмите Выбрать из списка: консоль прочитает учётные записи и сайты клиента через только что введённое приложение и позволит отметить их.
- Выберите хранилище, расписание (например, каждую ночь) и хранение.
При сохранении консоль входит от имени приложения и проверяет разрешения, учётные записи и сайты, поэтому неверный секрет или отсутствие согласия администратора видны сразу.
Первая копия скачивает всё. Каждая следующая заново перечисляет папки, но скачивает только новые или изменённые сообщения и файлы (прочитанные, помеченные, перемещённые или отредактированные сообщения считаются изменёнными); неизменённые данные берутся из предыдущей копии. Microsoft ограничивает скорость чтения для приложений — BackupZit ждёт, когда Microsoft просит об этом, и продолжает, поэтому первая копия больших ящиков может занять часы.
Что копируется
| Данные | Сохраняются как |
|---|---|
| Почта | Все папки и подпапки; каждое сообщение целиком с вложениями как файл .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 как источником и вторым местом назначения в другом месте — бакет S3 с Object Lock или защищённый репозиторий делают эту копию неизменяемой. Отправляются только данные, которых ещё нет в месте назначения, а у копии своё хранение. Автоматические тесты восстановления (по умолчанию еженедельно, в Настройки → Тесты восстановления) восстанавливают случайную выборку из последней копии и сверяют каждый байт с сохранёнными контрольными суммами.
Восстановление
- Просмотр и скачивание: в запуске копирования откройте папки почты, OneDrive, календари или контакты учётной записи либо сайт SharePoint; отметьте сообщения, события, файлы или папки и скачайте их — один файл как есть, несколько архивом ZIP. Откройте файлы
.emlв Outlook или перетащите их в почтовый ящик. - Восстановить в папку на любом агенте: сообщения как
.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 (только на английском).