Параноидальный бэкапАвтор: Филипп Казаков В прошлом номере мы начали рассматривать вопросы посекторного резервного копирования жесткого диска и остановились на том, что идеальных программных средств не бывает. Продолжим.При создании посекторных образов системы, вне зависимости от используемого софта, есть тонкости, на которые следует обратить внимание. Любому бэкапированию препятствует мусор - информация, не требующая резервного копирования, которая, однако, подмешивается в основной массив данных, увеличивая время создания и итоговый размер резервного файла. Первое правило отделения мух от котлет - не разводить на жестком диске коммунальную квартиру. Как минимум ОС должна жить на отдельном логическом диске, а в идеале каждому типу данных должен быть выделен свой раздел или, на худой конец, папка. Это очень упрощает процесс настройки бэкапов. Классический "мусор" системного диска - файл hiberfil.sys, предназначенный для хранения содержимого оперативной памяти во время спящего режима, файл подкачки pagefile.sys, кэш браузера и игры. Hiberfil.sys и pagefile.sys имеют сиюминутное значение, но в дефолтной конфигурации системы занимают объем в 2,5 раза больший объема оперативной памяти. С hiberfil.sys, к сожалению, ничего не сделаешь - его местонахождение жестко определено ядром системы и перенести его невозможно. Единственный выход - перед созданием бэкапа вручную отключать "Спящий режим", а затем включать снова. Файл подкачки можно штатными средствами Windows разделить на два: на системном диске оставить небольшой файл с жестко ограниченным объемом, а дополнительный pagefile.sys создать на другом логическом или физическом диске (второе, кстати, еще и полезно для повышения общей производительности системы), например на том же бэкапном. Туда же заодно можно перенести и кэш браузера. Что же касается игр, крайне охочих до дискового пространства, но не требующих увековечивания, то существует элегантный способ отделить их от системного диска. Достаточно создать "игровой" логический раздел и подмонтировать его в качестве какой-нибудь папки, например C:\Games, штатными средствами "Управления компьютером". Логически эта папка ничем не будет отличаться от любой другой, а "лишний" раздел не займет дефицитной буквы. В результате посекторные бэкапы системного диска будут избавлены от тяжкого груза виртуальных реальностей, что благотворно скажется на их (бэкапов) объеме. Кроме того, необходимо учесть одну тонкость в работе 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". В результате при первой загрузке восстановленного из бэкапа образа буквы накопителей расставятся по умолчанию и система гарантировано загрузится. Правда, придется вручную переназначить буквы всем логическим дискам и флэшкам вашего компьютера, но ради легкого "воскрешения" системы с этим можно смириться. Чтобы буквы не "летели" каждый раз после снятия образа вашей рабочей системы, достаточно упомянутую ветку реестра перед очисткой сохранять, а по завершении бэкапирования - восстанавливать. nnBackupПофайловый бэкап, то есть бэкап файлов и папок, производимый на уровне файловой системы, гораздо более актуален, чем создание посекторного образа системы. Действительно, с потерей настроенной Windows еще можно смириться, потратив несколько вечеров на установку и обкатку системы с нуля, а вот с потерей всей накопленной за много лет информации или большого проекта, до сдачи которого остался день-другой - едва ли. Случай, когда вся эта информация помещается на одну DVD-болванку, тривиален и не интересен, - такой объем достаточно куда-нибудь регулярно копировать. Гораздо интереснее (и жизненнее) обезопасить гигабайт 200–300 динамично изменяющихся данных, причем сделать это, придерживаясь концепции максимального удобства пользователя и автоматизации процесса. Только если пользователь вообще не должен будет о них вспоминать, бэкапы будут происходить регулярно. Задача становится еще интереснее, если мы захотим создать систему очень динамичных (например, ежедневных) бэкапов с многоступенчатым откатом, который позволил бы хранить не только текущую копию исходных данных, но и предыдущие их варианты, так далеко назад во времени, как только позволяет емкость бэкапного жесткого диска. Для такой задачи простым копированием не обойдешься, поскольку даже на самый большой современный диск, объемом в терабайт, трехсотгигабайтный массив можно скопировать всего три раза. Определив сверхзадачу, давайте формализуем пожелания. Итак, пофайловые бэкапы должны:
Как видите, перечисленные требования вполне реализуемы несколькими банальными, всем знакомыми операциями с файловой системой: скопировать, переместить, удалить да запланировать все это в определенной последовательности. Казалось бы, гораздо более простая задача, чем посекторное копирование разделов, но - удивительно! - я не нашел ни единой высокоуровневой программы с графическим интерфейсом, которая могла бы достойно выполнить эти пожелания. Роскошные навороченные платные комплексы, бесплатные "поделки на коленке" - все они пасовали в лучшем случае на трех из перечисленных пунктов. На помощь пришла отечественная разработка - консольная утилита 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", создавая \ каждый раз подкаталог с именем в виде \ текущей даты: -backup X:\W_dumps\%YYYY%-%MM%-%DD%\ Если теперь запустить nnbackup.exe с ключом -f config.cfg, он прочтет содержимое конфигурационного файла. Весь диск W:\ будет скопирован в папку X:\w\ на бэкапном HDD. Помните пункт о наглядном отделении "мусора" от требующих резервного копирования данных? Все папки и файлы, оканчивающиеся на ".@exc", будут проигнорированы. Таким образом, чтобы запретить бэкап, предположим, захваченного только что с ТВ-тюнера сериала, достаточно к названию папки с захватами добавить ".@exc", например, так: "W:\captures.@exc\". Сразу видно, что это папка-неудачница! Конечно, такое замысловатое буквосочетание я придумал сам, встретить подобную "символьную тусовку" в реальной жизни почти невероятно. Вы можете придумать любое свое обозначение. Итак, при первом запуске содержимое диска W:\ за оговоренным исключением скопируется в X:\w\. В результате каждого повторного запуска скрипта содержимое исходного диска будет пофайлово сравниваться с копией, и если на бэкапируемом разделе что-то изменилось, копия будет приводиться в полное соответствие с оригиналом. Самое интересное в том, что всякое изменение, происходящее с бэкапом, не канет в лету, но будет аккуратно отражено в папке X:\W_dumps, в которой вы всегда сможете найти удаленный невзначай файл. Временна,я глубина дампов прямо пропорциональна емкости бэкапного HDD и обратно пропорциональна интенсивности бэкапирования. С емкостью диска все понятно, а вот интенсивностью бэкапирования можно выгодно манипулировать. Для раздела с актуальными рабочими данными разумно запланировать ежедневный бэкап. В этом случае объем "дампнутых" данных растет быстро, однако вы будете наилучшим образом защищены от потерь насущной работы. Долговременные хранилища, напротив, выгодно бэкапить пореже. Информация в них меняется медленно, зато эти данные наиболее ценны и хранить их желательно как можно дольше. Запланировать ежедневное выполнение сценария можно даже встроенными средствами Windows, однако у автора nnBackup имеется не менее мощная утилита-планировщик под названием nnCron, выполненная в аналогичной стилистике и дающая большую фору виндусовскому шедулеру. В последних версиях, кстати, эта утилита обрела графический интерфейс, так что с ее настройками, полагаю, вы без труда разберетесь. Справедливости ради и стимулирования для отмечу несколько недостатков nnBackup. Во-первых, программа хоть и поддерживает опцию архивирования, из-за, видимо, лицензионных соображений эта функция ограничена использованием старых библиотек zip, не умеющих создавать на выходе файлы размером более 2 Гбайт. Во-вторых, хоть в последних версиях nnBackup заявлена поддержка файлов с юникодовыми именами, в действительности иногда возникают проблемы при работе с файлами, имеющими длинные русскоязычные имена (может быть, Acronis True Image на них же спотыкался?). В-третьих, конечно, программе не хватает простенького графического интерфейса, который мог бы здорово сэкономить время ее настройки. Не забудьте про себяЧто еще можно придумать, чтобы обезопасить свои информационные богатства? Если в доме несколько компьютеров, можно организовать перекрестный или цепочный бэкап, чтобы каждый компьютер бэкапился на соседа. Это исключит возможность потери данных в результате редких случаев порчи всей "начинки" компьютера зараз. Дабы избежать природных катаклизмов и прочих "обстоятельств непреодолимой силы", можно организовать перекрестный бэкап через Интернет с компьютером какого-нибудь другого пара… единомышленника. Систему бэкапов можно улучшать и усложнять бесконечно. Важно, однако, в какой-то момент остановиться, потому что иначе можно прийти к мысли о бэкапе собственной головы. Вот только не будет ли поздно?..
|