# Локальный архив (/ru/docs/zm/archive)

Сделайте текст встреч доступным для поиска и сохраните записи до окончания срока хранения в Zoom.
Выберите загрузку встреч организатора, импорт готовой расшифровки или архивирование облачного аудио
и видео. Текст в базе и медиафайлы в папке — разные копии; резервная запись не становится автоматически
доступной для поиска в базе.

## Выберите, что сохранить [#выберите-что-сохранить]

| Что есть | Команда | Что проверить |
| --- | --- | --- |
| Встречи организатора, доступные приложению | `zm pull --lookback-days 7` | Список, расшифровку одной встречи и недостающие части |
| Скачанные VTT-файлы | `zm import ./downloaded-transcripts` | Дату и название относительно оригинала |
| Облачные записи | Список, загрузку или синхронизацию записей | Манифест папки и контрольные суммы |
| Архивные VTT для поиска | Импорт архива | Подтверждение импорта, затем поиск текста |

Для API подключите приложение с [разрешениями нужной задачи](/llms.mdx/docs/ru/zm/zoom-app/content.md#add-archive-or-management-access).
Импорт файлов и локальная проверка архива не требуют входа в браузере. Начните с одной встречи,
затем настройте повторные загрузки или ежедневную резервную копию.

## Где хранятся встречи [#где-хранятся-встречи]

Вход, загрузка записей и удалённые команды работают независимо от базы встреч. Импорт, загрузка,
наблюдение за папкой и чтение используют опубликованный общий адаптер SQLite. Соединения открываются
по необходимости и закрываются до успешного вывода. Данные сохраняются в общей базе WireCat;
`MESSAGING_STORE` задаёт путь. Общая модель, экспорт и обработка — в `@wirecat/cli-messaging/meetings`.

Общая база называется `wirecat.db`. Открытие стандартного пути удаляет старую незашифрованную
`messages.db` и файлы `-wal`, `-shm`, без переноса данных. Они сохраняются при заданном
`MESSAGING_STORE`, явном пути или открытой другим процессом старой базе. Следующее открытие стандартного
пути повторяет удаление после завершения процесса.

Перед импортом или загрузкой выберите [локальный профиль](/llms.mdx/docs/ru/zm/sessions/content.md#select-a-local-profile).

## Загрузить встречи организатора [#загрузить-встречи-организатора]

Выберите API, загрузите недавний период и проверьте результат:

```sh
zm config set source api
zm pull --lookback-days 7
zm meetings list --json
zm meetings transcript <meeting-id> --json
```

Используйте ID из списка. `zm pull` получает встречи организатора и доступных участников,
расшифровки и резюме ИИ. Он не создаёт отсутствующий текст. Если его нет, проверьте
[создание и хранение расшифровок](/llms.mdx/docs/ru/zm/zoom-app/content.md#before-your-first-zm-pull).

`pull --lookback-days 7` снова проверяет семь дней; `pull --since 2026-10-01` позволяет вернуться к
более ранним встречам с поздней расшифровкой. Один курсор не гарантирует повторную проверку.
Загрузки одного аккаунта выполняйте последовательно: одновременные могут создавать события.
Ошибка встречи не меняет курсор, поэтому следующая загрузка повторит её.

## Скачанные расшифровки [#скачанные-расшифровки]

Для встречи, где вы были участником, получите VTT у организатора или скачайте его, если разрешено.
Участие не гарантирует доступ. Положите файл прямо в выбранную папку и назовите по дате, времени
и теме, например `2026-10-01_1000_example-planning.vtt`. Переименование не меняет текст внутри.

```sh
zm config set account.profile personal
zm config set files.timezone Europe/Madrid
zm import ./downloaded-transcripts
zm meetings list --json
```

Источник читает обычные `.vtt` прямо в папке, без вложенных каталогов. Имена имеют формат
`YYYY-MM-DD_HHMM_topic-slug.vtt`. ID выводится из времени и нормализованной темы; UUID Zoom в этих
файлах нет. Участники неизвестны: имена говорящих остаются текстом без угадывания личности.
Проверьте дату, название и расшифровку до добавления проекта или людей.

Время по умолчанию UTC. `files.timezone` задаёт пояс IANA, использованный при создании имён, например
`Europe/Madrid`. Неоднозначное или несуществующее время перехода на летнее время отклоняется.
Разное содержимое одного нормализованного ключа — ошибка: исправьте конфликт перед повтором.
Неверное имя вызывает явную ошибку, а не незаметный импорт части папки.

## Наблюдать за новыми встречами [#наблюдать-за-новыми-встречами]

`zm watch --source api --lookback-days 7 --jsonl` повторно загружает API. Аргумент папки выбирает
файлы, иначе используется настройка; для файлов можно задать `files.folder`. API требует сети,
поддерживает `--since` и перекрытие 0–31 день. `--since` — начальная граница; после успешной записи
курсора используется курсор с перекрытием. При ошибке начальная граница сохраняется. Перекрытие
также вычитается из начального `--since`.
`--interval` задаёт паузу между завершёнными циклами. Профиль, источник, файловые настройки и клиент
OAuth фиксируются до начала: после изменений перезапустите наблюдение. Циклы не перекрываются,
закрывают базу до квитанции. Ctrl-C останавливает процесс.

Для папки расшифровок:

```sh
zm watch ./downloaded-transcripts --interval 10s --jsonl
```

Каждый цикл снова просматривает папку, включая исправленные старые файлы. Импорт последовательный,
база закрывается до квитанции; следующий цикл ждёт освобождения вывода. Интервал — от секунды до суток.
Процесс работает в текущем терминале до Ctrl-C. Без интерактивного терминала нужен `--jsonl`;
поток не использует `--json`. Сначала выберите профиль, как для разового импорта.

Если отмена приходит при закрытии базы, завершённой квитанции даётся до секунды на вывод.
Заблокированный канал останавливает этот вывод; новый цикл не начинается.

## Архивировать облачные записи [#архивировать-облачные-записи]

`zm` сохраняет доступные видео, аудио, расшифровки и чат. Найдите встречу и скачайте файлы в явный каталог:

```sh
zm recordings list --from 2026-10-01 --to 2026-10-10 --json
zm recordings show <zoom-occurrence-uuid> --json
zm recordings download <zoom-occurrence-uuid> --destination ./zoom-archive --json
zm recordings archive verify ./zoom-archive --offline --json
```

Замените `<zoom-occurrence-uuid>` на UUID из списка записей, а не локальный ID или числовой номер
встречи Zoom. Подтверждение отмечает сохранённые и недоступные файлы. Проверка сравнивает локальные
файлы с манифестом, но не доказывает наличие всех записей в Zoom. При пустом списке проверьте даты,
аккаунт организатора, доступность облачных записей и разрешения, прежде чем расширять период.

Для истории по месяцам:

```sh
zm recordings sync --from 2026-01-01 --to 2026-10-10 --destination ./zoom-archive --jsonl
```

Даты должны идти по порядку и охватывать не более десяти календарных лет. Запросы выполняются
помесячно, UUID очищаются от повторов, загрузки последовательные. Каждая JSONL-квитанция описывает
завершённую встречу; прежние квитанции и файлы остаются при поздней ошибке. Повторите диапазон или
недавний период для новых файлов. Выбранный профиль сохраняет прогресс и очередь записей.
`--recheck-from YYYY-MM-DD` повторно проверяет даты, `--checkpoint` задаёт файл состояния.
`--max-pages` и `--max-entries` ограничивают обнаружение. Без терминала нужен `--jsonl`.

Контрольные точки подтверждают прежние загрузки, а не текущую целостность или полноту доступных
записей провайдера. `recordings archive verify` проверяет файлы. `--no-resume` заново просматривает
весь диапазон без сохранённого прогресса.

Список записей принимает диапазон до 31 дня. Файлы потоково пишутся на диск, видео не загружается
целиком в память. Предел файла по умолчанию 20 ГиБ, меняется через `--max-bytes`. `--file-ids` выбирает
ID через запятую. Сохраняются только завершённые доступные файлы; прочие перечисляет квитанция.
Доступ зависит от разрешений, срока хранения и функций аккаунта. Запись встречи, где вы участвовали,
не обязательно доступна вашему API.

Манифест содержит метаданные, размеры и SHA-256, без подписанных URL и токенов. Повторная загрузка
проверяет файлы и пропускает совпадающие. Ничего не перезаписывается; при несовпадении нужен новый
каталог. Выбранный профиль сохраняет проверенные частичные данные; продолжение допускается только
при совпадении сильного валидатора и диапазона ответа. Изменённое представление безопасно начинается
заново. Явный `--resume` требует профиль; `--no-resume` и загрузка без профиля используют временные
части. Завершённые записи манифеста сохраняются при поздней ошибке.

## Блокировки и восстановление [#блокировки-и-восстановление]

Локальная проверка работает без входа и базы. Одновременные записи в один каталог запрещены.
После сбоя просмотрите `recordings archive locks` и план `recordings archive recover`. `--yes`
убирает распознанные блокировки завершившихся процессов этого компьютера; активные, чужие и неизвестные
сохраняются. Убираются только маркеры блокировок. Продолжение может восстановить завершённую публикацию,
если принадлежащий операции журнал, проверенная часть и итоговый файл совпадают. Посторонние файлы защищены.

## Ежедневные копии [#ежедневные-копии]

Выберите абсолютный каталог и пояс таймера:

```sh
zm recordings schedule create --name daily --destination /home/AliceExample/zoom-archive --from 2026-01-01 --at 03:15 --timezone Europe/Madrid --json
zm recordings schedule list --offline --json
zm recordings schedule run <schedule-id> --jsonl
zm recordings schedule disable <schedule-id> --yes --json
```

Создание сначала показывает план. `--yes` устанавливает пользовательский таймер systemd на Linux;
`--dry-run` важнее. Автоматическая установка только для Linux. Таймер следует поясу IANA, а поиск
записей — датам UTC и по умолчанию повторно проверяет семь дней. Нужен доступный пользовательский
systemd; планы работают и на других платформах. Задание сохраняет профиль, публичный client ID,
каталог и пути запуска и настроек, без секретов. Для выполнения его профиль и клиент должны оставаться
выбранными. Статус описывает последнюю подтверждённую операцию; список и просмотр не опрашивают таймер.
Отключение останавливает таймер, сохраняя задания и файлы.

## Читать и импортировать архивные расшифровки [#читать-и-импортировать-архивные-расшифровки]

Облачные файлы имеют хешированные имена, их идентичность находится в манифесте:

```sh
zm recordings archive transcript ./zoom-archive --offline --json
zm recordings archive search ./zoom-archive "example plan" --limit 100 --offline --json
```

Обе команды проверяют размер и SHA-256 каждого прочитанного WebVTT до выдачи фрагментов. Поиск
останавливается после одного совпадения сверх лимита; следующие файлы не читает. Вход, настройки
и база не нужны. `--uuid` или `--file-ids` выбирают данные, `--max-bytes` меняет предел 8 МиБ на файл.
Поиск нормализует Unicode и регистр текста, не ищет имена говорящих. Лимит 100, максимум 1000.
`hasMore` сообщает ещё одно совпадение: увеличьте лимит или сузьте встречу, файл или запрос.
Курсора нет. Вывод ограничен `--max-output-bytes`; ошибка проверки не выдаёт успешный результат.

Для импорта в выбранный профиль:

```sh
zm recordings archive import ./zoom-archive --offline --jsonl
```

Все выбранные VTT проверяются до открытия базы. Пределы — 8 МиБ на файл и 64 МиБ суммарно;
`--max-bytes` и `--max-total-bytes` меняют их. Выберите `--uuid` или `--file-ids`. Встреча добавляется
атомарно по исходному UUID Zoom, сохраняя другие расшифровки, сводки, участников и курсор загрузки.
Исправления сохраняют старые версии; одинаковые хеши не создают дублей. Если время начала неизвестно,
добавление возможно только в существующую встречу. Квитанции показывают подтверждённые или недоступные
встречи. При поддержке точного результата они показывают создание встречи, вставку, повтор и замещение
из той же транзакции; старые адаптеры не угадывают счётчики. Ранее подтверждённые встречи могут
остаться сохранёнными, если следующее добавление не удалось.

## Расшифровать локальное аудио [#расшифровать-локальное-аудио]

Создайте отдельную расшифровку файла для уже сохранённой встречи:

```sh
zm meetings transcribe 1 ./AliceExample.wav --model parakeet-v3 --json
zm meetings transcribe 1 ./AliceExample.wav --model parakeet-v3 --yes --json
```

План проверяет вход и описывает выбранный компонент без его открытия. `--yes` распознаёт уже
установленным локальным компонентом и атомарно добавляет полную расшифровку; `--dry-run` важнее.
Ничего автоматически не устанавливается. Принимается PCM16 WAV, моно или стерео, 16 или 48 кГц;
видео не декодируется. `--models-dir` выбирает абсолютный каталог компонента. Размер, время,
число сегментов и объём текста ограничиваются через `--max-bytes`, `--max-duration`, `--max-segments`
и `--max-text-bytes`. Окна до 30 секунд дают приблизительные границы времени. Говорящие неизвестны.
Расшифровки провайдера и история сохраняются; квитанция содержит счётчики транзакции и происхождение.

Распознавание требует установленного поддерживаемого речевого компонента; руководство не предполагает,
что он уже есть. Преобразуйте неподдерживаемое аудио/видео в указанный WAV знакомым инструментом.
После применения откройте `meetings transcript` и проверьте слова и временные окна перед использованием
как источника. Затем переходите к [поиску и ссылкам](/llms.mdx/docs/ru/zm/search/content.md).
