Как настроить автоматическую архивацию EPG с историей на 30 дней: сохранение расписания ради планирования и восстановления

Как настроить автоматическую архивацию EPG с историей на 30 дней: сохранение расписания ради планирования и восстановления

Электронная программа передач (EPG) — это основа удобного просмотра и планирования времени. Но сами данные часто подвержены недочётам: задержки обновления, пропуски каналов, неполные сетевые источники. Архивирование EPG с историей на 30 дней позволяет увидеть прошлые варианты расписания, быстро восстанавливать пропавшие данные и анализировать, как менялось телепланирование. В этой статье разберём, как настроить автоматическую архивацию EPG на вашем домашнем сервере или медиасервере под управлением Linux и TVHeadend, чтобы хранить 30 дней истории без лишних хлопот.

Зачем нужен архив EPG и история на 30 дней

Во-первых, архив позволяет компенсировать случаи задержек или ошибок источников EPG. Если источник обновляется не вовремя, вы можете обратиться к архивной копии и узнать, какой выпуск передачи должен был идти в конкретный день. Во-вторых, 30-дневная история удобна для планирования, когда вы возвращаетесь к ранее просмотренным событиям или хотите проверить, что именно показывали в конкретный период. Наконец, такой архив упрощает анализ контента: вы можете увидеть сезонность, повторения и временные окна лучших программ.

Лично у меня был опыт настройки домашнего сервера на базе Linux с TVHeadend. Я столкнулся с тем, что часть программ уходила в пропуски из-за недостоверных источников EPG. Архивирование позволило мгновенно восстановить корректное расписание за нужные даты и минимизировать простой при настройке записей. Осознанная ретеншия историй также упрощает диагностику, когда возникают расхождения между реальным эфиром и тем, что видит программа-приёмник.

Что нужно для реализации

Прежде чем приступать к настройке, перечислим базовые требования и варианты реализации. В сущности потребуется два элемента: мощная/надёжная база хранения и надёжный механизм сбора EPG. Большинство домашних решений опираются на Linux-совместимые PVR-системы, чаще всего TVHeadend или MythTV. Важно понимать две вещи: куда будет храниться база EPG и как регулярно делать её копии.

Минимальный набор подготовительных условий:

  • Linux-сервер или NAS с доступной файловой системой и достаточным объёмом свободного пространства для 30 дней истории. ЕPG не очень большой по объёму, но при большом количестве каналов и длительных сроках можно собрать несколько гигабайт в сжатом виде.
  • Настроенная система PVR с поддержкой EPG-источников и доступом к базе данных EPG. В качестве примера удобно использовать TVHeadend, MythTV, VDR или аналогичные решения.
  • Правильные пути к базе EPG: SQLite/побочная база или файл, в котором TVHeadend хранит данные. Потребуется разрешение на чтение этой базы и создание копий.
  • Скрипт или утилита для экспорта/копирования базы и механизмом автоматического удаления старых копий — cron или systemd-timer.

Уточните путь к вашей EPG-базе в зависимости от дистрибутива и конфигурации. Например, TVHeadend часто хранит данные в каталогах вроде /var/cache/tvheadend или /var/lib/tvheadend, а файлы баз EPG могут называться epg.db. Важно не нарушить права доступа сервера и делать копии с учётом процессов базы данных, чтобы копии были целостными.

Архитектура решения

Предложенная архитектура проста и надёжна: TVHeadend (или другая PVR-система) собирает EPG из источников и формирует локальную базу. Ежедневно выполняется копирование базы EPG в архивный файл с датой и, по желанию, сжатие. Старые архивы автоматически удаляются после достижения периода хранения в 30 дней. Такой подход позволяет сохранить целостность данных и легко восстанавливать состояние на конкретную дату.

Ключевые этапы архитектуры:

  • Источник EPG — локальная база TVHeadend или другая база PVR;
  • Модуль архивирования — скрипт копирования базы в архив с пометкой даты;
  • Хранение архивов — локальная папка с архивами, возможно, на сетевом накопителе;
  • Управление сроками хранения — автоматическое удаление архивов старше 30 дней;
  • Восстановление — возможность заменить активную базу архивной копией для восстановления расписания на нужную дату.

Такой подход снимает множество бытовых проблем: вы можете быстро откатиться к состоянию расписания на конкретный день, сравнить версии и понять, когда произошли сбои в обновлении. В моей практике после настройки архивирования на 30 дней мы заметно сократили время на диагностику и исправление пропусков в EPG.

