Для начала лучше иметь несколько дисков, в одном из которых нужно назначить права доступа только для одного пользователя с хорошим паролем (защита от шифровальщиков). Далее необходимо иметь дополнительный компьютер для БЭКАП, который находится в той же локальной сети, но без доступа к интернету, можно даже на Linux куда тоже будет скидываться БЭКАП, у меня в данной статье пока нет дополнительного компа, поэтому копии архивов я переношу на внешнее устройство, но скоро будет и я внесу изменения в эту статью.
Вот текст самого батника:
@echo off
if exist D:\BACKUP\ZUP\ZUP_1mon.bak del D:\arhiv\ZUP\ZUP_1mon.bak
if exist D:\BACKUP\TORG\TORG_1mon.bak del D:\arhiv\TORG\TORG_1mon.bak
if exist D:\BACKUP\BUH\BUH_1mon.bak del D:\arhiv\BUH\BUH_1mon.bak
SQLCMD -S ИМЯВАШЕГОКОМПЬЮТЕРА\СЕРВЕРСКЛ -E -Q "BACKUP DATABASE [ZUP] TO DISK = 'D:\arhiv\ZUP\ZUP_1mon.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
SQLCMD -S ИМЯВАШЕГОКОМПЬЮТЕРА\СЕРВЕРСКЛ -E -Q "BACKUP DATABASE [TORG] TO DISK = 'D:\arhiv\TORG\TORG_1mon.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
SQLCMD -S ИМЯВАШЕГОКОМПЬЮТЕРА\СЕРВЕРСКЛ -E -Q "BACKUP DATABASE [BUH] TO DISK = 'D:\arhiv\BUH\BUH_1mon.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
"C:\Program Files\WinRAR\Rar.exe" a -ep -m1 D:\BACKUP\ZUP\ZUP_1mon.vidi D:\arhiv\ZUP\ZUP_1mon.bak
"C:\Program Files\WinRAR\Rar.exe" a -ep -m1 D:\BACKUP\TORG\TORG_1mon.vidi D:\arhiv\TORG\TORG_1mon.bak
"C:\Program Files\WinRAR\Rar.exe" a -ep -m1 D:\BACKUP\BUH\BUH_1mon.vidi D:\arhiv\BUH\BUH3_1mon.bak
if exist D:\arhiv\ZUP\ZUP_1mon.bak del D:\arhiv\ZUP\ZUP_1mon.bak
if exist D:\arhiv\TORG\TORG_1mon.bak del D:\arhiv\TORG\TORG_1mon.bak
if exist D:\arhiv\BUH\BUH3_1mon.bak del D:\arhiv\BUH\BUH3_1mon.bak
exit
Имя этого батника bac_1mon.bat, т.е. это батник первого дня недели понедельника, разумеется у меня их 5 на каждый день.
Как видно из кода, у меня 3 базы, ZUP, TORG, BUH, зарплата и управление, управление торговлей, бухгалтерия предприятия, соответственно.
if exist D:\BACKUP\ZUP\ZUP_1mon.bak del D:\arhiv\ZUP\ZUP_1mon.bak
if exist D:\BACKUP\TORG\TORG_1mon.bak del D:\arhiv\TORG\TORG_1mon.bak
if exist D:\BACKUP\BUH\BUH_1mon.bak del D:\arhiv\BUH\BUH_1mon.bak
данная часть кода выполняет проверку на наличие имеющегося бэкапа в папке на диске Д такого ZUP_1mon.bak файла, в случае если он будет (а он будет через неделю, то он будет удаляться.
SQLCMD -S ИМЯВАШЕГОКОМПЬЮТЕРА\СЕРВЕРСКЛ -E -Q "BACKUP DATABASE [ZUP] TO DISK = 'D:\arhiv\ZUP\ZUP_1mon.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
Эта часть кода уже непосредственно обращение к SQL вместо ИМЯВАШЕГОКОМПЬЮТЕРА\СЕРВЕРСКЛ - вам нужно написать име того компьютера на котором установлен сервер SQL например SERVER и через слеш имя Вашего SQL соединения по умолчанию SQLEXPRESS, таким образом код примет следующий вид:
SQLCMD -S SERVER\SQLEXPRESS -E -Q "BACKUP DATABASE [ZUP] TO DISK = 'D:\arhiv\ZUP\ZUP_1mon.bak' WITH INIT, NOFORMAT, SKIP, NOUNLOAD"
В квадратных скобках имя Вашей базы, а это 'D:\arhiv\ZUP\ZUP_1mon.bak' путь куда делать резервную копию
"C:\Program Files\WinRAR\Rar.exe" a -ep -m1 D:\BACKUP\ZUP\ZUP_1mon.vidi D:\arhiv\ZUP\ZUP_1mon.bak
"C:\Program Files\WinRAR\Rar.exe" a -ep -m1 D:\BACKUP\TORG\TORG_1mon.vidi D:\arhiv\TORG\TORG_1mon.bak
"C:\Program Files\WinRAR\Rar.exe" a -ep -m1 D:\BACKUP\BUH\BUH_1mon.vidi D:\arhiv\BUH\BUH3_1mon.bak
Эта часть кода отвечает за архивацию баз данных и архивирует базу в другую папку, как я уже говорил, лучше на другой диск, но у меня тот же.
C:\Program Files\WinRAR\Rar.exe - это обращение к программе архиватора, если у Вас другая программа, то соответственно и путь будет другой, D:\BACKUP\BUH\BUH_1mon.vidi - это куда и как нужно сохранить архив, кстати я изменил расширение с zip на vidi, можете на любое другое, но большинство шифровальщиков работает по принципу шифрования всех наиболее знакомых форматов (zip, doc, xlm, jpg и др.) может это и не спасет, но я все же сделал так. D:\arhiv\BUH\BUH3_1mon.bak - это путь туда, откуда нужно взять файл и заархивировать его.
if exist D:\arhiv\ZUP\ZUP_1mon.bak del D:\arhiv\ZUP\ZUP_1mon.bak
if exist D:\arhiv\TORG\TORG_1mon.bak del D:\arhiv\TORG\TORG_1mon.bak
if exist D:\arhiv\BUH\BUH3_1mon.bak del D:\arhiv\BUH\BUH3_1mon.bak
Это уже упомянутая выше часть кода, которая проверяет папку куда SQL делал бэкап и удаляет эти бэкапы, потому-что точно такие же бэкапы у нас заархивированы в другой папке, к чему тогда тратить место на диске.
Как настрою вторую машину в локалке, допишу код, как c помощью команды XCOPY сделать копию на другой компьютер в локальной сети.
ДОБАВЛЕННОЕ К СТАТЬЕ!
И снова здравствуйте, сделал наконец то вторую машину, теперь самое время настроить копирование на нее бэкапов SQL с сервера.
Первым делом на сервере SQL создаем пользователя с сложным паролем, чтобы не одна собака не могла отгадать, причем я сделал его еще и сменяемым, т.е. через определенный промежуток времени у меня это 2 месяца, винда просит сменить пароль создаем новый. У меня пользователь так и называется BACKUP, далее расшариваем тот диск и ту папку в которой у Вас хранятся резервные копии. Причем полные права делаем только для службы SQL и того самого пользователя со сложным паролем (BACKUP), для этого правой кнопкой жмем на тот диск где хранятся бэкапы и нажимаем ПКМ на этот диск, далее вкладка Доступ - Расширенная настройка, ставим галочку открыть общий доступ к этой папке и во вкалдке Разрешения, удаляем всех и добавляем нашего (BACKUP), жмем ок, папка расшарена, тоже делаем и с папкой допустим Arhiv, которая находится внутри этого диска. Далее проходим во вкладку Безопасность и добавляем туда нашего (BACKUP), а также службу SQL, остальных удалите или порежьте права, уберите возможность изменения. Все на сервере все сделано, переходим на второй комп, куда будут копироваться БЭКАПЫ.
Подключаем ту папку которую мы расшарили, для этого правой кнопкой мыши (ПКМ), кликаем на Мой компьютер - нажимаем на Подключить сетевой диск, далее два слэша \\имя Вашего сервера\имя той папки в которой хранятся архивы SQL, ставим галочку "Использовать другие учетные данные" нажимаем подключить и вводим имя (BACKUP или какой там у Вас), а пароль, тот самый, который очень сложный, у Вас появиться диск и Ваши папки которые на сервере, далее подгоняете под себя батник который прикреплен к статье и настраиваете планировщик, только время создания копий, должно быть позднее чем то которое у Вас на сервере, а то будете копировать старый бэкап. Иногда вместо имени компьютера, нужно прописать IP адрес этого компьютера (сервера).
Планировщик, открываем:
Создаем папку 1С например
Далее ПКМ на эту папку и создаем задачу:
В открывшемся окне пишем название например "Копия бэкап понедельник" и так на все пять дней, вторник, среда ...
Снизу выбираете свою винду, далее создаете триггер, там указываете еженедельно, указываете время например на сервере у Вас создается копия в 22:00, то здесь в 24 или 02:00., как все заполнили нажимаете создать.
Далее в действие выбираете свои батники, которых у Вас пять (как у меня если конечно) понедельник, вторник и т.д. и на каждый день выбираете свой батник, если сейчас мы создаем пятницу например, то и батник пятничный.
Условия и параметры можете как у меня на скринах
Вот и все. Цепочка выглядит так, На сервере батники которые указаны первоначально в этой статье создают в одну папку бэкап SQL, затем с этой папки архивируют их в другую папку тоже на сервере, но с другим расширение, чтобы предотвратить шифрование троянам (как было у меня((((().
Эти же батники, копирую тот бэкап который создает SQL с сервера на другой компьютер, затем также архивирует их под другим расширением. Разумеется все батники удаляют старые бэкапы.
Не судите. Всем хорошего настроения.