Автоматизация резервных копий

В этой статье я расскажу, о самых распостраненых способов создавать резервные файлы, выгружать базы данных SQL, выгружать базы 1С, архивировать файлы пользователей. Все это необходимо для предотвращения потери данных. Причиной потери может стать атака хакеров, вирус, выход из строя жесткого диска и т.д.

Архивирование папки с данными

Для архивации я использую, пожалуй самую популярную программу WinRar, у нее есть поддержка работы с командной строкой. Что бы заархивировать папку надо в командой строке выполнить следующий код:

"C:\Program Files\WinRAR\Rar.exe" a -m5 -ep1 -ri1 -dh "ПУТЬ\ИМЯ_АРХИВА" "ПУТЬ_К_ПАПКЕ"

Описывать параметры запуска не буду, так как Вы сами можете их почитать выполнив команду:

"C:\Program Files\WinRAR\Rar.exe" ?

Если все правильно сделали, то у Вас создался архивированный файл с Вашей папкой внутри. Теперь эту команду можно добавить в планировщик заданий, настроить расписание и у Вас с периодичностью будут делаться резервные копии. Все это конечно хорошо, но есть одно НО, каждый раз у Вас файл с резервной копией будет затираться новым. Такой подход не всегда удобен, так как бывает ситуация когда необходимо восстановить файлы раньше, чем последний backup. Как же быть в такой ситуации? В такой ситуации нам одной строкой не обойтись, и придется сделать не большой скриптик.

SET DirName=ПУТЬ_КУДА_СОХРАНЯЕМ_АРХИВЫ
FOR /f "tokens=1-7 delims=/-:., " %%a IN ("%DATE: =0% %TIME: =0%") do (
    SET NewBkDir=%DirName%\%%c.%%b.%%a_%%d.%%e.%%f.%%g
)
IF NOT EXIST "%NewBkDir%" (
    MD "%NewBkDir%"
)
SET SrcData=ПУТЬ_ПАПКЕ_С_ДАННЫМИ
SET ArcName=%NewBkDir%\backup.rar

"C:\Program Files\WinRAR\Rar.exe" a -m5 -ep1 -ri1 -dh "%ArcName%" "%SrcData%"

Что же происходит, при выполнение этого скрипта? Сначало задается путь для хранения архива, затем по этому пути создается папка с именем в формате:"гггг.мм.дд_чч_мм_сс_мс", и в конце уже запускается сам процесс архивирования. Тем самым наши бекапы будут разложены по папкам в названии которых содержится дата и время созданного архива. При такой схеме затираться уже ничего не будет.

Выгрузка базы данных 1С

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

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

"C:\Program Files (x86)\1cv8\common\1cestart.exe" DESIGNER /F"ПУТЬ_К_БАЗЕ" /N"ИМЯ_ПОЛЬЗОВАТЕЛЯ" /P"ПАРОЛЬ" /DumpIB "ПУТЬ_ДЛЯ_ФАЙЛА_ВЫГРУЗКИ"

Выполнив данную команду мы получим файл содержащий в себе архивную копию базы. Сразу хочу предостеречь от распространенной ошибки: "Данная комманда, выполниться только если все пользователи вышли из базы". Таким же способ можно выгрузить и базу, которая использует СУБД, например SQL. Но такой подход неоправдан, так как если используется СУБД, то база скорее всего очень большая, да и у СУБД есть свои инструменты для этого. Ниже я расскажу как backup'ить базы SQL.

Backup MS SQL базы

В Microsoft SQL Server есть замечательный инструмент "Агент SQL Server". С его помощью легко настроить резервное копирование баз данных SQL. Для этого необходимо зайти в Microsoft SQL Server Management Studio, выбрать "Компонент Database Engine", ввести учетные данные. В MS SQL Server Management Studio, запустить "Агент SQL Server", если не был запущен. Зайти в "Агент SQL Server"->"Задания" и создать задание. В задание необходимо сделать шаг, в котором указать следующий код скрипта Transact-SQL (T-SQL):

BACKUP DATABASE [ИМЯ_БАЗЫ_ДАННЫХ] TO  DISK = N'ПУТЬ_КУДА_СОХРАНИТЬ_АРХИВ' 
WITH NOFORMAT, NOINIT,  
NAME = N'КОММЕНТАРИЙ', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Сохраняем этот шаг и в задание задаем расписание. Сохраняем задание, для проверки его можно запустить в ручную. Все готово. В следующей статье я расскажу, о том как эти архивы сохранять на FTP.