Изучи Windows Server 2003 за 15 минут в неделю:
 

Shadow Copies of Shared Folders – Часть 2

Майк Ауберт (Mike Aubert)

перевод: Андрей Цой

 

В статье “Shadow Copies of Shared Folders – Часть 1” мы изучили, что такое теневые копии и как их можно применить к серверному тому. Напомню, что мы установили раздел (E: в нашем примере), содержащий перенаправленные папки My Documents пользователей, настроили SCSF выполнять теневое копирование в 7:00 утра и в 12:00 ночи, а также настроили SCSF сохранять все теневые копии на другом разделе (F: в нашем примере). В части 2 мы рассмотрим, как восстанавливать предыдущие версии файла и как восстановить удаленный файл из теневой копии. Также мы узнаем, как клиентское программное обеспечение может быть установлено на предыдущих версиях Windows, так чтобы теневые копии были доступны с клиентских рабочих станций.

Чтобы сэкономить время я заранее создал файл, названный Important.doc, в папке My Documents, а затем внес в него три изменения, выполнив теневое копирование после каждого из них. Хотя изменения на приведенных ниже рисунках будут разделены по времени всего несколькими минутами, действие SCSF в этом случае будет тем же самым, как если бы изменения вносились только дважды в день.

Давайте начнем с самого простого примера - восстановим предыдущую версию файла на самом сервере (т.е. применяя серверную консоль). Для начала вы должны перейти к общей папке, используя UNC-путь, сетевой диск, либо любой иной метод доступа к общей папке. Обратите внимание, что вы должны получить доступ к файлу через общий доступ - если вы получите доступ к файлу непосредственно на жестком диске сервера, то вкладка "Previous Versions", описанная в последующих шагах, окажется недоступной для вас.

Вот как выглядит наш файл в настоящее время:

Щелкните правой кнопкой этот файл в Windows Explorer, выберите Рroperties из открывшегося меню, а затем перейдите на вкладку "Previous Versions".

Названия кнопок на вкладке говорят сами за себя:

  • View - Позволяет просмотреть копию файла на выбранную Дату/Время;
  • Copy - Позволяет копировать файл на выбранную Дату/Время в новое расположение;
  • Restore - Позволяет восстанавливать файл на выбранную Дату/Время поверх текущей версии файла.

Давайте восстановим копию на 10:29 вечера, которая выглядит следующим образом:

Когда вы щелкните кнопку Restore, вам будет предложено подтвердить свой выбор:

Как видите, столбец Date Modified для нашего файла теперь показывает время, в которое файл был последний раз изменен при создании теневой копии в 10:29 вечера. Все получилось, неправда ли?

Хотя возможность восстановления предыдущей версии существующего файла очень полезная функция, что будет в случае, если этот файл был удален? У нас больше нет файла, на котором можно щелкнуть правой кнопкой и теперь неясно, как мы сможем получить к нему доступ для восстановления. Но это делается просто: щелкните правой кнопкой на общей папке, или на папке, вложенной в общую папку и откройте её свойства. Вы найдете такую же вкладку Previous Versions в окне свойств папки, как и в окне свойств файла. Вы можете нажать кнопку View, чтобы посмотреть, на что похожа эта папка (т.е. какие файлы и папки содержатся в ней) на выбранный вами момент времени. Отсюда мы можете копировать и вставлять файл(ы), который(е) вы хотите восстановить из предыдущей версии папки в «настоящую» папку. Вы также можете использовать кнопки Copy и Restore вкладки Previous Versions для копирования/вставки всей папки целиком, так что нет необходимости выполнять этот процесс файл за файлом.

Например, давайте представим, что сейчас 11:00 вечера и я только что случайно удалил файл Important.doc (кроме того, я использовал Shift + Delete, поэтому файл не сохранился в Корзине). Для того чтобы вернуть файл назад я могу щелкнуть правой кнопкой мыши папку maubert, перейти на вкладку Previous Versions, выбрать предыдущую версию папки (10:52 вечера в нашем примере), и нажать View:

(Обратите внимание, что дата создания теневой копии отображается в заголовке окна и в адресной строке).

