Организация резервного копирования с помощью архиватора WinRAR

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

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

Итак, как бы то ни было, будем считать, чтонеобходимость резервного копирования (бэкапа) вами осознана и принята, как неотъемлемая часть повседневной работы. На повестке дня встает вопрос выбора программного средства для резервного копирования.

На первый взгляд, проблемы не существует вовсе. Любой софтверный портал может предоставить программки на любой вкус и цвет. Платные и бесплатные, простые и навороченные, объемистые и совсем крошечные. Даже в MS Windows имеется встроенная утилита, которая так и называется – Backup.

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

Автору этой статьи самому пришлось после перехода на Windows 2000 некоторое время держать Windows 98 в виде виртуальной машины VmWare. Пока, наконец, все qic-архивы, которых оказалось на удивление много, не были благополучно перепакованы.

Итак, подведем промежуточные итоги. Что нужно обычному пользователю? Регулярно сбрасывать на внешний носитель документы и наработки. Причем процесс должен занимать как можно меньше времени и требовать минимума телодвижений. Встроенная утилита Backup годна, в лучшем случае, для краткосрочного резервного копирования, специализированные пакеты не подходят по причинам, изложенным выше. Что имеем в остатке? Правильно, старые добрые архиваторы.

Архиваторов тоже очень много и они все разные. Платные и бесплатные, простые и навороченные (есть даже архиватор со встроенным cкриптовым языком – TugZIP!).

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

Правильность выбора подтверждает и тот факт, что для WinRAR существует минимум две надстройки, облегчающие резервное копирование данных. Платные, между прочим.

Разумеется, ничего платить жадным программерам в данном случае не нужно. Гораздо проще и интереснее настроить архиватор самому.

Казалось бы, процесс создания архива прост до невозможности. Запускаем архиватор, выбираем нужные папки, жмем пиктограмму Add… Вот тут-то нас и подстерегает главная неприятность. Проделали мы это раз, проделали другой, третий. А потом вдруг замечаем, что начали откладывать нудный процесс на завтра, на конец недели, месяца и т.д.

Есть ли способ как-то упростить дело? Представьте, да. Для этого надо только вспомнить, что у программ есть командная строка.

Рассмотрим самый простой случай. Нам необходимо регулярно резервировать папку «Мои Документы».

Для начала нужно выделить для архивов отдельную папку. Лучше всего в корне какого-либо раздела жесткого диска. Можно даже на флеш-накопителе. Правда, опыт показывает, что создание архива непосредственно на флешке отнимает в несколько раз больше времени, нежели создание того же архива на жестком диске с последующим копированием его на флешку.
Итак, заводим, допустим, на диске D, папку BACKUP. Внутри ее можно сразу создать папку BACKLIST. Она понадобится вам позже.
Теперь нужно найти ярлык программы WinRAR на рабочем столе (десктопе) или в программных группах меню «Start» («Пуск»). Кликаем по ней правой клавишей мыши и выбираем команду «Copy» («Копировать»). Затем щелкаем по рабочему столу, опять же, правой кнопкой мыши, на сей раз выбрав команду «Paste» («Вставить»). Должен появиться ярлык «WinRAR», «Copy of WinRAR» или «WinRAR(2)». Можно тут же переименовать его в «Backup My Documents»
Теперь щелкаем правой кнопкой мыши уже по этому ярлыку. Выбираем пункт «Properties» («Свойства»). В поле «Target» после пути к
исполняемому файлу архиватора дописываем следующую строку:

a D:\BACKUP\my_doc_backup.rar "C:\Documents and Settings\Administrator\My Documents"

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

Теперь после двойного щелчка по ярлыку, в папке BACKUP, на диске D, или где вы там ее создали, будет создан архив со всем содержимым папки My Documents.
Хорошо, скажете вы. А если папок, требующих регулярного резервного копирования, несколько, и они расположены в разных местах? Это не проблема. Добавляем их к командной строке через пробел. Например:

a D:\BACKUP\my_doc_backup.rar "C:\Documents and Settings\Administrator\My Documents" "E:\Мои наработки" E:\TEMPWORK E:\000\notes.txt

