Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


sov44,
Цитата:
чтобы бекап был на три дня
- это неопределённая постановка вопроса. Вот Вам идея решения, нечто подобное реализовано у меня.
Делаете 3 директории Dir1 Dir2 Dir3
Ежедневные бэкапы делаем в Dir1
Но перед бэкапом,
если в Dir2 есть бэкап, убиваем бэкап в Dir3, move бэкап из Dir2 в Dir3
move бэкап из Dir1 в Dir2
Делаем бэкап в Dir1

То есть получаем, что в Dir1 самый свежий бэкап, а в Dir3 самый старый.

Romano,Обещанный скрипт VBS
Код: Выделить весь код
Rar = """C:\Program Files\Winrar\Winrar.exe"" a -r -df "

WhereIn = "Q:\Delete\Servername1\FileRes1\Dir1\In\"     ' Пути без кавычек с \ на конце
WhereOut = "Q:\Delete\Servername1\FileRes1\Dir1\Out\"
WhereArc = "Q:\Delete\Servername2\FileRes2\BackupDir1\"

D = Day(Date)
If D < 10 Then DD = "0" + CStr(D) Else DD = CStr(D)

M = Month(Date)
If M < 10 Then MM = "0" + CStr(M) Else MM = CStr(M)

ToDay = "M" + MM + "_D" + DD        ' Имя сегодняшней директории, её не архивируем Mdd_Ddd

Set WS = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

For i = 1 To 2
    
    If i = 1 Then Set F = FSO.GetFolder(WhereIn) Else Set F = FSO.GetFolder(WhereOut)
    
    Set SubF = F.SubFolders

    For Each Folder In SubF
        FN = UCase(Folder.Name)
        
        If ToDay <> FN Then
            YYYY = CStr(Year(Folder.DateCreated))
            
            On Error Resume Next
            
            If Not FSO.FolderExists(WhereArc + YYYY) Then Call FSO.CreateFolder(WhereArc + YYYY)
            If Err.Number <> 0 Then MsgBox "Не удалось создать папку для архивов"
    
            On Error GoTo 0
            
            If FSO.FolderExists(WhereArc + YYYY) Then
                YY = Mid(YYYY, 3, 2)
                SRar = Rar + """" + WhereArc + YYYY + "\ArcFileName" + Mid(FN, 6, 2) + Mid(FN, 2, 2) + YY + """"
                SRar = SRar + " """ + WhereIn + FN + """" + " """ + WhereOut + FN + """"
                Rez = WS.Run(SRar, 1, True)
            End If
        End If
    Next
    
Next
Но не надо иллюзий: VBS-скрипт не надёжнее батника, а если у Вас батник не отрабатывал, то ищите причину в доступах, в планировщике (если батник вручную отрабатывает наутро)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:15, 22-03-2011 | #5