Яндекс.Метрика
    Поиск по тегу

    резервное копирование


    Найдено: 1 запись

    Песочница

    Автоматизированное резервное копирование рабочих станций Windows при помощи rsync и vshadow — Часть 1

    Если у вас возникло желание поддерживать рабочие станиции в максимально «защищённом» состоянии, а так же насколько возможно «автоматизировать» этот процесс, то этот пост для вас.

    Будет использоваться:

    Немного batch файла
    Немного Linux сервера
    Немного Windows Server 2008 R2 и Групповых политик

    Идея в следующем — незаметно от самого юзера, чтобы не нарушать его работу, делать еженедельное копирование его профиля, дабы исключить потерю данных, и сохранять его на сервере в максимально защищённом виде.

    Для этого начнём с клиентской части. Мы используем shadow volume create — expand, дабы исключить проблему нечитания открытых пользователем файлов, таких как Outlook pst, или документов. Нам понадобится набор от Microsoft, который содержит vshadow — это Volume Shadow Copy Service SDK 7.2, который можно бесплатно скачать с серверов Microsoft, http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23490.Нам понадобятся vshadow.exe и vshadow.pdb файлы из этого SDK. Внимание — они разные для 64-битных, и 32-битных систем.

    После инсталляции их можно будет найти тут:

    64-bit — %PROGRAMFILES%\Microsoft\VSSSDK72\TestApps\vshadow\bin\obj-chk\amd64
    32-bit — %PROGRAMFILES%\Microsoft\VSSSDK72\TestApps\vshadow\bin\release-xp

    Так же нам понадобится набор файлов из cwrsync под Windows — http://sourceforge.net/projects/sereds/files/cwRsync/4.2.0/cwRsync_4.2.0_Installer.zip/download

    После инсталляции их можно будет найти тут:

    %PROGRAMFILES%\cwRsync\bin

    Складываем все файлы в одну папку, назовём её для удобства «Backup», и начинаем создавать файл, который будет запускать эту «машину смерти» — по факту, это простой batch файл, который будет отрабатывать все действия. Назовём его для удобства «backup.cmd»

    Пишем в файл:

    (неведома магия)

    setlocal
    if NOT "%CALLBACK_SCRIPT%"=="" goto :IS_CALLBACK
    set SOURCE_VOLUME=C:
    set DESTINATION_VOLUME=O:
    set CALLBACK_SCRIPT=%~dpnx0
    set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd
    %~dp0\vshadow.exe -nw -p -script=%TEMP_GENERATED_SCRIPT% -exec=%CALLBACK_SCRIPT% %SOURCE_VOLUME%
    del /f %TEMP_GENERATED_SCRIPT%
    goto :EOF
    :IS_CALLBACK
    setlocal
    call %TEMP_GENERATED_SCRIPT%
    %~dp0\vshadow.exe -el=%SHADOW_ID_1%,%DESTINATION_VOLUME%


    Эта часть «макаронного кода» делает shadow volume copy с C: и подключает её на O:, который мы и будем использовать для копирования, а потом тем же скриптом уберём. Теперь часть, которая отвечает за действия rsync:

    (неведома магия)

    setlocal
    SET CWRSYNCHOME=C:\Backup\ (где папка с файлами rsync и vshadow)
    SET CWOLDPATH=%PATH%
    SET CYGWIN=nontsec
    SET PATH=%CWRSYNCHOME%;%PATH%
    SET HOME=С:\Backup\LOG\ (сюда будем сохранять логи)
    SET RSYNC_PASSWORD=(тут пароль, который установлен на принимающем сервере rsync)
    SET MY_NAME=%computername%

    (теперь указываем, что копировать)

    SET FS_SRC_HOME="/cygdrive/O/Users/" (используем именно в таком формате, указываем папку до "Users")
    SET FS_SRC_BCK="/cygdrive/C/Backup/" (где файлы rsync, чтобы положить их вместе с логами на бекап сервер)

    del /q С:\backup\log\*.log (стираем старые логи перед запуском)

    (запускаем)

    rsync -av --chmod=ug=rwx %FS_SRC_B2% backupusr@hostname::sbackupusr/%MY_NAME%
    rsync -avhP --inplace --stats --del --modify-window=1 --log-file=%FS_SRC_BCK%DATA/backupwork.log --exclude-from=%FS_SRC_BCK%DATA/exclude %FS_SRC_HOME% backupusr@hostname::sbackupusr/%MY_NAME%/snapshot/
    rsync -av %FS_SRC_BCK% backupusr@hostname::sbackupusr/%MY_NAME%/snapshot/Backup/


    Первой командой мы создаём директорию по имени компьютера %computername%
    Второй командой мы копируем данные с временно подключенного диска O:\Users, с сохранением лог-файла.
    Третьей командой мы копируем всю папку C:\Backup, для сохранности лога и самой программы.

    Вот эта строка «backupusr@hostname::sbackupusr» — указывает на пользователя на принимающей стороне а так же хост принимающей стороны. (Будет рассмотрено во втором псто).

    После этого нам необходимо отключить O: диск, так как если мы этого не сделаем, в следующий раз vshadow не сможет подключить туда копию, и копия будет делаться со старого O:\ диска всё время, не смотря на то, что файлы в папке пользователя уже давно изменились.

    (неведома магия)

    SET HOME=%HOMEDRIVE%%HOMEPATH%

    VSHADOW.EXE -ds=%SHADOW_ID_1%


    Это всё нужно сложить в обычный .cmd файл, как я уже указывал выше, сохранить его в папку Backup, где хранятся файлы rsync и vshadow, и запускать по мере надобности. Работает на Windows Vista, Windows 7, Windows XP, 32 и 64-bit

    P.S: Конечно, будет необходимо поднять принимающую машину, в нашем случае на базе *nix, и создать разделы, которые будут защищены true-crypt в случае кражи сервера. Так же в дальнейшем эту папку можно запаковать в msi инсталлер для установки на все рабочие станции через Групповые Политики и использовать их же для создания Scheduled Tasks и закрытия доступа в Backup папку для юзера. Но это уже другая история.