Просмотров: 6194

nnBackup: служба в резерве


Представляю свою серию из трех больших статей, посвященных очень любопытным и довольно известным утилиткам — nnCron и nnBackup. Обе они предназначены для систем работающих под Windows и идеально подходят для автоматизации различных повторяющихся действий. По своей специфике — это консольные утилята скорее для системных администраторов, хотя и на домашнем компе техногика тоже будут весьма востребованы. Отдельно акцентирую внимание на удивительном по красоте языке для метапрограммирования — Форт, — на котором они обе написаны и доступны для расширения (об этом читайте в третьей части сего опуса).

Итак, пошла первая часть сериала…

Как говаривали на одном крупном российском форуме для IT-шников:

“Однажды ты отчетливо понимаешь, что самая ценная вещь у тебя в квартире – не аппаратура, не наличные деньги, –  а информация на твоем винте. И речь идет не о том, что там хранятся какие-то страшные тайны или личные секреты, просто потеря всех личных наработок, паролей/логинов, скриптов и документов, цифровых ключей и подписей, копий твоих сайтов и дневников ведет к такому дикому форс-мажору, что лучше это даже себе и не представлять”.

Начинать свою жизнь с чистого листа – не самый удачный выход после очередного внезапно вышедшего из строя винчестера или агрессивного вируса, повредившего файловую систему. Лучшее профилактическое средство от этого – своевременный и регулярный бэкап, делать который при правильном подходе, совсем даже не тяжело и не скучно! И в этом нам поможет nnBackup – идеальная специализированная утилита, которая позволит автоматизировать любые спасательные операции, при этом затратив минимум усилий и времени на это.

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

Итак, говоря максимально упрощенно, все методы бэкапа (резервирования данных) можно разделить на две больших категории. Это, прежде всего, ставшие популярными в последнее время методы посекторного копирования жесткого диска (данных), с помощью специализированных программ типа Acronis True Image или Symantec Ghost. И второй – более традиционный и доступный способ резервирования — целевое копирование неких файлов, начиная с их выделения, архивирования и последующего перемещения на какие-то внешние источники/носители, в том числе и на специальные интернет-сервисы.

Дело в том, что инструменты для создания посекторных образов системы достаточно специфичны: они как правило, порождают огромные по размеру массивы информации, которые весьма проблематично затем выборочно скопировать, скажем, на Dropbox, или даже на DVD. Во-вторых, они содержат огромное количество системной – в общем-то мусорной и избыточной информации, да и времени на создание образа нужно на современных гигантских винчестерах иногда очень даже прилично.

В самом деле, как правило, переустановка Windows — это не самое большое зло. Наибольшим злом зачастую является именно безвозвратная потеря, скажем, своих ключей к WebMoney, или важнейшего документа, или письма от клиента (босса – вариантов тут много). Не думаю, что для сохранения оных (и их оперативного обновления) идеален именно метод создания полного образа диска.

Тут можно было бы привести ещё много доводов –, но довольно: сегодня мы сосредоточимся на альтернативном, старом добром методе, которым пользовались ещё наши дедушки и бабушки в таком чудном 20 веке — это выборочное сохранение своих наиболее критичных данных в традиционных файлах и архивах. А вот чтобы сделать этот процесс максимально автоматизированным и гибким, мы и рассмотрим сегодня нашего героя, по моему скромному мнению лучшего в этой области – консольную утилиту nnBackup.

Общие возможности nnBackup

nnBackup — это крошечная (350k) консольная утилита, предназначенная для резервного копирования файлов, синхронизации содержимого каталогов, создания и обработки файл-листов. Поддерживается встроенное сжатие архивных данных по алгоритмам gz или zip, использование внешних архиваторов и запуск произвольных приложений до и после основного процесса копирования файлов. Предусмотрены специальные средства для удаления неактуальных данных из резервной копии. Утилиту можно запускать как из командной строки, так и из внешнего планировщика (идеальный вариант при этом – её близкий родственник nnCron).

