Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Введение
В настоящей статье рассматривается технология vfs_shadow_copy2 - технология предоставления клиентам Windows истории изменения их данных. Технология позволяет клиентам Microsoft Windows просматривать историю изменения их файлов. В литературе используются термины моментальный снимок (snapshot) и теневая копия (shadow copy), однако в самом деле технология предоставляет возможность сетевого доступа к последовательности копий файлов, сделанных предыдущие моменты времени. Для создания таких последовательностей применяется монтирование моментальных снимков (например, моментальных снимков LVM), или может применяться простое копирование файлов. Далее применяются общепринятые термины:
- моментальный снимок — набор данных по состоянию на какой-то момент времени;
- теневая копия — копия файла в моментальном снимке.
В статье приведен пример базовой настройки теневого копирования для домашних каталогов пользователей (homes) и простого разделяемого ресурса (share). Вопросы создания и администрирования моментальных копий и администрирования разделяемых ресурсов в статье не рассматриваются.
Перед прочтением статьи рекомендуется ознакомиться с общей информацией по работ с Samba: см. обзорную статью Samba и связанные статьи, .
Установка пакетов
Для обеспечения возможности доступа к теневым копиям достаточно установить и настроить один пакет samba. Установка пакета:
Command |
---|
sudo apt install samba |
Настройка Samba
Для предоставления доступа к теневым копиям необходимо создать разделяемый ресурс. Минимальные настройки разделяемого ресурса:
Блок кода |
---|
[<имя_разделяемого_ресурса>] vfs objects = shadow_copy2 shadow:mountpoint = <разделяемый_каталог> shadow:snapsharepath = <каталог_в_снимке> path = <разделяемый_каталог> guest ok = y |
Где:
- vfs objects = shadow_copy2 — включение для разделяемого ресурса поддержки теневых копий;
- shadow:mountpoint = <разделяемый_каталог> — для монтируемых ресурсов точка монтирования определяется автоматически. Для каталогов без монтирования указать сам каталог.
- shadow:snapsharepath = <каталог_в_снимке> — смещение к копиям ресурса в снимке.
- path = <разделяемый_каталог> — сам разделяемый каталог.
- guest ok = y — разрешение анонимного доступа к ресурсу. Используется для упрощения примера.
Пример разделяемого ресурса share, предоставляющего доступ к каталогу /srv/share:
Блок кода |
---|
[share] vfs objects = shadow_copy2 shadow:mountpoint = /srv/share shadow:snapsharepath = srv/share path = /srv/share guest ok = yes |
При этом снимок не обязательно должен иметь корневым каталогом разделяемый каталог: в приведенном примере подразумевается использование снимка всего диска (корневой каталог снимка - каталог /), а разделяемый ресурс в этом снимке расположен в под каталоге srv/share (путь не абсолютный).
Более сложный пример специального разделяемого ресурса homes:
Блок кода |
---|
[homes] vfs objects = shadow_copy2 comment = Home Directories browseable = no read only = yes create mask = 0700 directory mask = 0700 valid users = %SИ |
Для ресурса homes:
- параметр shadow:mountpoint автоматически определяется как /home;
- корневым каталогом моментальных снимков автоматически принимается каталог /home.
Изменение этих параметров не поддерживается.
Пример создания структуры моментальных снимков и теневых копий для указанных разделяемых ресурсов homes и share приведен далее.
Размещение моментальных снимков
Моментальные снимки представляют собой обычные каталоги со специальными именами. По умолчанию поиск моментальных снимков выполняется в подкаталоге .snapshots каталога shadow:mountpoint (размещение моментальных снимков может быть изменено с помощью параметра shadow:snapdir). Каталоги моментальных снимков по умолчанию имеют имена, отражающие время создания снимка. Формат имен:
Блок кода |
---|
@GMT-YYYY.MM.DD-hh.mm.ss |
где:
- YYYY — 4 цифры года;
- MM — 2 цифры месяца;
- DD — 2 цифры дня месяца;
- hh –- 2 цифры часа;
- mm — 2 цифры минуты;
- ss — 2 цифры секунды.
Формат имен каталогов моментальных снимков может быть изменен параметром shadow:format.
Создание моментальных снимков
Для создания моментальных снимков могут применяться:
- монтирование поддерживаемых файловыми системами моментальных снимков (например, моментальных снимков LVM);
- монтирование архивов;
- простое копирование файлов в каталоги моментальных снимков;
Для тестового примера структуру моментальных снимков с теневыми копиями файлов можно создать сценарием. Сценарий создает структуру данных для приведенных выше разделяемых ресурсов. Сценарий выполняет следующие действия:
- создает файл homemark.txt в домашнем каталоге текущего пользователя;
- создает разделяемый каталог /srv/share;
- создает файл sharedmark.txt в разделяемом каталоге /srv/share;
создает структуру моментальных снимков и теневых копий для созданных файлов:
для ресурса shares:
Блок кода collapse true /srv/share ├── sharemark.txt └── .snapshots ├── @GMT-2024.03.01-12.00.00 │ └── srv │ └── share │ └── sharemark.txt ├── ... └── @GMT-2024.03.30-12.00.00 └── srv └── share └── sharemark.txt
для ресурса homes:
Блок кода collapse true /home ├── <имя_пользователя> │ ├── homemark.txt └── .snapshots ├── @GMT-2024.03.01-12.00.00 │ └── <имя_пользователя> │ └── homemark.txt ├── ... └── @GMT-2024.03.30-12.00.00 └── <имя_пользователя> └── homemark.txt
Текст сценария:
Блок кода | ||||
---|---|---|---|---|
| ||||
#!/bin/bash # определение разделяемых каталогов: каталог /home для ресурса homes и каталог /srv/share для ресурса shares: dir_home="/home/" dir_share="/srv/share" # очистка и создание каталогов sudo rm -rf "$dir_share" "$dir_home/.snapshots" sudo mkdir -p "$dir_share/.snapshots" "$dir_home/.snapshots" # создание тестовых файлов sudo touch "$dir_share/sharemark.txt" touch homemark.txt # создание структуры моментальных снимков для дат с 1 по 30 апреля 2024 и теневых копий файлов с соответствующими датами модификации. for day in {01..30} ; do dir="$dir_home/.snapshots/@GMT-2024.03.$day-12.00.00/$USER" ; file="$dir/homemark.txt" ; sudo mkdir -p "$dir" ; echo "$dir" | sudo tee "$file" > /dev/null ; sudo touch -t 202403${day}1100 "$file" dir="$dir_share/.snapshots/@GMT-2024.03.$day-12.00.00$dir_share" ; file="$dir/sharemark.txt" ; sudo mkdir -p "$dir" ; echo "$dir" | sudo tee "$file" > /dev/null ; sudo touch -t 202403${day}1100 "$file" done |
Проверка работы
Для проверки работы:
В Astra Linux:
Зарегистрировать пользователя в базе данных пользователей samba:
Command sudo smbpasswd -a $USER Далее работа с разделяемыми ресурсами в Windows будет выполняться от имени этого пользователя.
- В Windows:
- Разрешить сетевое обнаружение, если оно не было разрешено ранее.
- Открыть File Explorer.
В адресной строке File Explorer ввести:
Блок кода \\<IP-адрес_сервера_samba>\shares
После этого должен быть отображен разделяемый ресурс с единственным файлом sharemark.txt:
Правой кнопкой мыши нажать на файл. Должно появиться контекстное меню:
- Выбрать в контекстном меню пункт "Restore previous versions".
- Должен открыться список обнаруженных версий файла:
- Аналогичные действия выполнить набрав в адресной строке:
Блок кода \\<IP-адрес_сервера_samba>\shares
После ввода пароля должен быть предоставлен доступ к домашнему каталогу пользователя, и к версиям созданного в этом каталоге файла homemark.txt.