- Информационный портал по безопасности
- Рабоче-крестьянское резервное копирование под Windows
- Постановка задачи
- Выбор средств
- План алгоритма
- Скрипт
- Использование
- Замечания
- Windows Server Backup: как создать резервную копию и восстановить данные с нее? Экономный бэкап
- Установка средства, используемого для выполнения резервного копирования
- Создание копии
- Рабоче-крестьянское резервное копирование под Windows
- Постановка задачи
- Выбор средств
- План алгоритма
- Скрипт
- Использование
- Замечания
Информационный портал по безопасности
Рабоче-крестьянское резервное копирование под Windows
Автор: admin от 25-12-2014, 11:19, посмотрело: 3 378
Постановка задачи
Допустим, вы системный администратор в малой/средней (да чего уж там, иногда даже большой) компании, перед которым стоит задача организации резервного копирования файлового сервера исключительно с помощью подручных средств. Или вы продвинутый пользователь, которому небезразлична судьба хранящихся на вашем жестком диске файлов.
Пусть задача будет звучать следующим образом:
Немного подумав, еще расширим список хотелок:
Что ж, требования сформулированы, дело за малым – спланировать и реализовать всё остальное.
Выбор средств
Поскольку сторонние средства мы решили отметать, то как такового выбора технологий у нас почти не остается:
Несморя на то, что через пользовательский интерфейс Windows создать «Сжатую ZIP-папку» проще простого, в результате поиска встроенного аналога командной строки меня постиг облом №1. Для реализации, собственно, функции архивирования для оригинальной Windows из коробки, к сожалению, так или иначе требовалась либо доустановка NET Framework, либо сторонних командлетов Powershell, либо файлов из Resource Kit, либо чего-то еще.
Опробовав ряд вышеперечисленных вариантов меня постиг облом №2: на больших объемах архивируемых данных (начиная от пары сотен гигабайт) одни попросту вылетали, другие съедали всю память и начинали грузить сервер, третьи еще каким-то образом начинали чудить.
Глубоко вздохнув, приходится делать шаг в сторону от одного из вышеозначенных принципов и взять на роль архиватора готовое решение. С точки зрения опенсорсности и бесплатности опять же практически безальтернативно выбор падает на:
План алгоритма
Итак, алгоритм предельно прост: пишем сценарий на Powershell, который должен:
Скрипт
Ходить вокруг да около тут незачем, сразу публикую готовый скрипт:
Для работы скрипта мы должны заполнить выделенный в начале файла блок переменных (пути архивации, глубина хранения архивов) и создать файл с папками-источниками, например, такой:
Использование
Складываем всё в одну папку, и всё, можно запускать в Powershell. Единственный параметр — тип запуска [full | diff], определяет полный/дифференциальный способ копирования.
Убедившись, что всё работает (или поправив параметры, если нет) создаём задание в планировщике (отдельно для полного копирования и отдельно для дифференциального).
Ну вот, в целом, и всё, можно настроить, представить папку с архивами системе мониторинга наличия резервных копий (если есть) и забыть.
Замечания
Перед необходимостью изобретать свой велосипед автор за несколько лет намучался перепробовал большое количество разнообразного бесплатного готового ПО со похожей функциональностью (Cobian Backup, COMODO Backup и др.). Вдоволь находившись по разнообразным встроенным в упомянутый софт граблям, было принято решение написать что-то своё. На данный момент описанное решение успешно работает на серверах (Windows Server 2008 R2) и рабочих станциях (Windows 7 и Windows 8.1).
Самая крупная создаваемая полная резервная копия на данный момент составляет 1 Тб в исходных файлах, в архиве – 350 Гб. При архивировании с зеркала SAS (7200) на такой же локальный Volume-диск (оба работают внутри vSphere, будучи подключенными как RDM Passthrough-диски) операция занимает около 6 часов, что в условиях задачи является вполне приемлемым результатом.
Windows Server Backup: как создать резервную копию и восстановить данные с нее? Экономный бэкап
ОС Windows Server содержит средство резервного копирования, помогающее сэкономить на покупке стороннего программного продукта. Настройка Windows Server backup занимает минимум времени.
Установка средства, используемого для выполнения резервного копирования
Для установки Windows Server backup необходимо выполнить последовательно действия:
- Откройте Диспетчер серверов. В ней на панели мониторинга необходимо нажать Добавить роли и компоненты.
- На вкладке Перед началом работы используйте Далее.
- Выберите Установка ролей или компонентов и жмите Далее.
- Установите переключатель Выберите сервер из пула серверов и найдите подходящий сервер, куда будет устанавливаться средство копирования. Жмите Далее.
- На вкладке Выбор ролей сервера нажимайте Далее.
- На вкладке Выбор компонентов необходимо выбрать Система архивации данных Windows Server и нажать Далее.
- На вкладке Подтверждение установки компонентов используйте кнопку Установить. Дождитесь завершения установки.
- Нажмите Закрыть, чтобы окончательно выйти из окна мастера, используемого для добавления ролей и компонентов.
Рис. 1. Установка компонентов
Создание копии
Перед настройкой расписания проводимой архивации в Windows Server backup нужно добавить еще один винчестер, его вы будете использовать для сохранения копий. Из соображений экономии не нужно добавлять . Вполне достаточно будет обычных или (что еще дешевле). Впрочем, о стоимости копирования мы еще поговорим, главное, сперва правильно настроить Windows Server backup.
Откройте Диспетчер серверов, из меню Средства выберите команду Система архивации данных Windows Server.
Рис. 2. Запуск средства резервного копирования
Основное окно средства копирования показано на рис. 3. На данный момент резервная копия не создавалась.
Рис. 3. Система архивации данных Windows Server
Выберите команду Расписание архивации (данная команда будет доступна на панели справа после перехода в раздел Локальная архивация на панели слева). Для настройки расписания в Windows Server backup следуйте следующим инструкциям:
- На вкладке Приступа к работе нажмите кнопку Далее.
- Выберите, что именно нужно архивировать. Рекомендуется делать копию сервера полностью, чтобы можно было без проблем восстановиться из резервной копии в случае сбоя (рис. 4). Программа сообщит, сколько дискового пространства понадобится.
- Установите время архивации. Windows Server backup настройка это позволяет. Как правило, одного раза в день вполне достаточно. Но при желании вы можете делать копии чаще. Просто выберите регулярность и подходящее время архивации (рис. 5).
- Выберите тип места назначения, чтобы настроить Windows Server backup (рис. 6). Рекомендуется производить архивацию на жесткий диск для архивов, то есть использовать первый вариант. С другой стороны, дополнительный винчестер стоит определенных денег. Если средств нет, можно произвести архивацию на этот же диск — тогда нужен второй вариант — Архивация на том. Но мы настоятельно рекомендуем выполнять архивацию на внешний диск для архивов.
- На странице Выбор диска назначения жмите Показать все доступные диски.
- Нажмите на диск, добавленный вами ранее (рис. 7). На нем должно быть достаточно места.
- Нажмите кнопку ОК. Вы вернетесь на страницу Выбор диска назначения. Нажмите на него, потом кнопку Далее (рис. 8).
- Затем ответьте Да на два последующих запроса.
- Просмотрите сводку. Если все нормально, жмите Готово.
Рис. 4. Конфигурация
Рис. 5. Время создания архива
Рис. 6. Где хранить копии?
Рис. 7. Выбор диска назначения
Рис. 8. Выберите диск и нажмите Далее.
После нажатия кнопки Готово, начнется форматирование диска для архивации. Нужно дождаться завершения этого процесса. Затем мастер сообщит вам время первой архивации. Нажмите кнопку Закрыть. Архивация успешно настроена.
Рис. 10. Форматирование диска для архивации
Рабоче-крестьянское резервное копирование под Windows
Постановка задачи
Допустим, вы системный администратор в малой/средней (да чего уж там, иногда даже большой) компании, перед которым стоит задача организации резервного копирования файлового сервера исключительно с помощью подручных средств. Или вы продвинутый пользователь, которому небезразлична судьба хранящихся на вашем жестком диске файлов.
Пусть задача будет звучать следующим образом:
- Необходимо организовать автоматическое резервное копирование определенных файлов компьютера на отдельный носитель.
- Компьютер работает под управлением Windows версий 7 / 2008 или более поздней.
- Объем данных большой, поэтому копирование должно поддерживаться как полное, так и дифференциальное.
- Д.б. возможность копировать любые файлы, в т.ч. системные, заблокированные на чтение и т. п.
- Сторонним платным софтом пользоваться категорически не хочется (ну, допустим, мы стеснены в средствах, а эти ваши торренты — не наш путь! Или религия не позволяет. Или миллион других причин.), а лучше вообще обойтись без любого стороннего софта, пользуясь лишь возможностями ОС .
Немного подумав, еще расширим список хотелок:
- Как продолжение предыдущего пункта, формат архива также должен быть открытым и распространенным, чтобы в случае чего его без проблем открыть откуда угодно с помощью чего-угодно
- Более того, он должен быть таким, чтобы из любого, даже дифференциального архива, можно было бы без труда вытащить любой файл, не распаковывая для этого весь архив.
- Глубина архивации должна настраиваться (что называется, backup rotate).
- Было бы неплохо также с архивом сохранять дескрипторы безопасности NTFS.
- И вообще, хочется максимальной расширяемости и настраиваемости, если завтра возникнет желание нагородить дополнительный функционал.
Что ж, требования сформулированы, дело за малым – спланировать и реализовать всё остальное.
Выбор средств
Поскольку сторонние средства мы решили отметать, то как такового выбора технологий у нас почти не остается:
- Алгоритмический язык и командлеты – Powershell (хотя тут при желании можно и VBScript)
- Доступ к файлам через службу теневого копирования тома (VSS)
- Формат архива – Zip
- Механизм копирования только измененных файлов – архивный бит файловой системы
- Автоматизация запусков – встроенный планировщик
- ПО архивации – ?
Несморя на то, что через пользовательский интерфейс Windows создать «Сжатую ZIP-папку» проще простого, в результате поиска встроенного аналога командной строки меня постиг облом №1. Для реализации, собственно, функции архивирования для оригинальной Windows из коробки, к сожалению, так или иначе требовалась либо доустановка NET Framework, либо сторонних командлетов Powershell, либо файлов из Resource Kit, либо чего-то еще.
Опробовав ряд вышеперечисленных вариантов меня постиг облом №2: на больших объемах архивируемых данных (начиная от пары сотен гигабайт) одни попросту вылетали, другие съедали всю память и начинали грузить сервер, третьи еще каким-то образом начинали чудить.
Глубоко вздохнув, приходится делать шаг в сторону от одного из вышеозначенных принципов и взять на роль архиватора готовое решение. С точки зрения опенсорсности и бесплатности опять же практически безальтернативно выбор падает на:
- ПО архивации – 7-Zip
План алгоритма
Итак, алгоритм предельно прост: пишем сценарий на Powershell, который должен:
- Исходя из переданных параметров, создать теневую копию интересуемого тома.
- Получить к ней доступ из операционной системы.
- В случае дифференциальной/инкрементной резервной копии составить список измененных файлов.
- Заархивировать нужные файлы.
- По возможности заархивировать NTFS ACL
- Удалить теневую копию.
- В случае создания полной/инкрементной резервной копии – сбросить с файлов архивный бит.
- В случае создания полной копии удалить старые бэкапы (старше заданной глубины архивации).
Скрипт
Ходить вокруг да около тут незачем, сразу публикую готовый скрипт:
Для работы скрипта мы должны заполнить выделенный в начале файла блок переменных (пути архивации, глубина хранения архивов) и создать файл с папками-источниками, например, такой:
Использование
Складываем всё в одну папку, и всё, можно запускать в Powershell. Единственный параметр — тип запуска [full | diff], определяет полный/дифференциальный способ копирования.
Убедившись, что всё работает (или поправив параметры, если нет) создаём задание в планировщике (отдельно для полного копирования и отдельно для дифференциального).
Ну вот, в целом, и всё, можно настроить, представить папку с архивами системе мониторинга наличия резервных копий (если есть) и забыть.
Замечания
- Для корректной работы (в первую очередь для создания теневой копии) powershell должен быть запущен от имени администратора (или «с наивысшими привилегиями» в терминологии планировщика заданий).
- По идее способ также годится для горячего консистентного резервного копирования хоть баз MSSQL, хоть MS Exchange (при установке соотв. shadow copy providers, которые к подобному софту идут в комплекте), хотя конкретно в этих случаях удобнее пользоваться встроенными средствами.
- Инкрементным резервным копированием я не пользуюсь (много хлопот найти удаленный файл среди кучи инкрементных архивов), но если возникнет потребность, то он получается буквально комбинированием нескольких срочек из полного и дифференциального блоков скрипта.
- Здесь также не реализован механизм сохранения ACL (формат zip, да и 7zip не поддерживают хранение дескрипторов безопасности в архиве; RAR умеет, но это уже не свободное ПО, что сильно противоречит условиям задачи). В случае необходимости дескрипторы можно сохранять в файл встроенными утилитами типа icacls и добавлять полученный дамп в создаваемый архив.
- Увы и ах, алгоритм не подходит для XP/2003. Сложность возникает на моменте создания ярлыка на теневую копию (в этих ОС нет утилиты mklink, а по-быстрому обойти эти грабли у меня не вышло).
Перед необходимостью изобретать свой велосипед автор за несколько лет намучался перепробовал большое количество разнообразного бесплатного готового ПО со похожей функциональностью (Cobian Backup, COMODO Backup и др.). Вдоволь находившись по разнообразным встроенным в упомянутый софт граблям, было принято решение написать что-то своё. На данный момент описанное решение успешно работает на серверах (Windows Server 2008 R2) и рабочих станциях (Windows 7 и Windows 8.1).
Самая крупная создаваемая полная резервная копия на данный момент составляет 1 Тб в исходных файлах, в архиве – 350 Гб. При архивировании с зеркала SAS (7200) на такой же локальный Volume-диск (оба работают внутри vSphere, будучи подключенными как RDM Passthrough-диски) операция занимает около 6 часов, что в условиях задачи является вполне приемлемым результатом.