Восстановление отдельных элементов из резервной копии Carbonio

Одним из наиболее распространенных случаев использования резервных данных является восстановление отдельных элементов — крайне важных писем, встреч, контактов и файлов, случайно удаленных пользователем. Благодаря использованию в Carbonio транзакционного резервного копирования, каждый новый элемент в системе резервируется прямо во время своего создания и поэтому у администратора есть возможность относительно быстро и без проблем восстановить удаленное письмо, если оно всё ещё присутствует в резервной копии. В данной статье мы расскажем о том, как это сделать.

de58fbdd45292b61052252752603cf22.png

Данная инструкция подходит только для пользователей коммерческой версии Carbonio.

Процесс восстановления единичных элементов в Carbonio реализован таким образом, чтобы администратору требовалось знать минимум информации о нем. Так, для восстановления удаленного элемента потребуется знать только его идентификатор.

Идентификатор элемента является составляющей его метаданных. Узнать идентификатор существующих письма или встречи пользователь может просмотрев их исходный код.

522768c7086e37faf0c088c75a7c4451.png284ae491b52d3a15c64e6bac3a566e8b.png

Исходный код откроется в новой вкладке, а их идентификатор можно узнать в адресной строке. В нашем случае это 541 для встречи и 348 для письма

cf0dc41de9db58897cd7b1b3a98dc985.png

Нативный поиск элементов и их идентификаторов

Для поиска идентификатора элемента непосредственно в резервной копии можно использовать команду carbonio backup doItemSearch c указанием различных параметров, таких как:

  • backup_path — если вы ищете элемент не в основной папке резервного копирования Carbonio, здесь можно указать альтернативный путь

  • id — заранее зная идентификатор, можно найти элемент по нему

  • search_string — параметр для регистрозависимого поиска по текстовому запросу

  • type — здесь можно указать тип элемента

  • before — дата, до которой осуществляется поиск (dd/MM/yyyy HH: mm: ss)

  • after — дата, после которой осуществляется поиск (dd/MM/yyyy HH: mm: ss)

  • search_filter — позволяет искать элементы среди удаленных и неудаленных.

53be3eb31fe14230f04f425028f5af4b.png

Для примера найдем письма, которые учетной записи user@carbonio.local, которые были получены или отправлены с 10:00 по 15:00 11 декабря 2023 года и пока что не удалены. 

carbonio backup doItemSearch user@carbonio.local type message after »11/12/2023 10:00:00» before »11/12/2023 15:00:00» search_filter not_deleted

2a9a93f0916a622462487830300da9e0.png

Имя файла, которое указано в конце пути «Item File» и есть идентификатор искомого письма.

Для того, чтобы убедиться в том, что нашли именно то, что нужно, используйте команду carbonio backup getItem. С ее помощью можно получить ключевую информацию о хранимом элементе и понять, нашли вы то, что искали, или ошиблись. 

9c69449f1f70bd09f659282e5582ef47.png

Альтернативные способы поиска элементов и их идентификаторов

Идентификатор также можно найти в логах. Каждое действие, в результате которого появляется новый элемент, записывается в /opt/zextras/mailbox.log и может быть найдено.

Пример соответствующей записи для создания новой встречи:

2023–12–11 11:02:21,670 INFO  [qtp739737502–77637://mail.carbonio.local/service/soap/CreateAppointmentRequest] [name=user@carbonio.local; mid=7; ip=192.168.100.62; oip=192.168.100.1; port=57912; ua=CarbonioWebClient — Firefox 120.0 (Windows)/23.11.0_ZEXTRAS_202311 carbonio 20231109–1136 FOSS; soapId=7b269dfd;] calendar — Adding CalendarItem: id=541, Message-ID=»<380380423.112.1702292541594.JavaMail.zextras@carbonio.local>», folderId=10, subject=«Тестовая встреча», UID=0e4d0b3e-6406–4ff4-a527–2e3b5a9d1833

Пример соответствующей записи для получения нового письма

2023–12–11 11:22:20,315 INFO  [LmtpServer-2] [name=user@carbonio.local; mid=7; ip=192.168.100.62;] mailop — Adding Message: id=542, Message-ID=<692938977.122.1702293739374.JavaMail.zextras@carbonio.local>, parentId=-1, folderId=2, folderName=Inbox acct=5552a648-e80d-404f-81aa-302756cc2b09

Зная имя отправителя, получателя, а также примерное время получения письма, найти его идентификатор в логах не составит особого труда.

Имея идентификатор учетной записи и номер элемента, можно без труда найти его в резервной копии. Так, полученное письмо будет лежать в файле /opt/carbonio-backup/accounts/5552a648-e80d-404f-81aa-302756cc2b09/items/42/542. Созданную встречу можно будет найти в /opt/carbonio-backup/accounts/5552a648-e80d-404f-81aa-302756cc2b09/items/41/541

cd8813df518c67f91c61dd2c22c7aacb.png

Каждый из этих параметров является указателем пути к нужному элементу папке accounts в пути резервного копирования. 

9af9122b97d08c9824b825bee24fd32f.png

В папке accounts все хранимые элементы находятся в папках, озаглавленных согласно идентификаторам пользователей.Идентификатор пользователя можно получить в командной строке, введя команду carbonio prov getAccount user@carbonio.local | grep -i zimbraid

В рамках этой команды мы запрашиваем информацию об искомой учетной записи и осуществляем регистронезависимый поиск по нужному нам параметру в ее выводе.

6ea9bbc6491b9fd85f2d9d456474e3df.png

В ее выводе будет содержаться 32-символьный идентификатор, который впоследствии будет использоваться для поиска элементов.

Просмотр этого идентификатора возможен и из консоли администратора. Для этого нужно перейти в раздел «Домены», выбрать нужный домен, выбрать нужную вам учетную запись, кликнуть по ней и в поле ID можно будет обнаружить доступный для копирования идентификатор выбранной учетной записи.

cd76ca5dcc595d8d4f3c432a352a653e.png

В каждой из этих папок содержатся метаданные пользователей, а также разбитые по номерам элементы учетных записей.

8d92f72e54d33fe467b08a25b6dc0e27.png

Если же логи не сохранились, элементы могут быть найдены с применением стандартных утилит GNU/Linux для поиска по файлам. Все данные хранятся в виде обычного не шифрованного текста, а зная идентификатор учетной записи, можно значительно сузить диапазон поиска.

Восстановление элемента

Когда нужный элемент найден, можно его восстановить. Это делается при помощи команды carbonio backup doItemRestore. Как и в предыдущем случае для ее работы достаточно имени учетной записи, а также идентификатора нужного вам элемента.

f70973608a0d22eab64533228a2d05aa.png

Помимо обязательных параметров можно использовать и дополнительные среди них:

  • date — дата, по состоянию на которую следует восстановить удаленный элемент

  • restore_folder — имя папки, в которую следует восстановить удаленный элемент

К примеру, carbonio backup doItemRestore user@carbonio.local 542 date last restore_folder /Drafts восстановит последнюю сохраненную версию письма из резервной копии в папку «Черновики».

Таким образом, процесс восстановления отдельного в Carbonio реализован достаточно удобно и позволяет администраторам в кратчайшие сроки восстанавливать удаленные письма, встречи, контакты и файлы для пользователей.

По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.

© Habrahabr.ru