Итак, окинем взглядом все основные возможности и направления работы nnBackup:

  • расширенные возможности по копированию/перемещению файлов и каталогов
  • копирование данных в стек автоматически пронумерованных/датированных каталогов или zip-файлов заданной глубины
  • реализация инкрементного резервирования в стиле юниксовой программы dump
  • синхронизация файлов и каталогов (одно- и двунаправленная)
  • расфасовка информации на «порции» заданного размера

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

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

Азы практического использования

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

Режим инкрементного резервного копирования – это аналог юниксовой утилиты dump: он позволяет сначала выполнить резервное копирование всего исходного каталога, а в следующие разы “ добавлять” к нему уже только те файлы, которые изменились со времени последнего резервного копирования. Итак, условимся, что каждую сессию резервного копирования в таком режиме будем называть “дампом”. Далее, каждой сессии копирования (дампу) присваивается свой порядковый номер (целое число от 0 до 9) — это уровень резервирования. Грамотно манипулируя уровнями дампов можно удобно управлять содержимым дамп-архивов, что даст вам экономию места на винчестере и вашего времени при восстановлении данных.

Теперь рассмотрим альтернативный — стековый способ бэкапа. Это самый надежный режим резервного копирования. Он позволяет создавать неограниченное количество точных копий исходных данных, которые при каждом копировании помещаются в пронумерованные каталоги (стек каталогов) или в пронумерованные zip-файлы (тогда это стек zip-файлов). Для копирования в стек каталогов используйте команду ver, а для копирования в стек zip-файлов — команду verz.

В обоих случаях вы сами выбираете глубину стека (или соответственно уровень резервирования) – в зависимости от того, сколько копий данных вы считаете целесообразным хранить, — для чего указываете её в командной строке с помощью ключа n. Вот и вся базовая теория для этих двух основных способов хранения данных. Выбор каждого метода зависит от вашей специфики и стратегии хранения данных.

Очевидный сильный плюс у инкрементного подхода – это серьёзная экономия дискового места, если дело касается больших и в основном статических массивов данных (например, большая коллекция музыки или фильмов), но при таком подходе целостность любого уровня можно восстановить только при наличии всей цепочки уровней дампов (и дополнительных манипуляций по последовательному их слиянию).

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

С места – в карьер...

От теории сразу переходим к примерам. Вот простейшие примеры этих двух операций:

Можно копировать в стек так:

nnbackup.exe verz -n 1 -i c:\1 -o d:\2

А дамп можно сделать вот так:

nnbackup.exe dump 0 -i c:\1 -o d:\2

А вот пример других традиционных и важных операций: копирования и синхронизации каталогов, содержащих пробелы в своих названиях (которые в этом случае следует просто заключить в кавычки):

nnbackup.exe copy -i "c:\program files\my_prog" -o d:\backup -s -v

nnbackup.exe sync -i "c:\my documents\my folder" -o "d:\my backups\another folder" -v

Давайте рассмотрим ещё один практически пример, который покажет работу с масками файлов. Постановка задачи: как можно настроить синхронизацию двух папок документов (в целях бэкапа актуальных документов), при этом, чтобы метод работал даже с открытыми в момент синхронизации документами (так как будет запускаться по расписанию каждые 5 минут), при этом, чтобы не копировались лишние временные файлы – т.е. те, что создаются Word’ ом, когда документы открыты и редактируются?

Вот вариант решения этой задачи:

nnbackup.exe copy -i c:\data -o d:\backup\data -m *.doc,*.rtf,*.txt,*.htm* -x *.tmp, ~$.doc, *.bak, *.nsx, *.ntx

Расшифровка этого действия: копировать из каталога c:\data в d:\backup\data все документы, при этом не копировать временные и индексные файлы, если они есть.

