Резервное копирование
Гром не грянет — мужик не перекрестится (© народная мудрость).
Нет ничего дешевле профилактики (© врачебная мудрость).
Резервное копирование — это та рутина, о которой люди вспоминают (а если не знали, то начинают задумываться) только тогда, когда вдруг теряется важная информация, восстановить которую невозможно или очень трудно. Чаще всего в качестве такой информации выступают различного рода базы данных (например, 1С), папки с документами, с данными по какому-либо проекту, исходники разрабатываемых программ. Причиной утраты информации как правило являются отказы оборудования и человеческие ошибки. Хотя и отказы, и ошибки иногда бывают поправимыми, все же довольно часто случается и так, что исправить ничего не удается и данные безвозвратно теряются. И сколько бы ни говорилось о необходимости резервного копирования, периодически невосполнимые утраты информации случаются даже у матерых компьютерщиков, не говоря уже об организациях, в которых системного администратора нет вовсе либо сисадмин просто плохо делает свою работу.
Вчера мне довелось в очередной раз столкнуться с ситуацией утраты важных данных. Речь шла о файловых базах 1С одного магазина, физически расположенных на весьма пожилом жестком диске такого же пожилого компьютера. Сложилось так, что однажды Windows XP на этом компьютере просто вылетела в синий экран и больше не загрузилась. «Компьютер перестал работать», как говорят не слишком сведущие в компьютерных вопросах пользователи. При ближайшем рассмотрении выяснилось, что причиной неработоспособности компьютера стал отказ механики жесткого диска.
Если бы где-то на другом носителе существовала мало-мальски актуальная резервная копия баз 1С, то проблема была бы решена в течение часа покупкой нового жесткого диска и установкой на него новой операционной системы. Но резервной копии не было. Хотя все возможности заранее организовать периодическое резервирование по сети на другой компьютер — были. В результате день был потрачен на бесплодные попытки подручными средствами таки добыть нужную информацию с пребывающего в коме старого жесткого диска. Поскольку сделать это оказалось невозможно, владелец магазина оказался перед довольно неприятным выбором: потратить несколько сотен долларов и несколько дней времени на восстановление информации в какой-нибудь специализированной конторе, либо просто начать работать заново, потеряв данные о пяти месяцах работы.
В общем, пишу я это все для того, чтобы лишний раз обратить ваше внимание на проблемы резервного копирования информации и предложить (или напомнить — кому как) способ осуществления резервного копирования, которым я сам успешно пользуюсь на протяжении нескольких лет.
Для начала несколько слов об основах резервного копирования. br>
1. Наиболее эффективно резервное копирование в случаях, когда нуждающиеся в резервировании данные хранятся централизованно: то есть содержатся в одной или нескольких папках, а не разбросаны непонятно как «по всему компьютеру». А значит, если вы работаете над каким-либо проектом, то лучше держите все данные по проекту внутри одной папки (внутри которой создайте удобную для вас структуру файлов и папок). Например, 1С каждую из своих баз и так складывает внутри одной папки. br>
2. Создаваемые резервные копии лучше всего располагать на другом носителе по отношению к тому, где располагаются сами резервируемые данные. Например, в описанном мной случае с базами 1С резервные копии лучше всего было бы хранить на другом компьютере в сети. Другим носителем может выступать также любой съемный накопитель (флешка, внешний жесткий диск, болванка CD-R или DVD±R) или любое хранилище файлов в интернете — кому как проще или удобнее. Главное, чтобы это был ДРУГОЙ носитель, и чтобы он обеспечивал приемлемую надежность и безопасность хранения данных. Другой носитель нужен как раз для того, чтобы уберечься от отказов оборудования. Например, в описанном мной случае практически ничем бы не помогли резервные копии баз, расположенные на том же самом неисправном жестком диске — прочитать эти резервные копии все равно бы не получилось. br>
3. Резервное копирование должно осуществляться регулярно, и по возможности не должно зависеть от забывчивости (без)ответственных сотрудников. br>
4. Ну и, конечно, с целью экономии занимаемого места на носителях, резервные копии лучше упаковывать в архивы. Благодаря возможностям современных архиваторов, упаковка в архив кроме всего прочего даст возможность легко контролировать целостность данных: если архив открывается и распаковывается без ошибок, значит данные внутри архива не повреждены. Опять-таки, работать с единственным файлом архива порой намного проще, чем с тысячами мелких исходных файлов. Например, копирование на флешку и с флешки единого архива резервной копии происходит намного быстрее, чем нескольких десятков (а тем более — сотен или тысяч) исходных файлов, даже если суммарный размер этих файлов и размер архива примерно одинаковы.
Для решения задач резервного копирования мне удобно использовать сценарий командной строки. Скачать сам сценарий вместе с примерами папок и файлов, участвующих в резервном копировании, можно здесь: backup.rar.
Предлагаемый сценарий выполняет упаковку в архивы баз из двух папок. Созданные резервные копии складываются в папку Backup. Каждый архив резервной копии в имени файла содержит название базы, дату резервирования, а также порядковый номер копии в пределах одной даты (для случая, если резервирование планируется выполнять чаще, чем один раз в сутки). В этой же папке располагается файл COMMON.LOG с логом резервирования за все время (он не переписывается при каждом запуске сценария, а дополняется). Кроме того, резервные копии копируются по сети на другой компьютер. Все названия папок, пути, имена файлов прописаны в переменных сценария. Сценарий снабжен комментариями, чтобы разобраться в нем можно было даже без соответствующих знаний и опыта. Если вопросы все-таки будут возникать — пишите, будем разбираться
Хотелось бы обратить внимание на следующее. Архивация выполняется посредством вызова консольной версии архиватора WinRar — файла rar.exe (взять его можно, например, из папки с установленным WinRar). Чтобы сценарий работал, необходимо в папку со сценарием положить также файл rar.exe (или позаботиться о том, чтобы этот файл находился по любому пути, прописанному в переменной окружения PATH; например, можно просто скопировать rar.exe в папку C:\WINDOWS или добавить в переменную PATH путь к папке с архиватором). Кроме файла rar.exe в последних версиях архиватора понадобится также файл RarLng.dll. Еще можно положить и ваш файл ключа rarreg.key (работать будет и без файла ключа, просто не будут записываться в лог-файл ошибки упаковки).
При запуске rar.exe используются следующие ключи (параметры): br>
m5 — использовать метод сжатия 5 — максимальный; br>
md4096 — использовать размер словаря в 4096 Кб (максимальный); br>
s — создать непрерывный архив (для лучшей степени сжатия); br>
r — выполнять упаковку рекурсивно, с подкаталогами; br>
dh — открывать совместно используемые файлы (нужно для того, чтобы можно было выполнять резервирование, например, баз 1С, не заставляя всех пользователей выходить из программы); br>
ri1 — задать приоритет 1 — минимальный (чтобы не допустить «тормозов» на компьютере во время выполнения резервирования); br>
ilog%LOGFILE% — записывать протокол ошибок в файл, путь к которому содержится в переменной LOGFILE (работает только в зарегистрированной версии, то есть нужен файл ключа).
br>
Вообще в свое время свой сценарий я делал на основе другого, найденного в интернете, служащего приблизительно для тех же целей. Но во-первых, автора его я не помню (выходит, сослаться не на кого), а во-вторых, свой сценарий я несколько раз переписывал, так что от исходного варианта мало что осталось. Принципиальные изменения следующие: добавлены возможности резервирования файлов из нескольких папок, добавлено копирование резервных копий по сети на другой компьютер, добавлены свои ключи для запуска rar.exe, добавлена возможность создания нескольких резервных копий в течение суток с разными именами (отличающимися цифровым индексом).
Сценарий легко приспособить под ваши нужды, просто исправив «под себя» значения переменных с именами файлов, папок и путями. Может потребоваться убрать лишние строки или добавить новые в зависимости от количества папок с файлами, подлежащих резервированию (прилагаемый сценарий рассчитан на две такие папки). Рекомендую запуск приспособленного под ваши нужды сценария прописать в планировщик (Панель управления — Назначенные задания), чтобы резервирование выполнялось по расписанию и не зависело от вашей забывчивости или от ответственности других людей