Пофайловый бэкап, то есть бэкап файлов и папок, производимый на уровне файловой системы, гораздо более актуален, чем создание посекторного образа системы. Действительно, с потерей настроенной 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 на них же спотыкался?). В-третьих, конечно, программе не хватает простенького графического интерфейса, который мог бы здорово сэкономить время её настройки.
Из журнала "Компьютерра" https://old.computerra.ru/gid/318901/