Главная > WSH скрипты > Скрипт для бэкапа папки в rar-архив и удаления архивов старше N дней
Скрипт для бэкапа папки в rar-архив и удаления архивов старше N дней17 апреля 2012. Разместил: dimon |
Потребовался скрипт который будет архивировать определенную папку в rar-архив каждые десять минут.
Запуск скрипта планируется выполнять с помощью стороннего ПО (например - xStarter). Перед тем как создать новый архив скрипт должен проверить наличие старых архивов и удалить файлы старше N дней. Естественно скрип должен записывать свои действия в лог-файл. Вот что у нас получилось: '---------------------------------------------------------------------- ' ' Copyright (c) All rights reserved. ' ' ' AUTHOR: tudimon.com ' DATE: 17.04.2012 ' NAME: backupFolder2rar_v1.vbs ' ' COMMENT: ' ' Каждые десять минут нужно упаковывать папку в Rar-архив. ' Архивы старше N суток нужно удалять. ' ' Запуск скрипта каждые десять минут планируется с помощью стороннего ПО. ' ' Rar.exe должен лежать в той же папке что и скрипт. ' '---------------------------------------------------------------------- ' Задаваемые параметры для работы скипта DataFolder = "C:\1\data" ' Папка с файлами для архиврования (без слэша на конце) BackupFolder = "C:\backup" ' Папка для архивных копий (без слэша на конце) N = 2 ' Кол-во суток свыше которых файл считается устаревшим LogFilePath = "c:\1\log_backup.log" ' лог-файл LogTXT = "" ' переменная для записи в лог FlagDel = 0 ' Флаг что хотя бы один файл был удален '---------------------------------------------------------------------- LogTXT = LogTXT & vbNewLine & "******************** " & Now & " ********************" ' **** Удаляем "устаревшие" файлы Set objFSO = CreateObject("Scripting.FileSystemObject") ' Вычислим дату olddate = DateAdd("d", -N, date) LogTXT = LogTXT & vbNewLine & "Date limit " & olddate ' Проверяем даты создания файлов в папке с бэкапами Set folder = objFSO.GetFolder(BackupFolder) Set fc = folder.Files For Each f1 in fc If f1.DateLastModified < olddate Then LogTXT = LogTXT & vbNewLine & "Delete file " & f1.name & " (DateLastModified = " & f1.DateLastModified & ")" objFSO.deletefile(f1) FlagDel = 1 End If Next ' Если ни один файл не был удален запишем это в лог If FlagDel = 0 Then LogTXT = LogTXT & vbNewLine & "There are no files to delete!" End If ' **** Бэкапим папку ' сформируем штамп со временем бэкапа DateTimeStamp = Year(now) & Right("00" & CStr(Month(Now)), 2) & Right("00" & CStr(Day(Now)), 2) & "_" & Right("00" & CStr(Hour(Now)), 2) & "-" & Right("00" & CStr(Minute(Now)), 2) & "-" & Right("00" & CStr(Second(Now)), 2) ' Сформируем команду для RAR-а cmd = "rar.exe a -r -w" & BackupFolder &"\tmp "& BackupFolder & "\backup_" & DateTimeStamp &".rar " & DataFolder ' выполним Set objShell = CreateObject("WScript.Shell") Set objScriptExec = objShell.Exec(cmd) LogTXT = LogTXT & vbNewLine & "Create file " & "backup_" & DateTimeStamp &".rar" ' **** Пишем лог Set FSO = CreateObject("Scripting.FileSystemObject") Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True) LogTXT = LogTXT & vbNewLine & "*************************************************************" LogFile.WriteLine LogTXT LogFile.Close Set FSO = Nothing Set objFSO = Nothing WScript.Quit 0 Если необходимо наблюдать прогресс упаковки, то вместо rar.exe нужно использовать winrar.exe - будет видно окошко с процентом выполнения архивирования, все ключи консольной версии rar работают и с обычной. Вернуться назад |