Как реализовать автоматическую архивацию

Сама идея состоит в том, чтобы регулярно сохранять копию базы EPG и хранить её в виде архива. Ниже приведены два практических варианта реализации. Выберите тот, который лучше соответствует вашей системе и уровню прав доступа.

Способ 1. Встроенная архивация через скрипт на основе TVHeadend

Этот способ предполагает, что у вас есть доступ к базе EPG TVHeadend и возможность копировать её. Мы создаём простой скрипт, который запускается раз в сутки, сохраняет копию базы EPG и удаляет старые архивы сверх установленного лимита. Ниже современный пример скрипта и инструкция по настройке.

Основной сценарий следующий: копируем базу EPG в файл с датой, затем (по желанию) сжимаем его, и в конце удаляем архивы старше 30 дней. Это минимально безопасно и легко адаптируется под большинство систем.

#!/bin/bash
set -euo pipefail

# Настройки (измените под свою систему)
DB_PATH="/var/lib/tvheadend/epg.db"       # путь к активной базе EPG
BACKUP_DIR="/var/backups/epg-history"     # каталог архива
RETENTION_DAYS=30                          # сколько хранить архивов

DATE=$(date +%Y%m%d)
ARCHIVE_NAME="epg-$DATE.db"
ARCHIVE_PATH="$BACKUP_DIR/$ARCHIVE_NAME"

mkdir -p "$BACKUP_DIR"

# Создаем копию базы
cp "$DB_PATH" "$ARCHIVE_PATH"

# При желании сжимаем копию
gzip -f "$ARCHIVE_PATH"

# Удаляем архивы старше RETENTION_DAYS
find "$BACKUP_DIR" -type f -name "epg-*.db.gz" -mtime +$RETENTION_DAYS -delete

Как запустить: сохраните файл как /usr/local/bin/epg_archive.sh, сделайте его исполняемым (chmod +x /usr/local/bin/epg_archive.sh) и добавьте задачу cron:

0 3 * * * /usr/local/bin/epg_archive.sh

Гарантируемый результат — каждый день в 03:00 в архив добавляется новая копия базы EPG за текущую дату, старые архивы автоматически удаляются, чтобы не перегружать хранилище.

Способ 2. Архивация через экспорт XMLTV и внешние копии

Если ваш стек чаще оперирует XMLTV или вам нужен архив именно в формате XMLTV, можно добавить экспорт EPG в XMLTV и архивировать полученный файл. Это потребует небольшого труда по настройке экспорта в вашем PVR и создание отдельного архивного шага. Преимущество такого подхода — независимость архивов от внутренней структуры базы TVHeadend и возможность переноса архива в другую систему без доступа к самой базе.

Вариант реализации:

  • Настроить экспорт EPG в XMLTV через веб-интерфейс PVR или через соответствующие утилиты;
  • Сохранить XMLTV-файл в архивную папку с датой (например, epg-YYYYMMDD.xml);
  • При желании заархивировать его и держать 30 дней.

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

Практическая настройка: пример пошагово

Рекомендую начать с базовой схемы на TVHeadend и скрипта архивирования. Ниже приведён конкретный рабочий план, который можно адаптировать под ваши условия.

Шаг 1. Установите TVHeadend и базовые источники EPG. Укажите пути к базам и проверьте стабильность обновления расписания. Убедитесь, что у вас есть права чтения базы EPG и запись в каталог архивов.

Шаг 2. Создайте каталог для архивов и тестовую копию. Например, /var/backups/epg-history. Выполните вручную копию и проверьте целостность файлов. Это даст уверенность, что автоматизация не сломает данные.

Шаг 3. Добавьте скрипт архивирования в систему и настройте cron. Установка расписания на ночью снижает влияние на рабочий поток. Важно, чтобы скрипт корректно обрабатывал ситуации, когда база EPG ещё не готова к копированию (например, во время обновления). В моём опыте этот сценарий хорошо обрабатывается проверкой наличия файла и корректной обработкой ошибок.

Шаг 4. Мониторинг и проверка целостности. Раз в неделю смотрите журнал выполнения задачи и сравнивайте размеры архивов. При необходимости добавьте уведомления на почту или в мессенджер, чтобы оперативно реагировать на ошибки копирования.

Шаг 5. Вводите дополнительные проверки. Например, можно проверить, что в архиве присутствуют файлы EPG за текущий день, и что размер архива не равен нулю. Это поможет быстро заметить проблемы источников EPG или ошибок доступа к файлам.