Теперь я могу копировать и вставлять этот файл назад в папку, в другое расположение, либо открыть и просмотреть файл прямо из старой версии этой папки. Обратите внимание на одну вещь: при восстановлении всей папки (используя кнопку "Restore" вкладки Previous Versions) все файлы, добавленные в папку после даты создания теневой копии (которую вы восстанавливаете), удалены не будут. Например, пусть в общей папке есть файл, называемый fileA, который уже имеет несколько версий. Далее создадим новый файл в той же директории и назовем его fileB и добавим его после проведения теневого копирования, в которое был включен fileA. Если я потом восстановлю предыдущую копию папки, содержащую старую версию файла fileA, но не содержащую fileB, то fileA будет перезаписан старой версией, а fileB не будет затронут. Продолжая развивать этот пример, допустим, что уже появились новые версии теневой копии, содержащие fileA и fileB. И хотя новые теневые копии будут содержать оба файла, в то же время сохраняются старые версии, содержащие только fileA. И опять, если я восстанавливаю папку со старой теневой копии, содержащей только fileA, то fileA будет заменен на старую версию, а fileB останется нетронутым. С другой стороны, если я восстановлю папку, содержащую уже и fileA и fileB, то оба файла будут заменены на их старые версии. Все это можно рассматривать, как простое восстановление папки в процессе копирования и вставки предыдущей версии этой папки в ее текущую версию с подтверждением операции перезаписи существующих файлов, поэтому к этой операции применимы те же самые правила, что и к обычной операции копирования/вставки.

До того как мы начнем разговор о доступе к теневым копиям с клиентских компьютеров, я хочу подробнее остановится на вопросах разграничения доступа и его применению для доступа и восстановления теневых копий. Сначала необходимо уяснить себе, что теневое копирование использует те же разрешения на доступ, что были установлены при создании теневой копии. Это означает, что если вы сделали теневую копию, а затем добавили или удалили пользователя или группу из списков доступа к файлу/папке, то, хотя все текущие версии файлов/папок будут использовать новые разрешения, любые старые теневые копии файла/папки будут продолжать использовать ранее назначенные разрешения.

Например, пусть я хочу дать пользователю ddinicolo право на чтение и модификацию файла Important.doc, для чего изменю разрешения NTFS для этого файла. Теперь ddinicolo имеет доступ к текущей версии файла и любым теневым копиям, которые будут созданы позднее, но он не имеет этих прав для файлов, содержащихся в уже сделанных теневых копиях. Продолжая развивать этот пример, представим, что прошло две недели и пользователю ddinicolo больше не требуется доступ к этому файлу - я опять изменяю разрешения NTFS для файла, удаляя право доступа для ddinicolo. Теперь ddinicolo не имеет доступа к файлу, но его права на доступ к теневым копиям за предыдущие две недели сохраняются (обратите внимание - это означает, что ddinicolo имеет доступ к общей папке: если вы удалите доступ ddinicolo к общей папке, либо удалите доступ к этому ресурсу вообще, то он не сможет получить доступ к этим предыдущим версиям).

Если ddinicolo продолжает иметь доступ к старым версиям Important.doc двухнедельной давности это, возможно, не будет большой проблемой – единственное, что вы можете делать с теневыми копиями, это читать файлы или копировать их в новое расположение, если у вас нет доступа к текущим версиям файлов. Однако существует одна ситуация, при которой вам необходимо сохранить доступ к старым теневым копиям – это происходит в случае, если кто-либо имеет разрешения на доступ к файлу, которых у него не должно было быть. Хотя очень просто запретить доступ к текущей версии файла или папки – это совсем не так для теневых копий. Поскольку теневые копии доступны только для чтения (т.е. вы не можете удалить определенный файл/папку из теневой копии или изменить их разрешения), то единственный способ лишить пользователя или группу права доступа к предыдущей версии файла, это удаление теневой копии(ий) или права доступа пользователя/группы к общей папке (обратите внимание, что я говорю о запрещении/удалении права доступа на чтение, используя общий доступ к ресурсу, а не разрешения NTFS).

Итак, чтобы просматривать предыдущую версию файла/папки, вам необходимо, как минимум, право доступа на чтение этого файла/папки на момент создания теневой копии. Для копирования предыдущих версий файла/папки вам необходимо, как минимум, право доступа на чтение к этому файлу/папке на момент создания теневой копии и, дополнительно, право доступа на запись к тому расположению, куда вы хотите скопировать его. Для того чтобы восстанавливать предыдущую версию файла/папки, вам необходимо, как минимум, право доступа на чтение к этому файлу/папке на момент создания теневой копии и, дополнительно, право доступа на запись к расположению, где файл/папка были первоначально расположены (т.е. куда файл будет восстанавливаться).

