Как не прошляпить архив

26.03.21

База данных - Архивирование (backup)

Контроль изменения списка баз данных для архивирования BASH.

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

Чтобы минимизировать ущерб предлагаю скрипт контроля списка баз данных. Скрипт может работать как с Postgresql, так и с файловым вариантом. При запуске скрипт проверяет список баз, и если он не изменился - Приходит письмо "ОК". Подтверждая, что контроль ведется. Если список баз изменился - приходит письмо с изменениями и заголовком "ALARM". В этом случает требуется уточнить причину, а после зафиксировать изменения, выполнив скрипт с ключом "-s" Предполагаю, что отправка почты на сервере уже настроена (я использую msmtp + mutt).

Для установки mutt на Dibian/Ubuntu.

sudo apt install mutt gpgsm

Здесь я не буду заострять внимание, как настроить отправку почты на linux, статей по этой тебе очень много.

Собственно скрипт:

#!/bin/bash
# check 1c files and Postgres databases list (C) Oleg N.Germanenko 2019-2021 revision 2021-02-22
#
#  -h help
#  -s Save current database list (fix changes)
#   otherwise check hash

SCR_FILENAME=$(readlink -e "$0")
CUR_DIR=$(dirname $SCR_FILENAME)
TEMP_DIR=/dev/shm;test -d $TEMP_DIR ||TEMP_DIR=$(dirname $(mktemp -u))

declare -r CUR_BASE_LIST=$TEMP_DIR/curbaselist.txt
declare -r OLD_BASE_LIST=$CUR_DIR/oldbaselist.txt
declare -r LOG=$SCR_FILENAME.log
declare -r PG_USER=postgres
declare -r ADM_MAIL=admin@organization.ru
# commen FILES_BASE_DIR line for check PostgreSQL variant 1c
declare -r FILES_BASE_DIR=/usr/local/bases_1c

 #Get current db list
cd $TEMP_DIR

if [[ -d $FILES_BASE_DIR ]];then #files 1c
  find $FILES_BASE_DIR -type f -name "1Cv8.1CD" -printf  "%h\n" |sort >$CUR_BASE_LIST
else # sql 1c
 # Postgres user
  sudo -u $PG_USER psql -l|head -n -2|awk '{if(NR>3 && $1!="|") print $1}'|sort>$CUR_BASE_LIST
fi
  chmod 600 $CUR_BASE_LIST
  cd - >/dev/null
 #check or create old db list file
  test -f $OLD_BASE_LIST || :>$OLD_BASE_LIST && chmod 600 $OLD_BASE_LIST
 # compare current and old lists
  diff  $CUR_BASE_LIST $OLD_BASE_LIST |sed -E '/^[<>]/!d;s/</NEW_DB    /g;s/>/DELETED_DB/g'>$LOG
NOW=$(date "+%Y%m%d")
case $1 in
  -h)
 # cat help only
    sed '/^# /!d' $SCR_FILENAME
    ;;
  -s)
 # save current db list
    cp -f $CUR_BASE_LIST $OLD_BASE_LIST
 # send e-mail
    echo "DB_LIST SAVED" $(cat $CUR_BASE_LIST |wc -l)|mutt -s "$HOSTNAME checkdblist $NOW DB_LIST SAVED" $ADM_MAIL
    :>$LOG
    ;;
   *)
    if [[ -s $LOG ]];then
 # db list was changed. send e-mail
      cat $LOG |mutt -s "$HOSTNAME checkdblist ALARM $NOW"  $ADM_MAIL
    else
 # db list not changed. send e-mail
      echo "All OK" $(cat $CUR_BASE_LIST |wc -l) |mutt -s "$HOSTNAME checkdblist $NOW OK"  $ADM_MAIL
    fi
    ;;
esac

rm $CUR_BASE_LIST

Сохраняем скрипт под именем, например cbdl.sh

chmod 700 ./cdbl.sh

скрипт нужно запускать от root, поскольку используется sudo.

обычно cron с этим прекрасно  справляется

0 0 * * * /root/work/cdbl/cdbl.sh

Если используется файловый вариант - путь к базам пропишите в переменной FILES_BASE_DIR.

Если sql - просто закомментируйте строку с этой переменной.

Всем стабильной работы!

Контроль архивирование postgres postgresql файловый вариант web linux bash

См. также

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    72806    627    45    

85

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Программа позволяет выполнять автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    15711    21    6    

27

Архивирование (backup) Администрирование СУБД Системный администратор Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    9450    n_mezentsev    15    

27

Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    28665    sapervodichka    37    

147

Архивирование (backup) Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    5737    3    Gnom-Gluck    6    

7

Архивирование (backup) Системный администратор Программист Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4692    3    Giblarium    12    

5
Оставьте свое сообщение