|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Архивация файлов с последующим удалением |
|
VBS/WSH/JS - [решено] Архивация файлов с последующим удалением
|
Новый участник Сообщения: 11 |
Профиль | Отправить PM | Цитировать Ежедневно прикладное ПО создает в каталогах
\\servername1\FileRes1\Dir1\IN \\servername1\FileRes1\Dir1\OUT папки и пишет файлы в них, имена папок формируются по следующему принципу Mxx_Dxx, где М-месяц, D-день. Т.е.набор папок в Dir1\IN(OUT) выглядит так: февраль ------- M02_D01 M02_D02 ....... M02_D28 март ---- M03_D01 M03_D02 ....... M03_D31 Необходимо с использованием VBS скрипта, прописанного в планировщике Windows, архивировать RAR'ом созданные за день файлы в папках IN(OUT) на другой сервер по пути \\servername2\FileRes2\BackupDir1\Год\AchFileNameDDMMYY.RAR, где МM-месяц, DD-день, YY-год т.е. из папок IN(OUT) сливать в один архив, но пути внутри архива сохранять (при распаковке развернется архив в исходные каталоги в том виде в котором они писались отдельно в IN и OUT). Должна быть проверка, что архивирование прошло успешно (может сеть пропадала, свет выключили и т.д.), затем файлы можно удалить. Например, наступило 20.03.2011, появятся две директории, начнут в течении дня писаться файлы \\servername1\FileRes1\Dir1\IN\M03_D20\*.* \\servername1\FileRes1\Dir1\OUT\M03_D20\*.* прошел день, ночью запустился планировщик, файлы запаковались в архив \\servername2\FileRes2\BackupDir1\Год\AchFileName200311.RAR наступит 21.03.2011, начнут в течении дня писаться файлы \\servername1\FileRes1\Dir1\IN\M03_D21\*.* \\servername1\FileRes1\Dir1\OUT\M03_D21\*.* пройдет день, ночью запустился планировщик, файлы запаковались в архив \\servername2\FileRes2\BackupDir1\Год\AchFileName210311.RAR Скрипт будет запускаться с сервера №3 - servername3. Заранее благодарю всех, кто поучаствует в теме. |
|
Отправлено: 16:45, 20-03-2011 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Если не принципиально, батник или vbs, то вот решение в батнике
@Echo Off Set Rar="C:\Program Files\Winrar\Winrar.exe" a -r -df rem Пути без кавычек с \ на конце rem ----------------------------- Set WhereIn=Q:\Delete\Servername1\FileRes1\Dir1\In\ Set WhereOut=Q:\Delete\Servername1\FileRes1\Dir1\Out\ Set WhereArc=Q:\Delete\Servername2\FileRes2\BackupDir1\ rem Имя сегодняшней директории, её не архивируем Mmm_Ddd rem Если дата в системе в формате dd.mm.yyyy rem ---------------------------------------------------- Set ToDay=M%Date:~3,2%_D%Date:~0,2% FOR /F "usebackq delims=" %%i IN (`Dir %WhereIn% /B /A:D`) DO Call :InRar "%%i" "%WhereIn%%%i" FOR /F "usebackq delims=" %%i IN (`Dir %WhereOut% /B /A:D`) DO Call :InRar "%%i" "%WhereOut%%%i" GoTo :Eof :InRar If /I %~1==%ToDay% GoTo :Eof Set Year=%~t2 Set Year=%Year:~6,4% Md %WhereArc%%Year% >Nul 1>Nul 2>nul rem Имя файла архива AchFileNameDDMMYY.RAR rem -------------------------------------- Set AFN=%~1 Set AFN=AchFileName%AFN:~-2%%AFN:~1,2%%Year:~-2% %RAR% "%WhereArc%%Year%\%AFN%" "%WhereIn%%~1" "%WhereOut%%~1" GoTo :Eof За удаление файлов отвечает ключ rar -df, он срабатывает при успешном архивировании. Думаю, на vbs это будет несколько длинее. Будет время и если никто не напишет, изваяю. |
------- Последний раз редактировалось megaloman, 20-03-2011 в 23:06. Отправлено: 22:57, 20-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать megaloman, а как написать скрипт, чтобы бекап был на три дня? При наступлении четвёртого дня, бекап 1 дня перезаписывался, пятого дня - бекап второго перезаписывался и т.д.
|
Отправлено: 13:56, 21-03-2011 | #3 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Ещё раз спасибо, что уделили время. |
|
Отправлено: 17:23, 21-03-2011 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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 |
||
------- Отправлено: 23:15, 22-03-2011 | #5 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Опробовал батник пока, вроде работает). Он лучше, чем имеющийся у меня. У меня такие бэкапы делаются по нескольким папкам, поэтому попробую на одних папках Ваш батник, на других скрипт VBS. Когда сейчас резервирование не проходит, в планировщике код завершения стоит 0х1, а что именно произошло не ясно, ведь иногда там бывает и 0х0, когда все успешно архивируется. |
|
Отправлено: 18:03, 23-03-2011 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [Проблема] Архивация файлов | Brb | Microsoft Windows 7 | 4 | 19-08-2011 10:14 | |
Искажение с последующим зависанием | sylar3000 | Непонятные проблемы с Железом | 3 | 12-04-2010 14:01 | |
Доступ - [решено] Архивация пользовательских файлов отключена системным администратором | AlexxVP | Microsoft Windows 7 | 2 | 03-03-2010 18:25 | |
C/C++ - Си и функция рандома с последующим выводом. | ElHalcone | Программирование и базы данных | 2 | 12-12-2008 21:13 | |
захват DV с последующим сжатием... | el dorado | Видео и аудио: обработка и кодирование | 3 | 23-08-2005 14:17 |
|