Теперь в архив my_doc_backup.rar, кроме содержимого папки My Documents, попадут и все файлы из папок «Мои наработки» и «TEMPWORK».

Пути к папкам могут быть длинными и запутанными. Набирать их вручную трудновато. К счастью, этого и не требуется. Если вы пользуетесь Проводником, выберите в нем нужную папку и скопируйте строку из поля Address. В Total Commander есть комбинация клавиш Ctrl+P. В Far Manager – Alt+Shift+Ins.
А вот как быть, если папок, подлежащих архивированию, у вас порядка десятка? Рабочая строка получается длинной и неудобной для
редактирования. В этом случае нужно использовать другую возможность WinRAR – списки.

a D:\BACKUP\my_doc_backup.rar @D:\BACKUP\BACKLISTS\list1.txt
Ухватили идею? В папке BACKLIST надо создать текстовый файл list1.txt со списком файлов и папок, которые требуется поместить в архив. В нашем случае это:

C:\Documents and Settings\Administrator\My Documents
E:\Мои наработки
E:\TEMPWORK\*.txt
E:\000\notes.txt //текущие заметки

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

Между тем, более правильным было бы создание отдельных архивов, разнесенных по времени. Можно, конечно, каждый раз переименовывать архивы вручную. А можно и эту задачу переложить на WinRAR.

Для этого в нем предусмотрен ключ –ag[format], после которого можно помещать индивидуальный модификатор для имени архива.
В формате предусмотрены следующие шаблоны для знакомест.
Y - год.
M - месяц.
W - номер недели.
A - день недели (понедельник — 1, воскресенье — 7).
D - число.
E - день в году.
H - часы.
M - минуты.
S - секунды.
N - номер архива.
При добавлении номера WinRAR ищет в папке уже существующие архивы с именем, совпадающим с генерируемым. Если таковые файлы там имеются, номер будет последовательно увеличен до первого несовпадения. То есть, если в папке уже существуют архивы arch001.rar и arch002.rar, будет создан архив с именем arch003.rar.
Модификатор добавляется после основного имени. Если мы хотим, чтобы он был добавлен ПЕРЕД, нужно сразу после –ag добавить «+».
Для удобства восприятия шаблоны можно разделять знаком «минус» или «подчеркивание». Кроме того, в шаблон можно помещать произвольные текстовые фрагменты, отделив их фигурными скобками.
Если шаблон не задавать, то его значение по умолчанию будет YYYYMMDDHHMMSS. То есть вызов

a –ag D:\BACKUP\my_doc_backup_.rar @D:\BACKUP\BACKLISTS\list1.txt
даст архив под названием my_doc_backup_20080303120533.rar. А при команде
a –agYYYY{года}_MMM_DD_HH_MM D:\BACKUP\my_doc_backup_.rar @D:\BACKUP\BACKLISTS\list1.txt

выходной архив будет называться, к примеру, my_doc_backup_2008года_Mar_03_22_42.rar.
Для резервного копирования имеет смысл использовать шаблон покороче, но чтобы он был легко читаемый. Лучше всего на эту роль подходит YYYY- MMM-DD. Вы же не собираетесь делать резервные копии по десять раз на дню, верно? Если же таки собираетесь, то проще всего добавить к дате шаблон номера. Вот так: YYYY-MMM-DD-{N}NN.
Получится что-то вроде my_doc_backup_2008_May_21-N01.rar

Теперь рассмотрим другую проблему. Вы, допустим, дизайнер или видеоинженер, и вам постоянно приходится резервировать сотни мегабайт, а то и гигабайты данных. Естественно, процесс создания архива отнимает какое-то, иногда очень даже немаленькое время. Это не есть хорошо. Значительно ускорить время создания архива можно, настроив параметры сжатия. Для этого можно создать специализированный профиль. Для этого запускаем архиватор, выбираем произвольный файл или папку и нажимаем пиктограмму «Add». Мы попадаем в окно настройки параметров архива («Archive names and parameters»).