Ещё один типичный пример. Как можно сделать бэкап, который бы делался в zip-архив с текущей датой в его имени? Например, если сегодня дата 30.09., и надо сделать бэкап из папки c:\data в папку d:\backup, при этом, чтобы архив был с именем 300911, а завтра соответственно создавался как 310911 и т.д. Для этого в командной строке используем следующие ключи:

sdn "%YYYY%-%MM%-%DD%-[%hh%-%mm%]"

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

Пример комплексного решения

У этой махонькой утилиты, в силу её просто безразмерной гибкости, очень много применений, — всё упирается только в вашу фантазию. В качестве наглядного примера, приведу свой опыт: я использую её в качестве системного сервиса, который запускается по расписанию утром и вечером (через отличный миниатюрный планировщик от этой же фирмы – nnCron).

Во входящем файле конфигурации запуска старательно перечисляются все важные папки на моём компьютере, как-то: ключи от WebMoney, мои казенные электронные подписи и SSH-ключи к удаленным заморским серверам, программы со всеми паролями, важные документы, настройки многих программ, база моей почтовой программы и тому подобная милая чепуха. После запуска, nnBackup в фоновом режиме педантично обходит все эти папки и формирует инкрементальное обновление (в данном случае инкрементальное – для минимизации размера итогового архива, в целях последующей комфортной передачи его по интернету). Данный дамп аккуратно шифруется и копируется в специальную локальную папку на моем компьютере, на которую настроен клиент синхронизации популярной облачной службы Dropbox.

Таким образом, будучи один раз всё внимательно настроено и отлажено, оно уже второй год пашет у меня абсолютно в фоновом режиме, как на домашнем компьютере, так и на рабочем, сливая все более-менее ценное для меня в зашифрованном виде на мой облачный акаунт Dropbox. Факт остаётся фактом: во всех случаях, когда мои данные повреждались или возникали другие волнительные форс-мажоры (я имею в виду два почивших в Бозе винчестера и не только) – я, как гусар, всегда сохранял спокойствие и был готов к любому развитию ситуации (“да ладно ребята, у меня все ходы записаны”).

Как говорил один мудрый греческий философ о тонкостях резервирования данных:

“Нет другой судьбы, кроме той, что мы себе выбираем сами…”.

Регистрация

Приятные новости — nnBackup бесплатен для граждан стран бывшего СССР при условии частного и некоммерческого его использования. Чтобы заpегистpиpовать nnBackup для частного, некоммерческого использования, запустите пpогpамму nnbackup.exe с параметром xReg, вот так: кнопка Пуск — Выполнить — дальше ввести или скопировать в появившееся поле следующую строку:

“C:\Program Files\nnBackup\nnbackup.exe” xReg

В качестве регистрационного имени введите два слова через пробел:

  • xUSSR регистрация (их тоже можно вставить через копирование из буфера);
  • В качестве регистрационного кода — текущий день недели (по-русски). Естественно, день недели в данном случае надежнее определять по системным (компьютерным) часам, а не по тому, что у вас там в голове исчисляется.

В заключении отмечу, что признак успешной регистрации — появление файла nn.key в папке C:\Program Files\nnBackup\

И опыт, сын ошибок трудных…

Всегда стараюсь: чем больше мне нравится программа, тем сильнее пытаться сохранять нейтралитет в её обзоре, потому как из-за эффекта симпатийной эмпатии, часто невольно из-под пера многих авторов-обзорщиков выходят ну просто натуральные рекламные тексты, и тогда, невольно поддавшись импульсу, скачаешь да и запустишь ненароком предмет оных воздыханий… диссонанс между написанным и увиденным, порой бывает, бьёт аж через край, а потому отсюда следует очевидный вывод: в каждой бочке меда всегда есть хоть маленькая ложечка дегтя, потому как нет совершенства в этом мире и всё тут.

Кстати, что касается меня лично – то я яркое исключение из этого правила, ибо исповедую принцип:

