Архивирование и удаление файлов журнала регистрации на Linux-сервере
1C-admin
07.12.2018
Bash-скрипт для архивации и удаления файлов Журнала регистрации в старом формате на Linux-сервере 1С Предприятия.
Скрипт предназначен для работы на платформе GNU/Linux. Возможен как ручной запуск, так и запуск по расписанию crond.
Скрипт осуществляет сжатие файлов журнала регистрации в старом формате и удаление архивов данных файлов в соответствии с настроенными значениями периодов хранения. Самостоятельно определяет стандартный каталог кластера 1С и ищет в нем файлы журнала регистрации по всем базам.
Стандартные настройки периодов сжатия и удаления файлов — месяц и год соответственно. При необходимости данные периоды можно изменить (думаю, по тексту скрипта все понятно где/что/как).
Целевые файлы журнала регистрации и архивов отбираются по имени, а не по дате изменения! Причина кроется в том, что при переводе журнала регистрации одной из баз из нового формата в старый формат, дата изменения файлов данного журнала не удовлетворяла необходимым параметрам.
В случае необходимости просмотра журнала регистрации за период, который находится в архиве, достаточно просто распаковать файл в текущем месте хранения.
Скрипт позволяет экономить дисковое пространство сервера и в случае необходимости быстро делать "доступным" для просмотра журнал регистрации за необходимый период.
Текст скрипта reg_log_compress.sh
#!/bin/bash
#
# 1C Registration Log Compression and Removal Script
#
# (c) 2025, Alexey Y. Fedotov
#
# Email: fedotov@kamin.kaluga.ru
#
# ======================================================
# WARNINIG: For old style registration log only!
# ======================================================
#
# Find 1C Enterprise 8 service start script
INIT_SCRIPT=`ls /etc/init.d/srv1cv8*`
ARCHIVE_PERIOD=`date +%Y%m%d --date="1 month ago"`
REMOVE_PERIOD=`date +%Y%m%d --date="1 year ago"`
. ${INIT_SCRIPT} > /dev/null
WORK_DIR="/home/${SRV1CV8_USER}/.1cv8/1C/1cv8"
echo "1C Registration Log compression and removal script started!";
# Get real work dir
[[ -f ${WORK_DIR}/location.cfg ]] && WORK_DIR=`cat ${WORK_DIR}/location.cfg | awk -F"=" '{print $2}'`
# TODO: Add -mtime parameter for restrict find result
FILES_TO_COMPRESS=`find ${WORK_DIR} -name *.lgp | sort`;
for CURRENT_FILE in ${FILES_TO_COMPRESS};
do
[[ ${CURRENT_FILE##*/} < ${ARCHIVE_PERIOD} ]] && bzip2 ${CURRENT_FILE} && echo "Compress: ${CURRENT_FILE}";
done
# TODO: Add -mtime parameter for restrict find result
FILES_TO_REMOVE=`find ${WORK_DIR} -name *.bz2 | sort`;
for CURRENT_FILE in ${FILES_TO_REMOVE};
do
[[ ${CURRENT_FILE##*/} < ${REMOVE_PERIOD} ]] && rm -f ${CURRENT_FILE} && echo "Delete: ${CURRENT_FILE}";
done
echo "1C Registration Log compression and removal script complete!"
Пример использования на сервере с CentOS
1. Размещаем файл скрипта на сервере, к примеру, в каталоге /opt/1C/v8.3/noarch
$ sudo mkdir /opt/1C/v8.3/noarch # Содаем каталог
$ sudo cp reg_log_compress.sh /opt/1C/v8.3/noarch/ # Копируем файл скрипта
2. Устанавливаем для данного скрипта права на исполнение
$ sudo chmod 755 /opt/1C/v8.3/noarch/reg_log_compress.sh
3. Добавляем символьную ссылку в каталог /etc/cron.daily
$ sudo ln -s /opt/1C/v8.3/noarch/reg_log_compress.sh /etc/cron.daily/
Доброе утро!
Тема весьма актуальная, было бы здорово немного описать процесс.
Нет обработки для сжатия файлов журналов транзакций postgre под linux?
С уважением
(1) Сказать честно, не знаю, что можно еще описать. Достаточно посмотреть текст скрипта, он прост как три копейки …
Касаемо сжатия (архивирования) файлов журналов транзакций postgresql (я так понимаю, необходимого в контексте PITR?), возможно сделаю чуть позже материал. Хотя на эту тему статей хватает, на том же хабре, да и так 🙂
(2) Но текста скрипта в описании нет, а брать кота в мешке не все захотят.
Тема Linux в целом уверен вызовет интерес.
(3) Добавил текст скрипта в текст статьи