Вначале выбираем эффективность сжатия архива («Compression method»). Чем она больше, тем дольше создается архив. Поэтому при объемах архивируемых данных от 100 до 300 Mb выбираем «Normal» или «Fast», от 300 до 1000 Mb – «Fastest», а если счет идет на гигабайты, то можно и «Store». В блоке «Archiving options» в обязательном порядке устанавливаем галочку «Put recovery record». Это позволит архиватору создать специальную запись, которая, в случае повреждения архива, поможет восстановить данные.

В этом же блоке есть еще одна интересная опция: «Create solid archive». Она позволяет создавать так называемые непрерывные архивы. При создании такого архива все файлы воспринимаются архиватором как один массив данных. Это позволяет сильно уменьшить объем выходного архива, особенно, если среди архивируемых данных много файлов с одинаковым или сходным содержимым. Однако эта медаль имеет и обратную сторону. Распаковка отдельного файла из архива может занять продолжительное время, особенно, если файл расположен ближе к концу. И, в случае повреждения, восстановить такой архив гораздо труднее. Поэтому, прежде чем поставить галочку, следует решить, что для вас ценнее – место на диске или же архивируемые данные.

Вопрос этот, кстати, не тривиальный. Если резервное копирование делается стабильно часто, архивируемые данные имеют энное количество файлов со сходной структурой, а то и дубликатов, то включение опции «создание непрерывных архивов» очень даже оправданно.

Еще один рискованный метод сэкономить время и дисковое пространство связан с особенностями файловой системы. Среди атрибутов, которые могут быть присвоены файлу, имеется «архивный». Он предназначен именно для резервного копирования. Программа-бэкапер при архивации сбрасывает этот атрибут, а при последующей модификации файла он снова будет установлен.

Чтобы задействовать эту возможность в WinRAR, необходимо зайти на закладку «Backup» диалога создания архива и установить там галочки напротив «Add only files with attribute "Archive" set» (добавлять архивы только с установленным атрибутом «архивный») и «Clear attribute "Archive" after compressing» (очищать атрибут «архивный» после успешного сжатия файла). Естественно, это допустимо только для ежедневного бэкапа, при наличии большого массива наработанных данных и регулярном полном резервировании этих данных.

Думается, нет никакой нужды делать backup-архив многотомным. Ну разве что, если вы резервируете действительно большие объемы данных и планируете сохранять их на внешних носителях фиксированной емкости.

Теперь переходим на закладку «Advanced». Здесь устанавливаем длину записи для восстановления («Recovery record») в процентах от объема архива. Для обычных данных достаточно 2-3%, в случае особо ценной информации можно отжалеть и 10%. После этого жмем кнопочку «Compression» и попадаем в меню тонкой настройки параметров сжатия («Advanced compression parameters»).

В блоке «Text compession» радиокнопка пусть остается в положении «Auto». Как и параметры «Prediction order» и «Memory to use, MB» – в значении «0». Следующий блок «Audio compression». Если среди архивируемых данных нет аудиофайлов, однозначно ставим радиокнопку в положение «Disable». Аналогично отключаем и следующий блок «True color compression» – если не планируется архивировать полноцветные картинки BMP или TIFF. Теперь нужно настроить самый важный параметр («General compression») – объем словаря для архивации («Dictionary size, KB»). Чем больше это значение, тем, соответственно, больше время архивации. Поэтому при объемах резервируемых данных от 100 Mb до 300 Mb выставляем значение 256, более 300 – 128, и, более 2-3 GB, – 64.

Конечно, значения эти (как и выбор метода компрессии) получены чисто эмпирически и требуют поверки практикой. Тем более что
производительность настольных ПК все время увеличивается.
Последние три галочки разрешают использование специальных алгоритмов сжатия для исполняемых (.exe) файлов (32- и 64- битных) и табличных данных. Пожалуй, их стоит оставить включенными.

Все. Можно жать ОК.
Возвращаемся в закладку «General», щелкаем по кнопке «Profiles» и в выпавшем меню выбираем команду «Save current setting a new profile». В окошке «Profile parameters» вводим латиницей произвольное имя профиля, например «For_Arch». Можно установить галочку «Set profile as default», и созданный профиль будет использоваться по умолчанию. На этом создание профиля закончено.

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

