Ниже скрипт для бэкапа и расзбрасывания файлов бэкапов по папкам и штампу времени. Данный скрипт у меня выполняется в Агенте SQL, но изначально он powershell скрипт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
set-alias SevenZip "C:\DISKS\BACKUP\BACKUP1\Scripts\7z\7za.exe" $serverName="127.0.0.1" $dbName = "optovik" $source = "D:\BASES\1c77\Optovik\" $destination = "C:\DISKS\BACKUP\BACKUP1\Backup\" $temp = "C:\DISKS\BACKUP\BACKUP1\TEMP\" $fileStamp = Get-Date -format "dd HH-mm-ss" $folderStamp = Get-Date -UFormat "%Y\%m\" [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum") | Out-Null $server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $serverName $server.ConnectionContext.StatementTimeout = 0 $timestampBaseName = Get-Date -format _yyyy-MM-dd_HH-mm-ss $targetPath = "$temp$dbName$timestampBaseName.bak" $smoBackup = New-Object ("Microsoft.SqlServer.Management.Smo.Backup") $smoBackup.Action = "Database" $smoBackup.BackupSetDescription = "Full Backup of " + $dbName $smoBackup.BackupSetName = $dbName + " Backup" $smoBackup.Database = $dbName $smoBackup.MediaDescription = "Disk" $smoBackup.Devices.AddDevice($targetPath, "File") Write-warning "Бэкапим каталог 1С" " 1. Очищаем временный каталог" Remove-Item -Force -recurse $temp\* | Out-Null " 2. Копируем каталог базы 1с во временный каталог" Copy-Item $source/* $temp -Recurse -force | Out-Null " 3. Архивируем каталог базы 1с" SevenZip a -tzip "$destination$folderStamp$fileStamp-folder.zip" $temp | Out-Null " 4. Очищаем временный каталог" Remove-Item -Force -recurse $temp\* | Out-Null Write-warning "Бэкапим базу 1С" " 1. Очищаем временный каталог" Remove-Item -Force -recurse $temp\* | Out-Null " 2. Бэкапим базу 1с" $smoBackup.SqlBackup($server) | Out-Null " 3. Архивируем базу 1с" SevenZip a -tzip "$destination$folderStamp$fileStamp-base.zip" "$temp$dbName$timestampBaseName.bak" | Out-Null " 4. Очищаем временный каталог" Remove-Item -Force -recurse $temp\* | Out-Null Write-warning "Выполнено." |