Копируем открытые файлы при помощи Volume Shadow Copy Service. Печать
27.12.12 14:55

Копируем открытые файлы при помощи Volume Shadow Copy Service.

Я думаю, все администраторы сталкиваются с задачей резервного копирования файловых серверов.
Если вы не резервируете ваши серверы – срочно подумайте о смене профессии.
Кто-то использует для этого специализированный софт от Symantec, HP и других производителей, но иногда дополнительный софт либо нет возможности приобрести, либо приобретение нецелесообразно.

Тогда на помощь приходят многочисленные утилиты копирования файлов – robocopy, SyncToy, Rsync, но существует определенное ограничение – они не могут копировать заблокированные и открытые на запись файлы (например, файлы личных папок PST, или файловые базы 1С).

Начиная с Windows XP и Server 2003, в клиентские и серверные ОС входит технология Shadow Copy , позволяющая делать «мгновенный снимок» тома. Эта технология автоматически задействуется когда, например, утилита ntbackup создает архив system state, или создается снимок для общей папки (Volume Shadow Copy for Shared Folders).

Есть возможность создавать снимки вручную при помощи vssadmin.exe, однако содержимое такого снимка можно просмотреть только при помощи клиента для “Volume Shadow Copy for shared folders”.

Для целей резервного копирования гораздо интереснее утилиты командной строки, входящие в пакет Volume Shadow Copy Service SDK, который можно скачать здесь.

Из всего пакета нас в первую очередь интересует утилита vshadow.exe. Она позволяет

- создавать и удалять снимок тома
- просматривать списки созданных снимков
- монтировать снимок
- экспортировать, импортировать снимки и восстанавливать состояние тома

Существует две версии vshadow с различным функционалом.

Для Windows 2003, Windows 2008 и Vista необходимо использовать эту версию:
«C:\Program Files\Microsoft\VSSSDK72\TestApps\vshadow\bin\release-server\vshadow.exe»

Для XP используется
«C:\Program Files\Microsoft\VSSSDK72\TestApps\vshadow\bin\release-xp\vshadow.exe»

Версия для XP, в первую очередь, отличается от «серверной» тем, что не может создавать «хранимые» (persistent) snapshot’ы, то есть по окончанию процесса резервирования snapshot удаляется. Это ограничение накладывает реализация VSS в XP.

Утилиту можно копировать на серверы, не устанавливая SDK.

В комплект SDK входит целый набор скриптов, выполняющих различные действия. Но они достаточно сложны для понимания, поэтому предлагаю рассмотреть максимально простой скрипт, который сделает резервную копию открытых файлов через VSS.

vshadow.exe –p –script=vars.cmd d:
call vars.cmd
xcopy x:\some_locked_file.pst c:\backup\
vshadow –ds=%SHADOW_ID_1%

По шагам:

1. Создаем хранимый snapshot тома

vshadow.exe –p –script=vars.cmd d:

-p хранимый snapshot

-script=vars.cmd командный файл, в который vshadow сохранит название снапшота

vshadow записывает в файл, указанный в параметре -script следующее:

@echo.
@echo [This script is generated by VSHADOW.EXE for the shadow set
@echo {6b228a73-f8bf-4254-90e7-0d58219bc554}]
@echo.
SET SHADOW_SET_ID={6b228a73-f8bf-4254-90e7-0d58219bc554}
SET SHADOW_ID_1={8d14c5fe-87c1-4dac-8459-9a46b2874ef1}
SET SHADOW_DEVICE_1=\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy16

D: том, для которого создается snapshot

2. Подключаем snapshot как диск

call vars.cmd
vshadow.exe -el=%SHADOW_ID_1%,X:

call vars.cmd – загружаем переменные окружения с именем снапшота
vshadow.exe -el=%SHADOW_ID_1%, X: — подключаем созданный snapshot как логический диск X:

3. Копируем файлы

xcopy x:\some_locked_file.pst c:\backup\

4. Удаляем snapshot

vshadow –ds=%SHADOW_ID_1%

Это все, господа. Ранее блокированый файл успешно скопировался.

Что почитать:

1) Volume Shadow Copy Service SDK. 7.2 Download http://www.microsoft.com/downloads/details.aspx?familyid=0b4f56e4-0ccc-4626-826a-ed2c4c95c871

2) http://blogs.msdn.com/adioltean/archive/2004/12/30/344476.aspx
http://blogs.msdn.com/adioltean/archive/2005/01/05/346793.aspx
http://blogs.msdn.com/adioltean/archive/2005/01/20/357836.aspx
http://blogs.msdn.com/adioltean/archive/2006/09/18/761515.aspx

{jcomments on}