Журнал «Компьютерра» № 18 от 15 мая 2007 года - Компьютерра. Страница 26
Кроме того, необходимо учесть одну тонкость в работе Windows. Это известная проблема с сигнатурами жестких дисков, возникающая при посекторном клонировании разделов [ Подробнее см. на forum ixbt com/topic cgi?id=22:22723], о решении которой не заботится ни DriveImage XML, ни Acronis True Image, ни большинство других программ. Корень зла в том, что Windows XP запоминает все подключавшиеся к ней когда-либо жесткие диски и ставит им в соответствие буквы алфавита или пути к папкам NTFS-разделов. При переносе системы на новый диск (или, применительно к бэкапной теме, потенциальном восстановлении бэкапа на новый жесткий диск, приобретенный взамен умершего) порой возникает ситуация, в которой «клонированная» Windows XP во время загрузки назначает новому системному диску букву, отличную от C (или той буквы, которой раньше соответствовал системный диск). В результате система впадает в ступор, так в какой-то момент понимает, что грузится «ниоткуда». Решение проблемы очень простое: перед созданием очередного бэкапа нужно заставить Windows XP при очередной загрузке переопределить все буквы заново. Достигается это удалением параметров ветки реестра «HKEY_LOCAL_MACHINE\ SYSTEM\MountedDevices». В результате при первой загрузке восстановленного из бэкапа образа буквы накопителей расставятся по умолчанию и система гарантировано загрузится. Правда, придется вручную переназначить буквы всем логическим дискам и флэшкам вашего компьютера, но ради легкого «воскрешения» системы с этим можно смириться. Чтобы буквы не «летели» каждый раз после снятия образа вашей рабочей системы, достаточно упомянутую ветку реестра перед очисткой сохранять, а по завершении бэкапирования – восстанавливать.
Пофайловый бэкап, то есть бэкап файлов и папок, производимый на уровне файловой системы, гораздо более актуален, чем создание посекторного образа системы. Действительно, с потерей настроенной Windows еще можно смириться, потратив несколько вечеров на установку и обкатку системы с нуля, а вот с потерей всей накопленной за много лет информации или большого проекта, до сдачи которого остался день-другой – едва ли. Случай, когда вся эта информация помещается на одну DVD-болванку, тривиален и не интересен, – такой объем достаточно куда-нибудь регулярно копировать. Гораздо интереснее (и жизненнее) обезопасить гигабайт 200—300 динамично изменяющихся данных, причем сделать это, придерживаясь концепции максимального удобства пользователя и автоматизации процесса. Только если пользователь вообще не должен будет о них вспоминать, бэкапы будут происходить регулярно. Задача становится еще интереснее, если мы захотим создать систему очень динамичных (например, ежедневных) бэкапов с многоступенчатым откатом, который позволил бы хранить не только текущую копию исходных данных, но и предыдущие их варианты, так далеко назад во времени, как только позволяет емкость бэкапного жесткого диска. Для такой задачи простым копированием не обойдешься, поскольку даже на самый большой современный диск, объемом в терабайт, трехсотгигабайтный массив можно скопировать всего три раза.
Определив сверхзадачу, давайте формализуем пожелания. Итак, пофайловые бэкапы должны:
• происходить из рабочей операционной системы;
• не требовать внимания пользователя, но при этом быть для него прозрачными;
• быть инкрементными – заново копироваться должны только изменившиеся с прошлого бэкапа данные;
• быть устойчивы к человеческому фактору, чтобы в случае чего был доступ не только к копии текущего состояния винчестера, но и к файлу, случайно удаленному две недели тому назад;
• происходить со скоростью, близкой к максимально возможной скорости работы дисковой подсистемы компьютера;
• просто и наглядно отделять «мусор» от открытых для бэкапирования данных;
• поддерживать достаточно глубокую вложенность директорий и кодировку unicode в именах файлов.
Как видите, перечисленные требования вполне реализуемы несколькими банальными, всем знакомыми операциями с файловой системой: скопировать, переместить, удалить да запланировать все это в определенной последовательности. Казалось бы, гораздо более простая задача, чем посекторное копирование разделов, но – удивительно! – я не нашел ни единой высокоуровневой программы с графическим интерфейсом, которая могла бы достойно выполнить эти пожелания. Роскошные навороченные платные комплексы, бесплатные «поделки на коленке» – все они пасовали в лучшем случае на трех из перечисленных пунктов. На помощь пришла отечественная разработка – консольная утилита nnBackup. Это гениальная программа, при весе всего в 350 килобайт позволяющая организовать пофайловые бэкапы практически любой сложности. Можно просто регулярно копировать информацию; можно создавать «дампы» только изменившихся данных или синхронизировать две папки; можно работать не только с реальными файлами, но и с текстовым «слепком» файловой системы; можно запланировать расфасовку сделанного бэкапа по директориям заданного объема, чтобы каждая из них поместилась на CD или DVD с сохранением оригинальной структуры вложенных директорий. Есть еще с десяток разных функций, комбинируя которые можно достичь практически любого результата. Программа ведет скрупулезный лог своих действий, в результате чего локализация любой возникшей проблемы не вызывает никаких трудностей. Большая часть действий утилиты сводится к операциям копирования, которые производятся операционной системой, а не каким-то там подозрительным драйвером, за счет чего скорость бэкапирования вплотную приближается к скорости обыкновенного копирования вашего компьютера.
Увы и ах, как и за все другое, за отличную функциональность приходится платить. Но в данном случае не деньгами, так как утилита бесплатна для русскоязычного населения, а временем и мозговыми ресурсами. Общение с программой происходит только через командную строку, так что даже несмотря на превосходную русскоязычную справку, настройка требует изрядного напряжения серого вещества. Для облегчения этого процесса предлагаю вам ознакомить с моей конфигурацией бэкапа динамично меняющегося рабочего раздела, а при настройке своей системы отталкиваться уже от нее.
С целью упрощения процесса создания сценария бэкапа, исполняемый файл nnbackup exe можно попросить брать команды не из командной строки, а из текстового файла, который очень удобно комментировать. Вот, к примеру, создадим в папке nnBackup файл config cfg. Строчки, обозначенные обратным слэшем, – комментарии, а все остальные – команды (см. врезку).
\ Синхронизировать приемный каталог с
\ исходным. В этом случае из исходного
\ каталога в приемный копируется вся
\ информация, которой там еще нет:
sync
\ Исходный каталог:
– i W:\
\ И приемный каталог:
– o «X:\w\"
\ Учитывать все подкаталоги при копировании:
– s
\ Сравнивать при синхронизации не только
\ время последней модификации файла, но и
\ время его создания:
– tc
\ Сравнивать при синхронизации еще и размер
\ файла, а также бэкапить файлы, даже если
\ дата их модификации в исходном каталоге
\ изменилась в обратную сторону:
– ad
\ Удалять в приемном каталоге файлы,
\ отсутствующие в исходном каталоге:
– da
\ Этот ключ определяет поведение программы
\ в случае, если какой-то каталог был удален в
\ исходном каталоге, но все еще содержится в
\ резервной копии:
– nd
\ Исключать из бэкапа все файлы и
\ директории, имя которых заканчивается
\ на.@exc:
– x *.@exc
\ Оставлять копию всей информации, которая
\ меняется или удаляется в приемном каталоге.
\ При этом помещать измененные файлы в
\ специальный каталог «W_dumps», создавая