Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль
Добавить софт
Мой софт

nnBackup: служба в резерве. Часть 1

Автор: Игорь Савчук
Опубликовано: 28.09.2011
Источник: SoftKey.info

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

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

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

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

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

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

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

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

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

Теперь в дополнение общей картины давайте перечислим множество мелких, но приятных особенностей, без которых справедливый вопрос "почему именно nnBackup?" так и остался бы без ответа:

  • миниатюрный размер;
  • высочайшая скорость работы;
  • поддержка юникода;
  • интересная возможность запуска произвольных приложений перед (предобработка) или после копирования (постобработка) с учетом кодов возврата;
  • возможность хранить и считывать параметры (ключи) запуска из указанных текстовых файлов (а также комментировать их для большего удобства);
  • наличие специального тестово-отладочного режима работы (без физического копирования/удаления файлов);
  • подробное логирование всех операций, что позволяет поднять логи и распутать любое движение файлов и их обработку в случае каких-то вопросов;
  • наличие своего собственного архиватора (на базе zip), работа которого в разы быстрее традиционного WinRar;
  • nnBackup позволяет копировать, в том числе открытые для чтения/модификации файлы (при условии, что они специально не заблокированы на чтение);
  • предоставляет возможность запуска как сервис и как обычное приложение;
  • запуск операций с правами заданного пользователя;
  • возможность использовать шаблоны на базе регулярных выражений ("регэкспы") при выборке файлов;
  • 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 filesmy_prog" -o d:backup -s -v
nnbackup.exe sync -i "c:my documentsmy folder" -o "d:my backupsanother folder" -v

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

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

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

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

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

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

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

Завтра мы вернемся к этой теме и рассмотрим, как можно использовать Dropbox для бэкапа совместно с nnBackup, а также честно обсудим все недостатки этой утилиты (то, что вы никогда не прочитаете на официальном сайте производителя).



Статистика
Всего программ 28602
Скачиваний сегодня 712
Скачиваний вчера 1192