Резервные копии баз 1С Предприятие с хранением на ресурсе FTP

Резервное копирование (выгрузка) баз 1С Предприятие дело ежедневное и рутинное. Вариантов выгрузки баз для версий с хранением в СУБД два: либо выгрузка (dump) самой базы данных, либо выгрузка с помощью средств самой 1С в dt файл. Если из файловой версии 1С Предприятие, то только в dt файл.

Наша задача организовать централизованное хранение выгрузок баз на другом (удаленном) сервере. В качестве сервера будет выступать обычный FTP сервер. Для понимания объемов хранения данных нужно просчитать сколько по времени необходимо хранить данные выгрузки, какой ежедневный (или исходя из логики расписания задачи резервирования) объем данных будем переливать на сервер и с определенным коэффициентом запаса (я беру 30%) зарезервировать место на сервере хранения.

Для выгрузки баз будут использованы встроенные механизмы 1С Предприятие, для хранилища — удаленный FTP сервер, выгрузка будет происходить локально на сервере 1С в папку C:\TEMP с последующим переносом на FTP в папку 1С. Сервер — Windows Server 2008 и выше.

Используемые дополнительные программные средства — WinSCP.

Сама задача будет простой задачей в «Планировщике заданий» с определенным расписанием.

1. Установим на сервер WinSCP;

2. Скрипт для выполнения (bat или cmd файл):

@echo off 

REM закрывает все сессии 1С (для терминального сервера)
tskill *1cv8* /a /v 

REM выгрузка баз 1C_Programm_path = Путь к 1С.exe CONFIG = режим конфигуратора /N = Пользователь с полными правами! /P = Пароль /DumpIB = команда на выгрузку и путь + _%date% = текущая дата 
"C:\Program Files (x86)\1cv8\8.3.14.1694\bin\1cv8.exe" config /f C:\1C_BASE\MY_BASE  /N archive /P password /DumpIB C:\TEMP\MY-BASE-%date%.dt

REM Задержка до начала следующей команды. Можно удалить. Сделана для наглядности очередности исполнения 
Timeout /T 5

REM Удаляем файлы на сервере FTP старше определенного возраста и пишем лог в файл 
"C:\Program Files (x86)\WinSCP\winscp.com" /ini=nul /log=C:\LOGS\delete-%date%.log /command ^
    "open ftp://ftpUser:ftpPassword@IP-FTP-SERVER/" ^
    "rm /1C/*<31D" ^
    "exit
	
REM Задержка до начала следующей команды. Можно удалить. Сделана для наглядности очередности исполнения 
Timeout /T 5

REM Копируем выгрузки из папки C:\TEMP на FTP сервер в папку 1С и пишем лог в файл
"C:\Program Files (x86)\WinSCP\winscp.com" /ini=nul /log=C:\LOGS\transfer-%date%.log /command ^
	"option echo off" ^
	"option batch on" ^
	"option confirm off" ^
	"open ftp://ftpUser:ftpPassword@IP-FTP-SERVER/" ^
	"put -nopermissions -nopreservetime "C:\TEMP\*.dt" "/1C/"" ^
	"exit"

REM Задержка до начала следующей команды. Можно удалить. Сделана для наглядности очередности исполнения 
Timeout /T 5

REM Удаляем выгрузки из папки C:\TEMP
del C:\TEMP\*.dt

Где:
ftpUser — Имя пользователя для доступа к FTP
ftpPassword — Пароль для пользователя FTP
IP-FTP-SERVER — IP адрес сервера FTP или DNS имя
log= путь для размещения log файловой
rm /1C/*<31D — удалить из папки 1С все файлы старше 30 дней

3. Создаем простую задачу в Планировщике заданий с расписанием на выполнение командного файла.

Top