Поэтому можно и даже нужно пойти другим путем – настраивать параметры сжатия непосредственно из командной строки.
Метод архивации можно назначить с помощью ключа «-m». За ним следует цифра (от 0 до 5). Чем она больше, тем выше эффективность сжатия. 0 соответствует методу Store, 5 – Best.

Размер записи для восстановления можно указать при помощи ключа «-rr». Лучше всего это делать как в настройках, в процентах от общего объема. Для этого сразу после цифры добавляется литера «p». К примеру, команда

a –rr3p my_back @arc1.txt

создаст архив с записью для восстановления 3%.

При помощи ключа «-s» можно велеть архиватору создавать непрерывные архивы. А заставить WinRAR использовать файловый атрибут «архивный» можно посредством ключей «-ac» (очищать атрибут «архивный») и «-ao» (добавлять в архив только файлы, у которых этот атрибут установлен). Ключ «-md» регулирует объем словаря архивации. Это может быть фиксированная цифра (64, 128, 256, 512, 1024, 2048, 4096) или буква (a, b, c, d, e, f, g) соответственно.

Отключить аудио- и True Color-компрессию можно добавив ключи -mca- и -mcc- соответственно.

Еще, если вы заметили, WinRAR сохраняет в архиве весь путь к целевой папке. Например, Documents and Settings\Administrator\My Documents. Иногда это полезно, но чаще совершенно лишнее. Чтобы архиватор сохранял только последнюю папку, воспользуйтесь ключом -ep1.

А чтобы заставить архиватор указывать не только полный путь, но и букву диска, на котором была резервируемая папка, существует ключ -ep3. Если ваши данные имеют степень секретности, в командную строку можно добавить ключ «-p». Он заставит WinRAR каждый раз запрашивать пароль. В принципе, удобства ради можно забить в командную строку и сам пароль (после ключа «-p», без пробела), но делать это имеет смысл только в том случае, если к вашему компьютеру не имеют доступа посторонние.

На этом разговор о ключах окончен. Пересказывать всю документацию архиватора в задачу автора никак не входит. Можно сказать лишь, что, хорошенько порывшись в help-файле WinRAR, вы найдете еще немало интересного. Запуск архиватора в фоновом режиме, управление версиями файлов и т.д. и т.п.
Существует еще один вопрос – развертывание системы резервного копирования. В нашем случае, помимо установки архиватора, оно заключается в создании ярлыков на рабочем столе, настройке командных строк, создании списков файлов и папок.

Хотя этот процесс не отнимает много времени, его можно и нужно автоматизировать. Для этого мы используем другую возможность WinRAR – создание инсталляционных пакетов.

Итак, создаем каталог BACKUP, в ней папку backlist. Можно сразу поместить в последнюю списки архивируемых файлов. Затем пакуем папку BACKUP в самораспаковывающийся архив.
Теперь открываем этот архив в WinRAR и добавляем к нему комментарий (Alt+M).
Комментарий может быть таким:

Title=Система резервного копирования файлов на базе WinRAR
Path=E:\
Shortcut=D, C:\Program Files\WinRAR\WinRAR.exe a -ag{_}YYYY-MMM-DD_HH-MM_N -rr10p E:\BACKUP\critical.rar
@E:\BACKUP\backlist\critical.lst,, "Резервирование критичных данных", "Critical Back-up"
Shortcut=D, C:\Program Files\WinRAR\WinRAR.exe a -ag{_}YYYY-MMM-DD_HH-MM_N E:\BACKUP\regular.rar @E:\BACKUP\backlist\regular.lst,,
"Обычное резервирование данных", "Standard Back-up"
Shortcut=D, C:\Program Files\WinRAR\WinRAR.exe a -ag{_}YYYY-MMM-DD_HH-MM_N -m1 -md64 -rr5p -ep3 E:\BACKUP\full_backup.rar
@E:\BACKUP\backlist\full.lst,, "Полное резервное копирование", "Full Back-up"
Shortcut=D, C:\Program Files\WinRAR\WinRAR.exe a -ag{_}YYYY-MMM-DD_HH-MM_N -ep1 E:\BACKUP\MyDoc.rar ""C:\Documents and
Settings\Administrator\My Documents"",, "Резервирование папки 'Мои Документы'", "MyDoc Back-up"