“Доказательством совершенства является отсутствие претензии на то, чтобы быть совершенным.” (Фенелон).

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

  • программа хоть и поддерживает опцию архивирования, но в реальности эта функция существенно ограничена: эта утилита не умеет создавать на выходе любые резервные файлы (или их тома) размером более 2 Гбайт, поэтому невольно придётся дробить большие архивы на части или использовать для этого штатную опцию – extzip для вызова внешнего архиватора;
  • странная реализация распространенной в реальной жизни задачи, заключающейся в слежке за каталогом на предмет его изменения, и как только это изменение происходит (появление новых или обновленных файлов) – требуется автоматически обнаружить это и выполнить над содержимым каталога некое действие, чаще всего — его синхронизацию с архивом. Как оказалось после моего тестирования, эта утилита не может реагировать на такое изменение (через соответствующие системные API), а просто тупо в цикле, периодически проверяет каталог на предмет его изменений, естественно, создавая ненужный оверхед и нагрузку на систему. Я считаю, что если подобным образом здесь запрограммированы и другие задачи – то это очень печально, если не сказать больше. Что же касается данной конкретной задачи, чтобы не оставлять читателя в недоумении, то её правильный способ реализации требует использования родственной утилиты – nnCron, — в которой эта функция слежения реализована грамотно и подобающим образом;
  • несмотря на то, что в самых последних версиях nnBackup заявлена официальная поддержка файлов с юникодовыми именами, в действительности, всё же порой возникают проблемы при работе с файлами, имеющими длинные русскоязычные имена;
  • развитость возможностей, обилие ключей, а также всевозможных режимов — закономерно приводит к усложнению овладения и методики использования этой утилиты. Хоть документация к ней подробна и вполне достойна, придется потратить какое-то время и усилия, чтобы как следует разобраться в особенностях поведения и устройства nnBackup;
  • для меня также сильным минусом является то, что программа не обновлялась с 2008 года, хотя сразу нужно отметить, что поддержка на форуме продолжает худо-бедно функционировать, и проект чисто внешне скорее жив, чем окончательно мертв;

Впрочем, закончив перечисление всего негативного, с чем я столкнулся в nnBackup после нескольких лет его достаточно активного использования, всё же должен справедливости ради обязательно подчеркнуть несомненный для меня факт: достоинств у этого бэкапера куда больше чем недостатков, поверьте на слово.

Мне всегда нравились этакие консольные малютки, которые по своим возможностям и самым хитроумным методам применения запросто заткнут за пояс любых нынешних визуальных и многомегабайтных монстров, которых я повидал на своем веку достаточно, тяжелых на подъем и с выраженной чумной отдышкой, уже только при старте которых винчестер начинает шумно сопеть, а “винда” – в шоке “свопиться”. Ну, а когда они начинают бэкапить… поверьте, всё предыдущее вы забудете сразу, потому что сейчас они устроят вам НАСТОЯЩИЕ ТОРММООЗЗ-АААА.

В такие счастливые моменты, продвинутые многопользовательские особенности Windows (про вытесняющую многозадачность не забыли?) сразу куда-то улетучиваются, мир замирает, мышка, конечно, отваливается, потеряв связь с движениями руки её владельца, ну, а вам остается только нервно барабанить пальцами по столу, в тоскливом ожидании рассвета…

В такие минуты горечи и отчаяния просто вспомните про практичную консольную кроху — nnBackup.

Ссылки по теме:

Документация к программе: http://www.nncron.ru/nnbackup/help/help_ru_toc.htm

Ключи для командной строки: http://www.nncron.ru/nnbackup/help/RU/command_line.htm

Часто задаваемые вопросы: http://www.nncron.ru/nnbackup/help/RU/add_info/faq.htm

Продолжение этой статьи читайте здесь.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , ,
Эта запись опубликована: Понедельник, 21 ноября 2011 в рубрике Обзоры.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз