Автоматизированное резервное копирование рабочих станций 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 папку для юзера. Но это уже другая история.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 12

    0
    Я все понимаю, но есть же перемещаемые профили, которые хранятся на сервере, а не на локальном компьютере. Соответственно включаем перемещаемые профили, а на сервере включаем Volume Shadow Copy для нужных нам дисков\папок. Туда же и мои документы.
    • UFO just landed and posted this here
      • UFO just landed and posted this here
          0
          Квоты?
            0
            Научились. Во-первых, есть квоты; во-вторых, периодически проводятся проверки, по результатам которых сотрудник легко и непринужденно получает выговор с ознакомлением под подпись. Вопросы кадровые типа наличия папок XXX в рабочих документах должны решаться на уровне отдела кадров, а не на уровне IT службы.
          +1
          Вы интересовались технологиями которые для этой задачи предлагает Microsoft?
            0
            Hide:

            Да, прошу прощения, я упустил момент фильтров. Нежелательные файлы указаны в файле /DATA/exclude, который отрабатывает вот в этом моменте --exclude-from=%FS_SRC_BCK%DATA/exclude. На данном моменте там содержатся следующие расширения:

            Administrator
            pagefile.sys
            operator
            Temporary Internet Files
            Temp
            cobian
            $RECYCLE.BIN
            System Volume Information
            *.tmp
            *.mp3
            *.avi
            *.temp
            *.mpeg
            *.mpg
            *.wma
            *.wmv
            *.flac
            *.ape

            mrMendoza:

            Да, этот момент рассматривается в данный момент с установкой SAN/NAS NexentaStor Community Edition, использовать Shared профили для пользователей и держать их на сервере

            Allicenwonders:

            Да, Майкрософт позволяет использовать «Windows Backup» для этих целей. К сожалению, там есть ряд минусов. 1 — Нет возможности контролировать это через Групповые политики, можно только либо включить сервис, либо выключить. (Возможно это делать при помощи определенных команд, но этот вопрос дальше не разбирался), 2 — Windows Backup пишет всё в один .zip архив, который не так удобен для восстановления потерянных файлов и не позволит делать «Snapshots» по дням недели, которые мы используем сейчас на хосте, который принимает резервные копии, я это опишу в следующий раз
              0
              Этот список файлов некорректен, т.к. могут быть различного рода рабочие документации\презентации в видео формате (у нас немцы и французы любят такие документации докладывать к обычным pdf); так же можно переслать видео описание неисправности оборудования поставщику для более точного и быстрого диагноза; так же не подходит этот вариант, если у Вас в работе требуется обработка видео\звуков\картинок.

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

              Что касается инструментов, которые предлагает Майкрософт:
              В моем случае при приеме на работу есть политики, с которыми сотрудник должен ознакомиться, среди политик есть та, которая описывает каким образом и где пользователь должен хранить документы. В политике описывается, что если документы хранятся в правильном месте, то есть возможность самостоятельно сделать откат на любую дату в пределах последнего месяца (правой кнопокй мыши по нужному файлу --> properties --> previous version --> тадам), а так же с помощью сотрудников IT на любую дату в пределах последних 2-х лет. Достигается это простыми перемещаемыми профилями, и включенным теневым копированием нужных томов 2 раза в сутки, так же существует еженедельный и ежемесячный бэкап всего этого добра на внешние жесткие диски с ежемесячным складированием их в удаленный сейф. Причем сами бэкапы так же есть 2-х видов, 1 вид бэкапа создает только копии нужных томов с использованием теневого копирования, второй тип бэкапа создает образ живого сервера, опять же с использованием теневого копирования. Делается все автоматически, за исключением замены внешних жестких дисков, как ни крути, но приходится нажимать кнопочку для отключения диска, а потом кнопочку для включения диска — ответственный товарищ уже обучен и не ошибается. Раз в квартал делается проверка работоспособности бэкапа путем разворачивания его на отдельно стоящем компьютере.

              Забудьте про Windows Backup, используйте Volume Shadow Copy Service (VSS).
              0
              Previous Versions включены и настроены на всех машинах в окружении по умолчанию, и уже не первый раз спасали пользователя, когда ему нужно было восстановить более свежий чем вчерашний бекап.

              К сожалению, они не работают, когда у пользователя украли компьютер. Поэтому используется связка vshadow+rsync на хост, previous versions на рабочих станциях, + дополнительное ежедневное копирование на внешние носители, защищённые truecrypt либо bitlocker. Конечно, самая важная информация хранится на файловом сервере, который так же имеет резервные копии на том же backup сервере и внешних жёстких дисках.

              Приведу примеры, когда данный способ позволял максимально быстро восстановить работоспособность офиса:

              Сгорел Hyper-V Host, на котором крутится AD, FS, WSUS, + BIND

              Соответственно, FS недоступен. Как быстро вернуть его в рабочее состояние, если FS используется из трёх локаций, и необходим ежедневно? Просто!

              Идём на backup хост, на котором стоит Rsync + SMB winbind krb5, и который подключен в домейн, меняем настройки самбы, делаем smb restart, и получаем полную копию FS, которая доступна по другому FQDN. Пользователи работают, все счастливы. Конечно, права получаются всем на всё. Но это лучше, чем два дня ждать новой материнской платы и блока питания, и не работать вообще. По приходу деталей — ставим сервер на место, делаем xcopy folder D:\Shares\Shared\ /S /D:D:DD-MM-2011 /Y, и получаем актуальную копию измененных файлов на родном FS.

              Даунтайм — 5 минут.
              Исключение головной боли — бесценно.

              Резервное копирование может быть организовано у каждого по-своему. Если это сработает при восстанавлении данных из копии быстро и безопасно, минимизируя потери, спасая работу и время организации.
                0
                Вы либо не читаете, либо совершенно не понимаете о чем идет речь: Перемещаемые профили — это означает, что профили пользователя хранятся на сервере, документы пользователя так же хранятся на сервере (не в профиле, но на сервере — там есть нюансы), у пользователя есть только локальная копия документов, так называемые Offline Folders. Соответственно даже если у пользователя украли компьютер, то он просто берет другой компьютер из того же домена, вводит свои имя пользователя и пароль — вуаля, получает свой профиль со всеми настройками и подключенными документами с сервера.

                Соответственно Previous Version — функция не пользовательского компьютера, а сервера, на котором хранятся документы.

                Правда если у пользователя украли копьютер, то это уже работа для СБ, т.к. его не должны украсть. С ноутбуками проще, т.к. используется шифрование с участием отпечатка пальца.

                Тот вариант, который предлагается Вами был бы очень полезен в Windows 2000, т.к. начиная с 2003 и ХР актуальность такого способа вызывает очень большые сомнения.

                Допустим, если Вам нужна просто актуальная копия данных на другом железе, в вашем случае это хост, на котором стоит (Rsync + SMB winbind krb5, и который подключен в домейн), то можно воспользоваться DFS с синхронизацией между 2,3,4...n серверами с ОДНОЙ общей ШАРОЙ, которая будет доступна каждому пользователю. В случае падения одного из серверов пользователь вобще ничего не заметит, у него даже адрес подключения шары не изменится, не нужно менять настройки самбы, не нужно перезапускать сервис, все просто работает.

                Да, кстати, если у Вас Сгорел Hyper-V Host, на котором крутится AD, FS, WSUS, + BIND то, как минимум, Вам нужно будет поднять какой-нибудь контролер домена из того же бэкапа, иначе у Вас ни один пользователь не сможет авторизоваться. И возврат копии выывает сомнения, т.к. слетят права доступа к шарам, после чего Вам потребуется еще некоторое время потратить на восстановление прав доступа.

                И, наконец, самое главное Пользователи работают, все счастливы. Конечно, права получаются всем на всё. Но это лучше, чем два дня ждать новой материнской платы и блока питания, и не работать вообще. не дай Бог среди всех этих общедоступных документов «случайно» окажутся документы, которые не должны быть доступны рядовым сотрудникам, например кадровые документы с указанием зарплат всех сотрудников, включая директоров и ваших соседей по отделу, или конфиденциальная информация о деятельности компании, или подобное — лучше 2 дня подождать новый сервер, чем случайно предоставить доступ туда, куда его категорически нельзя предоставлять. И готово ли Ваше руководство поделиться своими документами с остальными сотрудниками?
                  0
                  Я полностью с вами согласен. Но если мы поднимем глаза на название этого топика, то увидим, что он не называется «Лучший способ организовать пользовательские данные».

                  Если Domain Controller не работает, компьютер использует кешированную сессию, и юзер может зайти, проблема только будет в ДНС, но есть резервный. При возврате копии на место права получаются inherited с парента.

                  По воводу безопасности общего доступа до резервной копии, вы тоже правы, это желательно не практиковать. Но тут уже вступает в силу корпоративная этика, так как компания небольшая, и разделение шар.

                  Да и данная дискуссия, как я уже говорил, иррелевантна, так мы с вами до Virtual Desktop Infrastructure дойдём
                0
                рекомендую посмотреть ещё в сторону бесплатной программы CopyMik. По возможностям уже давно превосходит rsync, вдобавок может ещё сжимать, шифровать и переименовывать итп.
                www.superbasis.de/copymik/index.htm#rus

                Only users with full accounts can post comments. Log in, please.