Представляю свою серию из трех больших статей, посвященных очень любопытным и довольно известным утилиткам — nnCron и nnBackup. Обе они предназначены для систем работающих под Windows и идеально подходят для автоматизации различных повторяющихся действий. По своей специфике — это консольные утилята скорее для системных администраторов, хотя и на домашнем компе техногика тоже будут весьма востребованы. Отдельно акцентирую внимание на удивительном по красоте языке для метапрограммирования — Форт, — на котором они обе написаны и доступны для расширения (об этом читайте в третьей части сего опуса).
Итак, пошла первая часть сериала…
Как говаривали на одном крупном российском форуме для IT-шников:
“Однажды ты отчетливо понимаешь, что самая ценная вещь у тебя в квартире – не аппаратура, не наличные деньги, – а информация на твоем винте. И речь идет не о том, что там хранятся какие-то страшные тайны или личные секреты, просто потеря всех личных наработок, паролей/логинов, скриптов и документов, цифровых ключей и подписей, копий твоих сайтов и дневников ведет к такому дикому форс-мажору, что лучше это даже себе и не представлять”.
Начинать свою жизнь с чистого листа – не самый удачный выход после очередного внезапно вышедшего из строя винчестера или агрессивного вируса, повредившего файловую систему. Лучшее профилактическое средство от этого – своевременный и регулярный бэкап, делать который при правильном подходе, совсем даже не тяжело и не скучно! И в этом нам поможет nnBackup – идеальная специализированная утилита, которая позволит автоматизировать любые спасательные операции, при этом затратив минимум усилий и времени на это.
Первое что следует заметить, прежде чем мы приступим к рассмотрению нашего главного инструмента для эффективного противостояния фатуму (речь пойдет вовсе не о магических технологиях здесь), это вообще, хотя бы теоретически выделить оптимальную область применения нашей предстоящей программы (да и методов резервирования информации тоже).
Итак, говоря максимально упрощенно, все методы бэкапа (резервирования данных) можно разделить на две больших категории. Это, прежде всего, ставшие популярными в последнее время методы посекторного копирования жесткого диска (данных), с помощью специализированных программ типа Acronis True Image или Symantec Ghost. И второй – более традиционный и доступный способ резервирования — целевое копирование неких файлов, начиная с их выделения, архивирования и последующего перемещения на какие-то внешние источники/носители, в том числе и на специальные интернет-сервисы.
Дело в том, что инструменты для создания посекторных образов системы достаточно специфичны: они как правило, порождают огромные по размеру массивы информации, которые весьма проблематично затем выборочно скопировать, скажем, на Dropbox, или даже на DVD. Во-вторых, они содержат огромное количество системной – в общем-то мусорной и избыточной информации, да и времени на создание образа нужно на современных гигантских винчестерах иногда очень даже прилично.
В самом деле, как правило, переустановка Windows — это не самое большое зло. Наибольшим злом зачастую является именно безвозвратная потеря, скажем, своих ключей к WebMoney, или важнейшего документа, или письма от клиента (босса – вариантов тут много). Не думаю, что для сохранения оных (и их оперативного обновления) идеален именно метод создания полного образа диска.
Тут можно было бы привести ещё много доводов –, но довольно: сегодня мы сосредоточимся на альтернативном, старом добром методе, которым пользовались ещё наши дедушки и бабушки в таком чудном 20 веке — это выборочное сохранение своих наиболее критичных данных в традиционных файлах и архивах. А вот чтобы сделать этот процесс максимально автоматизированным и гибким, мы и рассмотрим сегодня нашего героя, по моему скромному мнению лучшего в этой области – консольную утилиту nnBackup.
nnBackup — это крошечная (350k) консольная утилита, предназначенная для резервного копирования файлов, синхронизации содержимого каталогов, создания и обработки файл-листов. Поддерживается встроенное сжатие архивных данных по алгоритмам gz или zip, использование внешних архиваторов и запуск произвольных приложений до и после основного процесса копирования файлов. Предусмотрены специальные средства для удаления неактуальных данных из резервной копии. Утилиту можно запускать как из командной строки, так и из внешнего планировщика (идеальный вариант при этом – её близкий родственник nnCron).
Итак, окинем взглядом все основные возможности и направления работы nnBackup:
При этом, отдельно отметим, для 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
В качестве регистрационного имени введите два слова через пробел:
В заключении отмечу, что признак успешной регистрации — появление файла nn.key в папке C:\Program Files\nnBackup\
Всегда стараюсь: чем больше мне нравится программа, тем сильнее пытаться сохранять нейтралитет в её обзоре, потому как из-за эффекта симпатийной эмпатии, часто невольно из-под пера многих авторов-обзорщиков выходят ну просто натуральные рекламные тексты, и тогда, невольно поддавшись импульсу, скачаешь да и запустишь ненароком предмет оных воздыханий… диссонанс между написанным и увиденным, порой бывает, бьёт аж через край, а потому отсюда следует очевидный вывод: в каждой бочке меда всегда есть хоть маленькая ложечка дегтя, потому как нет совершенства в этом мире и всё тут.
Кстати, что касается меня лично – то я яркое исключение из этого правила, ибо исповедую принцип:
“Доказательством совершенства является отсутствие претензии на то, чтобы быть совершенным.” (Фенелон).
Посему, исключительно справедливости ради, честно отмечу несколько недостатков nnBackup на мой очень субъективный взгляд:
Впрочем, закончив перечисление всего негативного, с чем я столкнулся в 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
Продолжение этой статьи читайте здесь.