Thursday, January 14, 2010

Чернопятов Е.А. Простейший backup на основе WinRAR, WSH скриптов и Планировщика задач Windows

взято отсюда: http://blackheel.ru/s_and_a/backup_script.shtml


* Вступление
* Как будет работать бэкап
* Скрипты
* Командная строка WinRAR
* Командные файлы
* Планировщик
* Заключение
* Ссылки

Вступление

Бэкапы надо делать всегда. Особенно для серверов. Это аксиома. Существуют разные способы бэкапа - просто копирование, архивация, множество специализированного софта (в том числе, например, и штатный бэкап от Microsoft), работающего с дисками, лентами, МО и т.д. Но что делать, если сторонний софт устанавливать нельзя, а возможностей штатного не хватает? Например, хочется иметь бэкап некоторых ценных папок сервера, в автоматическом режиме, за, скажем, последнюю неделю? Писать свою софтину? Можно. Но не охота. Из пушки по воробьям. Охота обойтись просто скриптом. И в этом нам поможет хороший архиватор WinRAR, встроенный планировщик Windows и книга Джесси Торреса "Скрипты для администратора Windows".
Как будет работать бэкап

Итак, мне требуется:

* Хранить бэкап за каждый день в виде архивного файла
* Каждый файл должен создаваться с уникальным именем (в идеале включать дату создания в имя файла)
* Процесс создания бэкапа должен проходить в автоматическом режиме
* Файлы старше 1 недели должны автоматически удаляться

Архивацией будет заниматься WinRAR, он же будет автоматически именовать файлы. Определять возраст и удалять старые файлы будет скрипт (VBScript), а автоматизировать все я буду с помощью встроенного Планировщика Windows.
Скрипты

Основу скриптов составляют процедуры из книги Джесси Торреса "Скрипты для администратора Windows" (а конкретно из главы 3 "Обслуживание файлов"). Они были дополнены мной для реализации моих задач.
Вот какие функции нам понадобятся (привожу код целиком):

' ----------
' Начало основной секции. Отсюда начнется выполнение при запуске скрипта.
Set FSO = CreateObject("Scripting.FileSystemObject")
' директория, где будут храниться бэкапы. Вы должны вписать свою директорию
' вместо "X:\DailyBackup"
sDir = "X:\DailyBackup"
Set objDir = GetFolder(sDir)
DeleteOlderFiles(objDir)

' ---------- Секция функций

' Получить файл
Function GetFile(sFile)
On Error Resume Next

Set FSO = CreateObject("Scripting.FileSystemObject")
Set GetFile = FSO.GetFile(sFile)
if err.number <> 0 then
WScript.Echo "Error Opening file " & sFile & VBlf & "["&Err.Description&"]"
Wscript.Quit Err.number
end if
End Function

' Получить папку
Function GetFolder (sFolder)
On Error Resume Next

Set GetFolder = FSO.GetFolder(sFolder)
if err.number <> 0 then
WScript.Echo "Error Opening folder " & sFolder & VBlf & "["&Err.Description&"]"
Wscript.Quit Err.number
end if
End Function

' удалить один файл (имя файла передается в sFile)
Sub DeleteFile(sFile)
On Error Resume Next

FSO.DeleteFile sFile, True
if err.number <> 0 then
WScript.Echo "Error Deleteing file " & sFile & VBlf & "["&Err.Description&"]"
Wscript.Quit Err.number
end if
End Sub

' Удалить файлы старше 7 дней
Sub DeleteOlderFiles(objDir)
' просматриваем все файлы в директории
for each efile in objDir.Files
' используем DateLastModified, а не DateCreated, поскольку
' DateCreated не всегда возвращает правильную дату
FileDate = efile.DateLastModified
Age = DateDiff("d",Now,FileDate)
' в данном случае возраст файла не больше семи дней
If Abs(Age)>7 Then
DeleteFile(efile)
End If
next
End Sub

Этот код помещаем в файл remove_old_backups.vbs.
Командная строка WinRAR

