Предназначен для очистки архива с аудио/видео файлами от старых (по времени создания) записей, то есть для организации автономного необслуживаемого циклического архива.
Все настройки 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'