Восстановление и тестирование архива

Архив EPG удобен не только для чтения данных, но и для восстановления. В случае пропусков или сбоя в обновлениях можно заменить активную базу архивной копией за нужную дату. Восстановление зависит от того, как вы храните архив: если это копии базы EPG в формате db.gz, достаточно распаковать архив и заменить текущую базу в TVHeadend.

Пошаговый сценарий восстановления:

  • Остановите сервис PVR, чтобы не происходило одновременное обращение к базе.
  • Разархивируйте нужный архив: gunzip epg-YYYYMMDD.db.gz
  • Переместите распакованную базу на путь активной базы TVHeadend, например, заменив epg.db на файл с тем же именем.
  • Запустите TVHeadend и проверьте, что данные обновились и расписание корректно отображается.

Личный опыт: когда нужно было протестировать влияние конкретной даты на расписание, архивы помогали быстро повторно загрузить экземпляр EPG и проверить совместимость новых источников. Это экономило часы рабочей проверки и позволило точнее понять, на каком этапе возникают расхождения.

Безопасность, хранение и оптимизация

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

  • Разделяйте активную работу сервера и архивы: хранение архивов на отдельном диске или сетевом хранилище снижает риск потери данных при падении основного массива.
  • Используйте сжатие. gzip или xz снижают размер архива без потери информации и позволяют экономить место.
  • Устанавливайте лимит времени хранения. 30 дней — разумный компромисс между воспроизводимостью и потреблением пространства. При необходимости можно увеличить или уменьшить период хранения, учитывая темпы изменения расписания и доступное место.
  • Периодически тестируйте восстановление. Простой тест восстановления на тестовой машине поможет убедиться, что архив действительно пригоден к использованию.

Если у вас есть несколько серий каналов и большой объем данных, подумайте о дублировании архива на резервный сервер или в облако. Это позволит защититься от аппаратных сбоев и временных проблем доступа к локальному накопителю.

Расширения и дополнительные идеи

Сценарий архивации можно расширять в зависимости от потребностей. Ниже несколько идей, которые встречаются в реальных проектах и могут подойти вам:

  • Экспорт в XMLTV в отдельной копии, чтобы держать параллельно формат, удобный для внешних инструментов. XMLTV-файлы можно использовать в сторонних планировщиках и сервисах.
  • Создание индекса архивов для быстрого поиска по дате и каналу. Это упрощает восстановление именно нужной строки расписания.
  • Интеграция архивации в систему мониторинга. Например, отправлять уведомления при появлении ошибок копирования или при превышении порога использования диска.

Таблица примеров имен файлов архивов

Дата архива Файл архива Примечание
YYYYMMDD epg-YYYYMMDD.db.gz Сжатый дамп базы EPG
YYYYMMDD epg-YYYYMMDD.db Незасжатый дамп (временный)

Личный опыт: что сработало лучше всего

На практике мне понравился подход с копированием базы EPG и автоматическим удалением старых копий. Он прост в настройке, не требует сложных преобразований и надёжно сохраняет целостность данных. Ключ к успеху — правильные разрешения и регулярная проверка состояния архива. Я также добавлял небольшой скрипт уведомления на электронную почту о результатах выполнения архивации. В моменты тестирования система молнией реагировала на проблемы источников EPG, и мы быстро ограничивали убыток времени на устранение ошибок.

Если вы используете VLAN или сетевое хранилище, можно разместить архив на NAS или другой сетевой папке. Это может снизить риск потери данных в случае падения основного сервера. В моём случае такая настройка позволила круглосуточно сохранять архивы и не перегружать головной сервер.

Итог и заключительные мысли

Автоматическая архивация EPG с историей на 30 дней — разумное вложение в надёжность вашего медиа-центра. Вы получите не только защиту от пропусков и ошибок источников EPG, но и возможность оперативно возвращаться к любому дню расписания для анализа, планирования и восстановления. Реализация не требует сверхсложной инфраструктуры: достаточно двух компонентов — базы EPG и скрипта архивации с надёжной настройкой хранения и удаления устаревших копий.

Лично для меня ключевым оказалось автоматическое оповещение о сбоях архивации и проверка целостности. Это позволило держать систему в рабочем состоянии без постоянной ручной проверки. Экспериментируйте с вариантами хранения и форматами архивации, чтобы подобрать наилучшее сочетание для вашего сервера и объёма каналов. И не забывайте тестировать восстановление на тестовой машине — это часть надёжной стратегии архивирования.

Оцените статью