Поскольку разрешения для файлов следуют за операцией восстановления, то они сохраняют те разрешения, что были у них перед восстановлением. Это означает, что если вы восстанавливаете файл из предыдущей копии и существует свежая версия этого файла, то после перезаписи он унаследует свойства разрешения на доступ перезаписанного файла – а не разрешения предыдущей версии. Давайте представим, что текущая версия файла больше не разрешает доступ пользователю ddinicolo, в то время как предыдущая разрешала. Если мы восстановим предыдущую версию, то будут использоваться текущие разрешения для этого файла, не позволяющие доступ пользователю ddinicolo. Подобным образом, если мы восстанавливаем файл, который больше не существует, то файл/папка унаследуют разрешения своих родительских папок – а не разрешения, существовавшие на предыдущей версии. И снова, восстановление просто похоже на операцию копирования/вставки с предыдущей версии в текущую версию.

Теперь давайте поговорим о клиентах. Для того чтобы система, работающая не под ОС Windows Server 2003, имела бы доступ к теневым копиям, она должна иметь установленный SCSF-клиент. Однако важно отметить, что серверная часть SCSF будет работать с любым клиентом, имеющим доступ к общему ресурсу на Windows Server 2003 – поскольку их создание полностью выполняется на сервере. Другими словами, создание теневой копии – это задача сервера и она не требует наличия на клиенте специального программного обеспечения. Так, если пользователь не имеет установленного SCSF-клиента на своей машине, то ему понадобится использовать другую систему, на которой установлен SCSF-клиент (либо администратора, восстанавливающего файлы с сервера... но в этом случае не будет использоваться главное преимущество SCSF - "пусть пользователь делает все это" - вот почему рекомендуется установить клиента хотя бы на некоторых рабочих станциях).

Копия SCSF-клиента для Windows XP находится в папке %systemroot%\System32\Clients\Twclient\X86 на Windows Server 2003. Однако самая свежая версия этого клиента доступна на страничке http://www.microsoft.com/windowsserver2003/downloads/shadowcopyclient.mspx, поэтому я рекомендую посетить ее, скачать и использовать клиента с указанного адреса. На момент написания данной статьи клиент поддерживает Windows XP и Windows 2000 (В документации Microsoft также говорилось о поддержке Windows 98).

Чтобы обеспечить совместимость с более ранними версиями Windows, чем Windows XP, вы должны сначала запустить установку SCSF-клиента на сервере. Процесс установки протекает быстро - запустите загруженный вами MSI-файл, нажмите next в окне Welcome, примите лицензионное соглашение и еще раз нажмите next, а после окончания установки - Finish.

Затем вы можете повторить установку на ваших рабочих станциях с Windows 2000 Pro и Windows XP Pro. В качестве альтернативы вы можете использовать ветвь Software installation в Group Policy (назначив ее компьютеру), если в вашей сети установлена Active Directory.

После установки клиента вкладка Previous Versions будет доступна в окне свойств файлов и папок для любых общих папок, помещенных на разделе с инициализированной функцией SCSF. Если вы читали часть 1 данной статьи, то помните, что в нашем примере раздел E: содержит папки My Documents перенаправленные в group policy (используя имя UNC). Вот как это выглядит - операции на клиенте выполняются точно также как и на сервере:

И последнее замечание по поводу функции SCSF - она также поддерживает серверные кластеры. Вам необходимо ознакомится с документом "Using Shadow Copies of Shared Folders in a server cluster" из пакета документации Windows Server 2003 (запустите файл справки %systemroot%\Help\mscsconcepts.chm, а затем найдите "shadow copies" в предметном указателе), прежде чем настраивать SCSF на кластере.

На этом я завершаю серию статей о Shadow Copies of Shared Folders. Хочу отметить, что эта статья предназначена не только для сетевых администраторов - SCSF это то, что может использоваться и обычными пользователями. Использование SCSF для восстановления или просмотра предыдущих версий файла это простая операция, которую может освоить каждый, как говорится, за пять щелчков мыши. Восстановление файлов из предыдущих версий папки чуть более сложная операция, но и она не будет проблемой для того, кто умеет перемещать файлы из одной папки в другую.

Ссылки:

Flash-презентация от Microsoft, посвященная SCSF. Официальная документация компании Microsoft по SCSF – включающая в себя пилотную программу, разработанную Microsoft Operations Technology Group.

И как всегда…если у вас возникнут какие-либо технические вопросы, пожалуйста, присылайте их на доску объявлений сайта 2000Trainers.com SQL message board. Нетехнические вопросы, комментарии и обратная связь – по адресу моей электронной почты. Я надеюсь, что вы найдете эти статьи полезными и был бы рад узнать ваше мнение о них.

Майк Ауберт, MCSE, MCDBA, MCSD.