<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: cкрипт для бекапа]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5406</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5406&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: cкрипт для бекапа».]]></description>
		<lastBuildDate>Thu, 20 Jan 2011 11:24:06 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: cкрипт для бекапа]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44100#p44100</link>
			<description><![CDATA[<p><span style="color: green">Добавлен префикс языка в заголовок темы.</span></p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Thu, 20 Jan 2011 11:24:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44100#p44100</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: cкрипт для бекапа]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44096#p44096</link>
			<description><![CDATA[<p>Скрипт проверяет наличие файла бекапа SQL в папке архивирует его в архив с помощью rar с добавление даты в имя архива. Затем копирует архив на удаленный сервер. И удаляет старые архивы с локального и удаленного сервера. Т.к. архивируется с пошью rar в скрипте реализовано вычисление задержки в зависимости от размера файла. Все действия ведуться в логах. В конце отправляется писмьо на заданный адрес с вложенным логом с помощью blat. <br />****************************************************************************</p><div class="codebox"><pre><code>&#039;========================================================================== 
&#039; 
&#039; VBScript Copy Backup folder 
&#039; 
&#039; NAME: CopBackFold.vbs 
&#039; 
&#039; AUTHOR: Alexey Petrov 
&#039; DATE  : 20/01/2011 
&#039; Version 2.0.1 
&#039;========================================================================== 
Option Explicit 
&#039;On Error Resume Next 
Const OverWriteFiles = True 
Dim sFolder, dFolder 
Dim rDate, oldDaterm, oldDate 
Dim objFSO, objTxtFile 
Dim Arg, FileName 
&#039;Переменные логов 
Dim LogFile, objOutputFile 
&#039;Переменные отправки почты 
Dim subj, body, cons, Sleep 
Dim WShell 
Dim Year, Month, Day, oldFile, oldDateLoc 
Dim sFile, ArrBase(), flBase, intSize, fold, Folder, file 
Dim strNextLine, status, iDir 

flBase = &quot;H:\script\Backup_Base.txt&quot; 
intSize = 0 
Set WShell=CreateObject(&quot;WScript.Shell&quot;) 
Set objFSO = CreateObject (&quot;scripting.fileSystemObject&quot;)       &#039;Подключение к объект 

oldDateloc = Time() 
  
Set objTxtFile = objFSO.OpenTextFile(flBase, 1) 

&#039;Подключение объектов 
Set Arg = WScript.Arguments.Named    
    
&#039;Проверка аргументов 
&#039;Присвоение пути копирования 
If Arg.Exists(&quot;source&quot;) Then      &#039;Значение первого аргумента                      
 sFolder = Arg(&quot;source&quot;)                                        
 Else 
 sFolder = &quot;H:\SQL_BACKUP\&quot; 
 End If 
If Arg.Exists(&quot;dest&quot;) Then   &#039;Значение второго аргумента 
 dFolder = Arg(&quot;dest&quot;)                
 Else 
 dFolder = &quot;\\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp;rDate &amp;&quot;\&quot; 
 objFSO.CreateFolder(dFolder) 
 End If    
  
If Arg.Exists(&quot;help&quot;) Xor Arg.Exists(&quot;h&quot;) Then   &#039;Значение третьего аргумента 
 WScript.Echo(&quot;Cкрипт для копирования бекапов, и хранения определенного количества архивов&quot;+ vbCrLf + vbCrLf) 
 WScript.Echo(&quot;Атрибуты:&quot; + vbCrLf + vbCrLf + &quot;/source:папка-источчник&quot; + vbCrLf + &quot;/dest:папка-приемник&quot;) 
 WScript.Quit 1 
 End If 

 &#039;Пишем лог. 
if objFSO.FolderExists(sFolder) Then 
 LogFile = &quot;H:\log\log-&quot; &amp;rDate &amp; &quot;.log&quot; &#039;создаем файл 
 Set objOutputFile = objFSO.CreateTextFile(LogFile, TRUE) 
   if objFSO.FolderExists(dFolder) Then    
   Else 
   WScript.Echo(&quot;Папка &quot; &amp; dFolder &amp; &quot; не существует!!!!!!!&quot;+ vbCrLf) 
   objOutputFile.WriteLine(&quot;Папка &quot; &amp; dFolder &amp; &quot; не существует!!!!!!!&quot;+ vbCrLf) &#039;в логи 
   body = CHR(34) &amp;&quot;Папка &quot; &amp; dFolder &amp; &quot; не существует!!!!!!!&quot; &amp;CHR(34)&#039;Текст сообщения 
   objOutputFile.Close 
   Email 
   WScript.Quit 1 
   End if 
 Else 
  WScript.Echo(&quot;Папка &quot; &amp; sFolder &amp; &quot; не существует!!!!!!!&quot;+ vbCrLf) 
  body = CHR(34) &amp;&quot;Папка &quot; &amp; sFolder &amp; &quot; не существует!!!!!!!&quot; &amp;CHR(34) &#039;Текст сообщения 
  Email  
  WScript.Quit 1 
End if 


WScript.Echo(&quot;Источник:&quot; &amp;sFolder ) &#039;на экран 
objOutputFile.WriteLine(&quot;Источник:&quot; &amp;sFolder ) &#039;в логи 
WScript.Echo(&quot;Приемник:&quot; &amp;dFolder ) 
objOutputFile.WriteLine(&quot;Приемник:&quot; &amp;dFolder ) 
WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 




&#039;Удалнение старых бекапов на Tr1 
 WScript.Echo(&quot;Удалнение старых бекапов на Tr1.....&quot;) 
objOutputFile.WriteLine(&quot;Удалнение старых бекапов на Tr1.....&quot;) 
WScript.Echo(&quot;==============================================&quot;+ vbCrLf) 
objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf) 

If objFSO.FolderExists(&quot;\\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp; oldDaterm) Then                        &#039;Проверка на существование 
   WScript.Echo(&quot;Папка \\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp; oldDaterm &amp;&quot; существует и бедет удалена&quot;) 
   objOutputFile.WriteLine(&quot;Папка \\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp; oldDaterm &amp;&quot; существует и бедет удалена&quot;) 
   objFSO.deleteFolder (&quot;\\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp; oldDaterm) 
   WScript.Echo(&quot;Папка удалена!&quot;) 
   objOutputFile.WriteLine(&quot;Папка удалена!&quot;) 
   WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
   objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
 Else 
   WScript.Echo(&quot;Папка \\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp; oldDaterm &amp;&quot; не существует!&quot;) 
   objOutputFile.WriteLine(&quot;Папка \\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp; oldDaterm &amp;&quot; не существует!&quot;) 
    
   WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
   objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
End If 

WScript.Echo(&quot;Ежедневное Копирование бекапов на Tr1.....&quot;) 
objOutputFile.WriteLine(&quot;Ежедневное Копирование бекапов на Tr1.....&quot;) 
WScript.Echo(&quot;==============================================&quot;+ vbCrLf) 
objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf) 

Do Until objTxtFile.AtEndofStream 
    strNextLine = objTxtFile.Readline 
   ReDim Preserve ArrBase(intSize) 
        ArrBase(intSize) = strNextLine 
      intSize = intSize + 1 
    
Loop 


Dim i 
For i = 1 To UBound(ArrBase) 
    
   sFile = &quot;H:\SQL_BACKUP\&quot; &amp;ArrBase(i) &amp;&quot;\&quot; &amp;ArrBase(i) &amp;&quot;_backup_&quot; &amp;Year &amp;&quot;_&quot; &amp;Month &amp;&quot;_&quot; &amp;Day &amp;&quot;.rar&quot; 
   oldFile = &quot;H:\SQL_BACKUP\&quot; &amp;ArrBase(i) &amp;&quot;\&quot; &amp;ArrBase(i) &amp;&quot;_backup_&quot; &amp;oldDateLoc &amp;&quot;.rar&quot; 
   dFolder = &quot;\\Tr1\SQL_BACKUP\everyday\Back_&quot; &amp;rDate &amp;&quot;\&quot; &amp;ArrBase(i) &amp;&quot;\&quot; 
   iDir = &quot;H:\SQL_BACKUP\&quot; &amp;ArrBase(i) 
       
   objFSO.CreateFolder(dFolder) 
   FileName = ChackFile (iDir, ArrBase(i)) 
            if status = 1 Then 
               arch 
               WScript.Echo(&quot;База &quot; &amp;ArrBase(i) &amp;&quot; за архивирована.&quot;+ vbCrLf) 
               objOutputFile.WriteLine(&quot;База &quot; &amp;ArrBase(i) &amp;&quot; за архивирована.&quot;+ vbCrLf)    
            Else 
               WScript.Echo(&quot;Файл базы &quot; &amp;ArrBase(i) &amp;&quot; отсутствует.&quot;+ vbCrLf) 
               objOutputFile.WriteLine(&quot;Файл базы &quot; &amp;ArrBase(i) &amp;&quot; отсутствует.&quot;+ vbCrLf) 
            End if 
            if objFSO.FileExists (sFile) Then             
               CopyFile 
               WScript.Echo(&quot;Файл &quot; &amp;sFile &amp;&quot; перемещен... &quot;+ vbCrLf ) 
               objOutputFile.WriteLine(&quot;Файл &quot; &amp;sFile &amp;&quot; перемещен... &quot;+ vbCrLf) 
            Else 
               WScript.Echo(&quot;Файл &quot; &amp;sFile &amp;&quot; отсутствует!!! &quot;+ vbCrLf ) 
               objOutputFile.WriteLine(&quot;Файл &quot; &amp;sFile &amp;&quot; отсутствует!!! &quot;+ vbCrLf)                   
            End if 
            DelFile 
 Next    
    
&#039;Закрытие файла логов 
objOutputFile.Close 
&#039;Удаление старых логов 
if objFSO.FileExists(&quot;H:\log\log-&quot; &amp; oldDaterm &amp; &quot;.log&quot;) Then 
   objFSO.deleteFile (&quot;H:\log\log-&quot; &amp; oldDaterm &amp; &quot;.log&quot;) 
End if 

WrDate 
&#039;objFSO.deleteFolder (&quot;H:\SQL_BACKUP\BP81&quot;) 
body = CHR(34) &amp;&quot;Ежедневное копирование бекапов успешно выполнено!!!!&quot; &amp;CHR(34) 
Email 
  
&#039;Отправка письма 
Sub Email 
   subj = CHR(34) &amp;&quot;Backup_1C_SQl&quot; &amp;CHR(34) 
   cons = &quot;-charset windows-1251 -to info@mail.ru -subject &quot; &amp;subj &amp;&quot; -body &quot;&amp;body &amp;&quot; -attach &quot; &amp;LogFile 
   WShell.Run(&quot;H:\script\blat.exe &quot; &amp;cons ) 
End Sub    

&#039; копирование ежедневных бекапов на Tr1... 
Sub CopyFile 
   WScript.Echo(&quot;Перемещение &quot; &amp;sFile &amp;&quot; на Tr1... &quot; &amp;Now) 
   objOutputFile.WriteLine(&quot;Перемещение &quot; &amp;sFile &amp;&quot; на Tr1... &quot; &amp;Now) 
   objFSO.CopyFile sFile, dFolder    
End Sub 

&#039;Полное копирование на Tr1... 
Sub CopyFolder 
   WScript.Echo(&quot;Копирование бекапов на Tr1.....&quot;) 
   objOutputFile.WriteLine(&quot;Копирование бекапов на Tr1.....&quot;) 
   WScript.Echo(&quot;==============================================&quot;+ vbCrLf) 
   objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf) 

   If objFSO.FolderExists(dFolder) Then 
      WScript.Echo(&quot;Перемещение бекапов на Tr1... &quot; &amp;Now) 
      objOutputFile.WriteLine(&quot;Перемещение бекапов на Tr1... &quot; &amp;Now) 
      objFSO.CopyFolder sFolder, dFolder , OverWriteFiles               &#039;Копирование каталогов 
      WScript.Echo(&quot;Бекапы перенесены на Tr1 успешно!!! &quot; &amp; Now) 
      objOutputFile.WriteLine(&quot;Бекапы перенесены на Tr1 успешно!!! &quot; &amp; Now) 
      WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
      objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
   Else 
      WScript.Echo(&quot;Папка &quot; &amp; dFolder &amp;&quot; не существует! Данный не перенесены!!&quot;) 
      objOutputFile.WriteLine(&quot;Папка &quot; &amp; dFolder &amp;&quot; не существует! Данный не перенесены!!&quot;) 
      WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
      objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
   End If 
End Sub 

Sub arch 
   WScript.Echo(&quot;==================Архивация базы &quot; &amp;ArrBase(i) &amp;&quot;...===================================&quot;+ vbCrLf) 
   objOutputFile.WriteLine(&quot;==================Архивация базы &quot; &amp;ArrBase(i) &amp;&quot;...===================================&quot;+ vbCrLf) 
   WShell.Run(&quot;H:\script\rar m H:\SQL_Backup\&quot; &amp;ArrBase(i) &amp;&quot;\&quot; &amp;ArrBase(i) &amp;&quot;_backup_&quot; &amp;&quot; -agyyyy_mm_dd -m5 -rr -idcp H:\SQL_Backup\&quot; &amp;ArrBase(i) &amp;&quot;\&quot; &amp;ArrBase(i) &amp;&quot;_backup_&quot; &amp;Year &amp;&quot;_&quot; &amp;Month &amp;&quot;_&quot; &amp;Day &amp;&quot;*.bak &quot;) 
    Sleep = TimeSleep (iDir, FileName) 
   WScript.Sleep(Sleep) 
End sub 

Sub DelFile 
   WScript.Echo(&quot;Удалнение старых бекапов локально.....&quot;) 
   objOutputFile.WriteLine(&quot;Удалнение старых бекапов на локально.....&quot;) 
   WScript.Echo(&quot;==============================================&quot;+ vbCrLf) 
   objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf) 

   If objFSO.FileExists(oldFile) Then                        &#039;Проверка на существование 
      WScript.Echo(&quot;Файл &quot; &amp; oldFile &amp;&quot; существует и бедет удален&quot;) 
      objOutputFile.WriteLine(&quot;Файл &quot; &amp; oldFile &amp;&quot; существует и бедет удален&quot;) 
      objFSO.deleteFile(oldFile) 
      WScript.Echo(&quot;Файл удален!&quot;) 
      objOutputFile.WriteLine(&quot;Файл удален!&quot;) 
      WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
      objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
   Else 
      WScript.Echo(&quot;Файл &quot; &amp; oldFile &amp;&quot; не существует!&quot;) 
      objOutputFile.WriteLine(&quot;Файл &quot; &amp; oldFile &amp;&quot; не существует!&quot;) 
      WScript.Echo(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
      objOutputFile.WriteLine(&quot;==============================================&quot;+ vbCrLf + vbCrLf) 
   End If 
End Sub 

Function Time() 
Year = DatePart(&quot;yyyy&quot;, Now) 
   if DatePart(&quot;m&quot;, Now) &lt; 10 Then 
      Month = 0 &amp;DatePart(&quot;m&quot;, Now) 
   Else 
      Month = DatePart(&quot;m&quot;, Now) 
   End if 

   if DatePart(&quot;d&quot;, Now) &lt; 10 Then 
      Day = 0 &amp;DatePart(&quot;d&quot;, Now) 
   Else 
      Day = DatePart(&quot;d&quot;, Now) 
   End if 

rDate = Day &amp;&quot;-&quot; &amp;Month &amp;&quot;-&quot; &amp;Year 
&#039;Дата старого архива удаленно 
   Dim oldDayrm, oldMonthrm, oldYearrm 
oldDayrm = Day 
oldMonthrm = Month 
oldYearrm = Year 
if (oldDayrm &lt; 31) then 
   if ( oldMonthrm = 01 or 04 or 06 or 08 or 09 or 11) Then 
      oldDayrm = 31 - (30 - oldDayrm) 
      if oldMonthrm = 01 Then 
         oldMonthrm = 12 
         oldYearrm = oldYearrm - 1 
      End if 
      if oldMonthrm = 11 then 
         oldMonthrm = oldMonthrm - 1 
      Else 
         oldMonthrm = &quot;0&quot; &amp;(oldMonthrm - 1) 
      End if 
       
   Elseif (oldMonthrm = 03) Then 
      if oldDayrm &gt; 3 Then 
         oldDayrm = 59 - (30 - oldDayrm) 
         oldMonthrm = oldMonthrm - 2 
      Else 
         ldDayrm = 28 - (30 - oldDayrm) 
         oldMonthrm = oldMonthrm - 1 
      End if 
   Else 
      oldDayrm = 30 - (30 - oldDayrm) 
      if oldMonthrm = 12 then 
         oldMonthrm = oldMonthrm - 1 
      Else 
         oldMonthrm = &quot;0&quot; &amp;(oldMonthrm - 1) 
      End If 
   End if 
End if 
    
&#039;Дата старого архива локально 
Dim oldDay, oldMonth, oldYear 
oldDay = Day 
oldMonth = Month 
oldYear = Year 
if (oldDay &lt; 8) then 
   if ( oldMonth = 01 or 04 or 06 or 08 or 09 or 11) Then 
      oldDay = 31 - (7 - oldDay) 
      if (oldMonth = 01) Then 
         oldMonth = 12 
         oldYear = oldYear - 1 
      End if 
      if oldMonth = 11 then 
         oldMonth = oldMonth - 1 
      Else 
         oldMonth = &quot;0&quot; &amp;(oldMonth - 1) 
      End If                
   Elseif (oldMonth = 03) Then 
      oldDay = 28 - (7 - oldDay) 
      oldMonth = &quot;0&quot; &amp;(oldMonth - 1) 
   Else 
      oldDay = 30 - (7 - oldDay) 
      if oldMonth = 12 then 
         oldMonth = oldMonth - 1 
      Else 
         oldMonth = &quot;0&quot; &amp;(oldMonth - 1) 
      End If 
   End if 
End if 
   Time = oldYear &amp;&quot;-&quot; &amp;oldMonth &amp;&quot;-&quot; &amp;oldDay 
    
End Function 

sub WrDate 
   Dim objFileDate 
   set objFileDate = objFSO.CreateTextFile(&quot;LastBackDay.txt&quot;, TRUE) 
   objFileDate.WriteLine(Day) 
   objFileDate.WriteLine(Month) 
   objFileDate.WriteLine(Year) 
   objFileDate.Close 
End sub 

Function ChackFile (iDir, BaseName) 
   Dim Files, Maska, Re 
   Set Files = objFSO.GetFolder(iDir).Files 
   Maska = &quot;^&quot; &amp;BaseName &amp;&quot;_backup_&quot; &amp;Year &amp;&quot;_&quot; &amp;Month &amp;&quot;_&quot; &amp;Day &amp;&quot;_......_.......\.bak$&quot; 
   status = 0 
   Set Re = New RegExp 
   Re.Pattern = Maska 
   Re.IgnoreCase = True 

   For Each File In Files 
      If Re.Test(File.Name) Then 
         ChackFile = File.Name 
         status = 1 
      end if 
      
   Next 

End Function 

&#039;Вычисление время задержки 
Function TimeSleep (iDir, FileName) 
   Dim objFile, Target, FileSize 
   Target = iDir &amp;&quot;\&quot; &amp; FileName 
   Set objFile = objFSO.GetFile(target) 
   FileSize = objFile.Size 
      If FileSize &lt; 300000000 Then 
         TimeSleep = 300000 
      ElseIf FileSize &lt; 100000000 Then 
         TimeSleep = 1800000 
      ElseIf FileSize &lt; 5000000000 Then 
         TimeSleep = 3600000 
      ElseIf FileSize &lt; 10000000000 Then 
         TimeSleep = 7200000 
      ElseIf FileSize &lt; 30000000000 Then 
         TimeSleep = 10800000 
      ElseIf FileSize &lt; 80000000000 Then 
         TimeSleep = 14400000 
      Else 
         TimeSleep = 18000000 
      End if 
End function</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (admin-nsk)]]></author>
			<pubDate>Thu, 20 Jan 2011 10:42:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44096#p44096</guid>
		</item>
	</channel>
</rss>