Архиватор WinRAR обладает мощной поддержкой командной строки. В частности, он может формировать имя файла на основе пользовательского шаблона, включая в него разную служебную информацию, например, дату. Что нам, собственно говоря, и требуется. Кроме того, он умеет работать со списком файлов или директорий на архивацию, что сильно облегчает редактирование командного файла.

Я использую следующую командную строку для архивирования (прописана в файле make_daily.bat):

"c:\program files\winrar\winrar.exe" a -s -r -rr10p -dh -ed -m3 -ilogC:\DailyBackupScript\dailybackup.log -ag+YYYYMMDD X:\DailyBackup\backup

Разберем ее по составляющим:

* "c:\program files\winrar\winrar.exe" - путь к WinRAR-у
* a - команда на добавление файлов
* -s - режим сжатия "solid"
* -r - с поддиректориями
* -rr10p - на всякий случай добавляем информацию для восстановления (-rr), в количестве 10% (10p)
* -dh - открывать шареные фалы. Полезно, если кто-нибудь засиделся до 12 ночи, и редактирует файл, который должен уйти в бэкап
* -ed - не добавлять пустые директории
* -m3 - степень сжатия 3
* -ilogC:\DailyBackupScript\dailybackup.log - вести лог (-ilog) и записывать его в "C:\DailyBackupScript\dailybackup.log"
* -ag+YYYYMMDD X:\DailyBackup\backup - формировать имя файла, прибавляя в начало текущий год, месяц и число. Имя файла будет иметь примерно такой вид: 20060927backup.rar
* X:\DailyBackup\backup - папка, куда писать бэкапы и имя бэкапа (к которому в начало дописываются год, месяц, число)

Командные файлы

Вся работа по созданию бэкапа строится на основе командных файлов (.bat-файлов). У меня их два:

* make_daily.bat - содержит команды для создания архивного файла или файлов.
* backup_task.bat - выполняет следующие действия:
o вызывает интерпретатор скриптов cscript и передают ему на выполнение скрипт, удаляющий старые файлы.
o вызывает make_daily.bat и передает ему в качестве параметра либо папку, которую надо архивировать, либо файл-список (в котором несколько папок на архивацию).
* В свою очередь, backup_task.bat вызывается Планировщиком Windows в назначенное время

Содержимое файла make_daily.bat (в одну строку):

@"c:\program files\winrar\winrar.exe" a -s -r -rr10p -dh -ed -m3 -ilogC:\DailyBackupScript\dailybackup.log -ag+YYYYMMDD X:\DailyBackup\backup %1

Содержимое файла backup_task.bat:

@cscript remove_old_backups.vbs
call make_daily.bat @backup.lst

Для работы также необходимо создать файл backup.lst (обычный текстовый файл). Он должен содержать список директорий, которые включаются в бэкап. Каждая директория должна располагаться на отдельной строчке, например, так:

c:\Projects
c:\VeryImportantProjects
c:\Folder Name With Spaces\SubFolder

Обратите внимание, что имя директории-источника, содержащее пробелы, не обязательно заключать в кавычки, если вы пользуетесь файл-списком. Если же вы передаёте его напрямую, то кавычки обязательны. Не ставьте завершающий слэш - WinRAR этого не поймёт.
Планировщик

Планировщик можно вызвать через меню Start|Programs|Accessories|System Tools|Scheduled Tasks, или через Control Panel. Откроется папка Scheduled Tasks, в которую и надо добавить новую задачу. Это можно сделать следующим образом (я привожу только основные шаги).

Дважды щелкаем Add Scheduled Task, чтобы добавить новую задачу



Выберем наш bat-файл:







Зададим имя и периодичность задачи



Зададим время запуска



Зададим учетную запись и пароль, от имени которой будет выполняться задача. Обязательно!



Задача добавлена





Редактировать свойства задачи можно, щелкнув правой кнопкой мыши на иконке задачи в папке Sheduled Tasks и выбрав пункт меню Properties.

Заключение

Вот мы и создали простейший, но мощный :) "бэкапер" (или бэкапщик? как правильно ?) из подручных средств. Его можно расширять и настраивать, менять архиваторы, прикручивать всякие проверки и т.д. И все это без использования сторонних продуктов и почти без программирования.
Надеюсь, мой опыт окажется для вас полезным.
Ссылки