Все понятно? Строка Title формирует заглавную строку окна самораспаковывающегося архива, параметр Path указывает путь для распаковки данных по умолчанию, а команды Shortcut велят распаковщику создать на рабочем столе нужные ярлыки. Двойная запятая после командной строки ярлыка означает пропущенный параметр DestFolder, но, при желании, вы можете вбить туда подходящее имя, например, ShortBack, и тогда на рабочем столе будет создана папка, где и расположится соответствующий ярлык.

Обратите внимание на оформление пути к папке «Мои Документы» в последней строке. Если путь к exe-файлу архиватора распаковщик обрабатывает без проблем, то пути к исходным папкам требуется оформлять именно так – в сдвоенные кавычки.

Если вам придется развертывать эту «систему» на большом количестве компьютеров, имеет смысл создать скрипт, например, на встроенном в ОС языке Windows Host Script.

//базовые данные
var BackPath = "E:\\BACKUP\\"
var BackListPath = BackPath+"backlist\\"
//подпрограммы
var WshShell = WScript.CreateObject("WScript.Shell");
var WRarPath = WshShell.ExpandEnvironmentStrings("%ProgramFiles%\\WinRAR");
function MakeIcon(NameIcon,ListArg,NameArch,NameList,Comment) {
var MyShortcut = WshShell.CreateShortcut(WshShell.SpecialFolders("Desktop")+"\\"+NameIcon+".lnk");
MyShortcut.TargetPath = WRarPath+"\\WinRAR.exe";
MyShortcut.Arguments = ListArg+" "+BackPath+NameArch+".rar @"+BackListPath+NameList;
MyShortcut.WorkingDirectory = WRarPath;
MyShortcut.Description = Comment;
MyShortcut.Save(); }
function CreateList(NameList,ContentList) {
WF = FS.CreateTextFile(BackListPath+NameList, true);
WF.WriteLine(ContentList);
WF.Close(); }
// создаем папки для архивов
var FS = WScript.CreateObject("Scripting.FileSystemObject");

var WF = FS.CreateFolder(BackPath);
WF = FS.CreateFolder(BackListPath);
//создаем списки и ярлыки
NameList = "critical.lst";
ContentList = "C:\\ONWORKS";
CreateList(NameList,ContentList);
MakeIcon("Critical Back-up","a -ag{_}YYYY-MMM-DD_HH-MM_N -rr10p -ep1","сr_backup",NameList,"Резервирование критичных данных")
// ..
NameList = "regular.lst";
ContentList = "D:\\My Documents";
CreateList(NameList,ContentList);
MakeIcon("Standard Back-up","a -ag{_}YYYY-MMM-DD_HH-MM_N","reg_back",NameList,"Обычное резервирование данных")
// ..
NameList = "full.lst";
ContentList = "C:\\ONWORKS\nD:\\My Documents";
CreateList(NameList,ContentList);
MakeIcon("Full Back-up","a -ag{_}YYYY-MMM-DD_HH-MM_N -m1 -md64 -rr5p -ep3","backup",NameList,"Полное резервное копирование")
MakeIcon("Daily Back-up","a -ag{_}YYYY-MMM-DD_HH-MM_N -ac -ao -rr5p -ep3","daily_back",NameList,"Ежедневное резервное копирование")

Скрипт сам создает папку BACKUP, backlist и рабочие списки. Для каждого варианта бэкапа создается отдельный ярлык на рабочем столе. Все просто и функционально. Правда, возможность создания ярлыков с напрямую заданным путем к архивируемым файлам принесена в жертву ради этой простоты.

Последний совет. Лучше всего запускать резервирование данных вручную, но ежели имеется надобность в автоматическом бэкапе, то это несложно устроить. В Windows есть встроенный планировщик (Scheduled Tasks). Откройте его окно, перетащите туда созданный вами ярлык и настройте параметры запуска. Теперь компьютер будет резервировать данные самостоятельно.

Юзич yuzich17@mail.ru


Компьютерная газета. Статья была опубликована в номере 33 за 2009 год в рубрике soft

©1997-2022 Компьютерная газета