Предназначен для очистки архива с аудио/видео файлами от старых (по времени создания) записей, то есть для организации автономного необслуживаемого циклического архива.
Все настройки avreg-unlink вынесены в файл
«/etc/avreg/avreg.conf
», в
основном в секции «avreg-unlink { … }
».
Каждый параметр в конфигурационном файле комментирован, поэтому просто приведём часть его содержимого.
... # Имя хоста SQL-сервера и имя базы данных. # По умолчанию: ; db-host = 'пусто' ; db-name = 'avreg5_db' # Каталог, в который должны сохраняться аудио/видео файлы. # По умолчанию: ; storage-dir = '/var/spool/avreg' # Имя текстового файла-журнала, в который записываются "вручную" # удалённые из архива файлы, например, для сокрытия каких-то проишествий. # Журнал создаётся в каталоге "{{storage-dir}}". # По умолчанию: "removed-manually.txt" ; removed-manually = 'removed-manually.txt' # Системные пользователь/группа, с привилегиями которых ("под которыми") # будут работать приложения серверной части AVReg - avregd и avreg-unlink. # Такие же атрибуты "владелец:группа" получат все создаваемые каталоги и файлы. # Прим. по группе: если при монтировании файловой системы использовалась опция # grpid (man 8 mount), то группа созданного в ней каталога/файла будет # установлена значением группы родительского каталога. # По умолчанию: avreg/avreg ; user = avreg ; group = www-data avreg-unlink { ### Настройки "чистильщика" архива от старых медиа-файлов (версия 5.5), ### ### автоматически запускаемого системным шедулером CRON по расписанию: ### ### см. файл-задание "/etc/cron.d/avreg-unlink" ### ### Значениями параметров start-space и end-space, в сочетании с частотой ### ### запуска "чистильщика", вы должны предотвратить 100% заполнение ### ### дискового устройства используемого для записи файлов, и тем самым ### ### останов процесса записи. Значениями параметров del-per-once и timeout ### ### вы должны предотвратить пиковую перегрузку системы вызванную ### ### процессом удаления файлов с файловой системы и записей в базе данных. ### # Устанавливайте имя "db-user" и пароль "db-passwd" доступа к базе данных # в приватном ( 0600 root:root ) файле c именем "avreg-unlink.secret" include /etc/avreg/avreg-unlink.secret # Команда для получения размеров диска в 1КБ блоках, # требуемый stdout вывод: "1Kблоков_ИСПОЛЬЗОВАНО 1Kблоков_ВСЕГО", # Параметр "disk-usage-cmd" предназначен прежде всего для ипользования # дисковых системных квот quota(1)/quotactl(2) или xfs_quota(8). # В команде можно использовать переменные: # - @USER/@GROUP - раскрываются как "user"/"group" в avreg.conf; # - @DIR/@FS/@MNTPOINT - раскрываются как имя каталога "storage-dir" # в avreg.conf, имя блочного устройства и точка монтирования, соотв. # По умолчанию: не задано, т.е. будет использоваться вызов statfs(2) # Для ext3/ext4 файловых систем смонтированных с опцией "usrquota": ; disk-usage-cmd = "quotatool -b -u @USER -d @MNTPOINT | awk '{ print $3,$5 }'" # Для XFS файловой системы смонтированной с опцией "uquota": ; disk-usage-cmd = "xfs_quota -c 'quota -vbN @USER' | awk '{ print $2,$4 }'" # В трёх нижеследующих параметрах допустимо использование # суффиксов-модификаторов: k[ило], M[ега] and G[ига] байт, # например: 2500M or 1G (пишите латинскими буквами и слитно) # Для "-space" опций вы пожете также задавать знаяения в процентах, # от общего размера устройства "storage-dir". # Размер свободного места на архивном устройстве, # при котором начинается процесс очистки. # По умолчанию: остаток - '10%', суффикс-модификатор - 'G'(Гигабайт) ; start-space = 35G # Размер свободного места на архивном устройстве, # при котором заканчивается процесс очистки. # Рекомендуется устанавливать не менее чем 1,5 размера start-space # По умолчанию: остаток - '15%', суффикс-модификатор - 'G'(Гигабайт) ; end-space = 50G # Внутри сеанса удаления процесс разбит на небольшие транзакции. # Это нужно для того, чтобы не перегрузить систему длительным и непрерывным # процессом удаления файлов с жестких дисков (особенно на ext3 или # программных RAID 4,5) одновременно с процессом записи новых файлов. # В рамках одной транзакции удаляется набор файлов с общим размером # не более чем значение "del-per-once". # По умолчанию: удалять по 100M, суффикс-модификатор - 'M'(Мегабайт) ; del-per-once = 200M # Перерыв между транзакциями timeout в секундах, # по умолчанию: 1 секунда ; timeout = 2 # Читать за один раз rows-per-select записей из таблицы EVENTS. # Если не очень понимаете зачем нужен этот параметр - не трогайте. # По умолчанию: 5000 ; rows-per-select = 10000 # Не удалять записи и файлы новее чем "select-now-minus" минут. # Поставьте как максимальное возможное значение длительности (mtime - ctime) # медиа-файлов (см. V.max_minutes и A.max_minutes) с небольшим запасом. # По умолчанию: 60 минут (1 час.) ; select-now-minus = 120 }
avreg-unlink запускается периодически через системный шедулер CRON.
Время и период запуска определяются в файле «/etc/cron.d/avreg-unlink»:
# Расписание cron для пакета avreg-unlink # синтаксис смотрите: man 5 crontab PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # раскомментируйте строку ниже, если локаль "ru_RU.UTF8" НЕ поддерживается syslog # LANG=C # раскомментируйте 3 строки ниже, если локаль "ru_RU.UTF8" ПОДДЕРЖИВАЕТСЯ syslog LC_ALL='ru_RU.UTF-8' CONTENT_TYPE='text/plain; charset="utf-8"' CONTENT_TRANSFER_ENCODING='8bit' # по умолчанию: каждыe 10 минут */10 * * * * root /usr/sbin/avreg-unlink >/dev/null # дополнительно, каждую неделю во вторник в 05:00 # выполниить удаление и упаковать базу (см. MySQL OPTIMIZE TABLE) 00 5 * * 2 root /usr/sbin/avreg-unlink --optimize >/dev/null
Подробнее о том как составлять задания для cron см. Cron.
Если необходимо обеспечить увеличенную глубину архива для небольшого списка камер, то используйте следующее задание CRON.
задание CRON /etc/cron.d/avreg-unlink
# Расписание cron для пакета avreg-unlink # синтаксис смотрите: man 5 crontab PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # раскомментируйте строку ниже, # если локаль "ru_RU.UTF8" НЕ поддерживается syslog # LANG=C # раскомментируйте 3 строки ниже, # если локаль "ru_RU.UTF8" ПОДДЕРЖИВАЕТСЯ syslog LC_ALL='ru_RU.UTF-8' CONTENT_TYPE='text/plain; charset="utf-8"' CONTENT_TRANSFER_ENCODING='8bit' # список "важных" камер CAMS_LIST1=3,5,7-10 # остальные камеры CAMS_LIST2=1,2,4,6,11-100 # каждые 15 мин. удалять ролики камер из списка CAMS_LIST2 # в автоматическом режиме с контролем свободного места на устройстве # с архивом AVReg */15 * * * * root avreg-unlink "$CAMS_LIST2" >/dev/null # каждую ночь в 04:37 удалять ролики "важных" камер # из списка CAMS_LIST1, которые старше чем 90 дней (для примера) 37 04 * * * root avreg-unlink "$CAMS_LIST1" "..$(date -d '90 day ago' +\%F)" >/dev/null # подставьте своё значение ^^ # дополнительно, каждую неделю во вторник в 05:00 # выполниить удаление и упаковать базу (см. MySQL OPTIMIZE TABLE) 00 5 * * 2 root avreg-unlink --optimize >/dev/null
Все параметры, описанные выше (см. конфигурационный файл avreg.conf) также доступны опциями командной строки, см:
$ sudo avreg-unlink --help или $ man avreg-unlink
При интерактивном запуска, обычно, представляют интерес 2 возможности:
-v
“ -
больше сообщений, например: -vvvv или -v3;avreg-unlink [опции] [СПИСОК_КАМЕР] [[ОТ]..[ДО]] где: СПИСОК_КАМЕР - ограничивает набор камер, например: "1,2,7-13" ОТ и ДО - **отключают автоматический режим удаления с контролем остатка свободного места**, переключаясь в режим удаления заданного диапазона времени, формат и ОТ и ДО: "ГГГГ-ММ-ДД[ чч:мм[:сс]]"
'2010-12-31
23:30..2011-01-01 00:30'
Примеры запуска avreg-unlink в терминале (
запускать avreg-unlink нужно от root-а или через sudo ):
$ sudo avreg-unlink -v Подключаемся к MySQL базе данных на "avreg5_db-NEW" Запуск "чистильщика" медиа-архива AVReg на "avreg5_db-NEW@/var/spool/avreg" устройство с медиа-архивом - `/dev/mapper/md_mirr-var', смонтировано на `/var', fs `ext3' перед удалением `/dev/mapper/md_mirr-var' размер: всего/использ./свободно: 29.5 ГБ / 18.1 ГБ (61%) / 9.9 ГБ (34%) свободное место (9.9 ГБ) > "start-space" options (3.0 ГБ) => не будем удалять.
root# avreg-unlink -v 3-5,7 "2009-01-01..2014-02-15" Подключаемся к MySQL базе данных на "avreg5_db-NEW" Запуск "чистильщика" медиа-архива AVReg на "avreg5_db-NEW@/var/spool/avreg" устройство с медиа-архивом - `/dev/mapper/md_mirr-var', смонтировано на `/var', fs `ext3' перед удалением `/dev/mapper/md_mirr-var' размер: всего/использ./свободно: 29.5 ГБ / 18.1 ГБ (61%) / 9.9 ГБ (34%) после удаления `/dev/mapper/md_mirr-var' размер: всего/использ./свободно: 29.5 ГБ / 18.1 ГБ (61%) / 9.9 ГБ (34%) всего удалено 0 файлов общим размером 0 Б и 0 каталогов
$ sudo avreg-unlink -v '..2014-07-15'