* Файлы к статье. Перед использованием не забудьте изменить все пути в файлах backup.lst, backup_task.bat, make_daily.bat и remove_old_backups.vbs на ваши реально существующие!!! Комментарии в файлах на английском (привычка + сервера у нас специфические).
* WinRAR
* Торрес Дж. "Скрипты для администратора Windows". Специальный справочник. - Спб.: Питер, 2002. - 336 с.: ил., ISBN 5-318-00488-1
* NoNaMe, где проскакивали ссылки на эту и другие полезные книги. Прямой ссылки у меня нет.

Tuesday, January 12, 2010

Disable UAC

1. Нажмите Windows Key + R (winkey + R).
2. В открывшемся окне введите msconfig.
3. Перейдите во вкладку Tools, прокрутите вниз и выберите Disable UAP и нажмите на кнопку.
4. Вы увидите окно командной строке, где будет говориться Command completed successfully.
5, Перезагрузитесь и наслаждайтесь.

спасибо

http://social.technet.microsoft.com/forums/ru-RU/vistaru/thread/1e7c0ba8-dc8d-4949-962f-65f53b34b226/

http://social.technet.microsoft.com/Profile/ru-RU/?user=Ivanov%20Alex%20-%20MCSE&referrer=http%3a%2f%2fsocial.technet.microsoft.com%2fforums%2fru-RU%2fvistaru%2fthread%2f1e7c0ba8-dc8d-4949-962f-65f53b34b226%2f&rh=ZfvY%2fWK6KHOiGRUsfGDrTjm2tLefVgDO4%2bsW1%2bkoprM%3d&sp=forums

Wednesday, January 6, 2010

Sony Ericsson G902 Exchange ActiveSync

To enter settings for Exchange ActiveSync™ :

1. From standby, select "Menu" > Organizer.
2. Select Synchronization > Exchange ActiveSync.
3. Enter a name for the new account and select "Cont."
4. Enter the required settings.
5. Scroll between the tabs to enter additional settings.
6. Select "Save".

Проверил - работает

Tuesday, January 5, 2010

IE PROXI by GPO

source: http://forum.ru-board.com/topic.cgi?forum=8&topic=6576&start=20

Р-А-Б-О-Т-А-Е-Т

Добрый всем день, такая проблема, был везде через сервер обновления установлен IE8, на пользователей через GPO применяется политика установки прокси сервера.
Проверял через gpresult, rsop.msc политика 100% применяется на пользователя, но Ie8 свои параметры менять не хочет. Может кто уже поборолся с этим делом и подскажет что дельное.
P.S Главное еще остались машины с Ie6 там все нормально, политика работает.


найди и обнови административный шаблон для IE8 - " inetres.adm", здесь должен быть (если у тебя XP): %windir%\ie8



модераторуsharerapid
параметры прокси сервера находятся не в административных шаблонах!
Но я разобрался с проблемой GPO и IE8
У меня было 2 ошибки
1. Был задан Gopher (если задан то парамеры прокси на IE8 не применяются)
2. Если есть ошибка в "Не использовать прокси для локальных адресов" и указано как было у меня 192.168.0.0/22, заменил на 192.168.*
Подведя итог:параметр которые применялись от GPO проглатывались IE6 даже с ошибками, а IE8 не тупо применяет GPO а проверяет параметры и если есть ошибка игнорирует GPO, но почему бы не занести эту ошибку в журнал сообщений..-(

Кодировка Terminal Server 2008

решение в кодировке, это понятно.
решение нашел на другом форуме, выкладываю, может будет кому полезно.
правим реестр здесь, меняем значения:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"
"1254"="c_1251.nls"
НО, как предупреждают другие, могут быть проблемы:
"Такое происходит вседствие того, что некоторые программы используют стремную кодировку в руссификации и соответственно пытаются устранить "косяк" изменением значений в реестре. Короче в большинстве случаев идет ошиба кодировки 1252, которую и исправляют на 1251, но тогда в других программах могут быть сбои".
После внесения изменений в реестр, перезагрузите ПК.