Создание архива в один клик, при помощи командной строки и архиватора WinRAR. Архиватор WinRAR

Время от времени приходится настраивать сжатие логов и прочих данных, берущих не столько гигабайтами, сколько количеством. RAR позволяет очень гибко настроить сжатие устаревших данных и повесить это все на планировщик.
И вот, в очередной раз пересматривая rar.txt, я нашел разумной мысль сделать шпаргалку по самым используемым параметрам командной строки rar/winrar 5.0

Общий формат коммандной строки rar или winrar

RAR [ - ] [ <@listfiles...> ]
[ ] [ ]

Пример:
"C:\Program Files\WinRAR\Rar.exe" a -to3d -s -m5 -x*.rar -df -dh -- archive.rar *.log

Еще раз повторюсь, это не мануал, который не помешает покурить, благо он коротенький, а просто шпаргалка.
Сперва разумеется указывается путь к rar. В общем случае это "C:\Program Files\WinRAR\Rar.exe" (с кавычками). Однако есть возможность использования не консольной, а gui-версии. Для этого нужно прописать "C:\Program Files\WinRAR\WinRar.exe".

Команды/command

Первый параметр коммандной строки - команда.

a - добавление в архив
m - перемещение в архив
e/x - извлечение файлов из архива
f - обновление архива (только те что уже есть в архиве)
i - поиск строки
l - список содержимого архива
s - создание sfx архива
t - тест архива
u - обновление файлов в архиве (с добавлением новых)

Ключи/switches

На втором месте - всевозможные ключи (опции), разделенные одним или несколькими пробелами. Для удобства и исключения некоторых ошибок "колбасу" ключей можно завершать двойным дефисом (--)

Самые важные ключи

-r - рекурсивный проход каталогов
-s - непрерывный (solid) архив. Очень полезная опция для большого количества однотипных и/или небольших файлов. В непрерывшом архиве словарь для всех файлов будет общим.
-m - метод (уровень) сжатия. 0 - без сжатия, 3 - обычный, 5 - максимальный
-dh - открывать файлы, открытые в данный момент другими процессами (open shared files)

Ключи безопасности

-dw - удаляя, перезаписывать (wipe) файлы
-dr - удалять файлы в корзину (windows)
-ht - тип хэша . Для rar 5 рекомендуется использовать BLAKE2 как более криптостойкий.
-p[пароль] - шифровать данные
-hp[пароль] - шифровать и данные и заголовки (имена файлов)
-rr - добавлять информацию для восстановления. Актуально при невосстановимых ошибках чтения/записи носителя информации.
-t - тест после архивирования перед удалением (например для команды m)

Ключи для оптимизации

-ma - выбор версии RAR. ma4 выбирает 4-ю версию, ma и ma5 - пятую. По умолчанию архивы создаются в 4й версии. Пора использовать уже пятую.
-mt<потоки> - количество потоков. По умолчанию RAR выберет количество потоков по количеству ядер. Если процесс архивирования предполагается фоновым, лучше занять только одно ядро, указав ключ -mt1
-md - размер словаря Для RAR 5.0 размер словаря может быть таким 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 MB, 16 MB, 32 MB, 64 MB, 128 MB, 256 MB, 512 MB, 1 GB . Памяти потребуется в 6 раз больше чем размер словаря. Значения по умолчанию или 32М (и 4Мб для RAR 4) будет вполне достаточно.
-v<размер> - разбивка архива на тома определенного размера. Большие файлы могут вызвать проблемы при их передаче/пересылке/хранении. -v2G - размер тома 2Gb.
-ri<приоритет>[:<задержка>] - приоритет процесса и задержка после каждой операции чтения-записи. (только в windows). Приоритет: 0 - по умолчанию системы, 1 - минимальный, 15 - максимальный. Задержка: 0..1000 ms. Задание задержки после каждой файловой операции позволяет сделать процесс архивирования менее заметным для других процессов системы.
-ms - типы файлов, которые следует добавлять в архив, но не сжимать (-ms*.rar;*.zip;*.jpg)

Выбор файлов

-to<время> - добавляет файлы старше указанного возраста. Формат: [d][h][m][s]. Например -to3d
-tn<время> - добавляет файлы новее указанного возраста
-x*.rar - не включать в архив файлы или папки по маске файла/пути. *\filename - не включать файл filename во всех каталогах
<имяфайла> - исключить файлы, указанные файле <имяфайла>
-n - дополнительный фильтр по маске файла/пути

Разные ключи

-ilog - запись лога в файл
-log[=name] - запись списка обработанных файлов в лог-файл
-ap установить путь внутри архива
-ver[n] хранение в архиве предыдущих версий файла
-df - удалить файлы после архивирования
-ed - не добавлять пустые каталоги
-ep - добавлять файлы в архив без каталогов
-ep1..ep3 - опции сохранения пути внутри архива (1 - без родительского каталога, 2 - полный путь, 3 - с диском/windows)
-ag[формат] - добавить к имени архива текущую дату и время
Символы в формате: Y - год, M - месяц, MMM - месяц (Jan, Feb, etc.), W - номер недели, A - день недели (пн - 1, вс - 7), D - день месяца, E - день года, H - час, M - минута (если указано после "H"), I - минута, S - секунда, N - порядковый номер, добавляемый к архиву так, чтобы оно было уникальным.
-- Прекратить обнаружение опций

Синтаксис командной строки

WinRAR допускает управление из командной строки. Общий синтаксис командной строки таков:

WinRAR <команда> -<ключ1> -<ключN> <архив> <файлы…> <@файл-список…> <путь для извлечения\>

команда Комбинация символов, определяющая действие, которое будет выполнять WinRAR.
ключ Ключи используются для определения специфических действий, степени сжатия, типа архива и пр.
архив Имя обрабатываемого архива.
файлы Имена обрабатываемых файлов.
файл-список Файлы-списки - это обычные текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария - символы //. Например, для архивирования файлов *.txt из папки c:\work\doc, файлов *.bmp из папки c:\work\image и всех файлов из папки c:\work\misc можно создать backup.lst, содержащий следующие строки:

c:\work\doc\*.txt//резервная копия текстов

c:\work\image\*.bmp//резервная копия рисунков

После этого для архивирования достаточно будет выполнить команду:

winrar a backup @backup.lst

В одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы).

путь для извлечения Используется только с командами e и x и указывает папку, в которую нужно извлекать файлы. Если эта папка не существует, то она будет создана.

Примечания

а) Если не указаны ни файлы , ни файл-список , то подразумевается шаблон *.* , т.е. WinRAR обработает все файлы.

б) Если не указано расширение архива, то WinRAR будет использовать формат архива по умолчанию, выбранный в профиле архивации по умолчанию, но если вы хотите указать тип архива явно, то это можно сделать добавлением к имени архива расширения RAR или ZIP.

в) Ключи, введённые в командной строке, имеют более высокий приоритет, чем соответствующие установки в диалоге конфигурации, т.е. используются параметры, заданные ключами.

г) Для команд C , E , S , T , RR , K и X в имени архива допускается использовать шаблоны, поэтому одной командой можно обработать сразу нескольких архивов. Более того, если вместе с этими командами указать ключ , то поиск архивов будет вестись и во всех вложенных папках.

д) Некоторые команды и ключи применимы только к архивам RAR, некоторые — к архивам RAR и ZIP, а некоторые — к архивам всех поддерживаемых форматов. Это зависит от возможностей, заложенных в формат архива.

е) Команды и ключи не зависят от регистра символов, поэтому вы можете набирать их как строчными, так и прописными буквами.

Давайте сразу начнём с простого примера. К примеру нам надо постоянно архивировать какую-то папку, или папки, или файлы и т.д. То-есть нам надо постоянно выполнять одну и туже операцию по архивации. Запускать архиватор, искать файлы, выбирать место и т.д. В общем, эта операция описана в этой статье -

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

Внимание, для этого нам понадобится архиватор WinRAR . Конечно есть и другие архиваторы и всё такое. Но я работаю именно с этим. Но ведь тут главное понять принцип создания архива при помощи командной строки , дальше будет проще. Какой архиватор захотите, тот и будете "пользовать", ну или "юзать" Только учтите, команды у разных архиваторов разные. Что прокатит с архиватором WinRAR, то не прокатит с другими архиваторами. Но если знаете принцип создания архива, то легко разберётесь и с другими архиваторами. Итак:

Тут всё до безобразия просто. Давайте опять всё разберём на простом примере. Вот мне к примеру надо постоянно архивировать сайты, ведь я их создаю и всё такое. И чтобы меньше париться и чтобы всегда можно было легко откатиться до более ранней версии, по мере работы над сайтами, я постоянно создаю архивы. Кстати, таким-же образом можно легко делать резервные копии системных файлов и т.д. Что довольно удобно. Ведь архиватор показывает и скрытые файлы, значит, если какие-то скрытые файлы поломаются, то в процессе восстановления, вам не придётся лишний раз ползать по настройкам компьютера. Если вдруг случится косяк, просто открываете архив и восстанавливаете нужный файл в нужное место с заменой и все дела. Извините отвлекся.

Итак, для начала надо создать ярлык . Просто тупо кликаем правой кнопкой мыши по рабочему столу. Далее в контекстном меню переходим по пункту Создать\Ярлык. Прописываем там строку и сохраняем:

F:\portable\zraznoe\WinRAR\WinRARPortable.exe a -ep1 -r -u -rr10% -y -ibck -t F:\Разное\site-разное\arhiv\история\site.rar F:\Разное\site-разное\site\*.*

Вам конечно придётся прописать другую строку. Эта строка чисто для примера, чтобы разобраться что и куда тут надо тыкать Итак:

F:\Разное\site-разное\arhiv\история\site.rar - здесь указывается место, где будет создан архив и его название, в данном случае я обозвал его site.rar

F:\Разное\site-разное\site\*.* - здесь указывается папка, которую надо архивировать, в данном случае это папка site А значки *.* обозначают, что будет архивироваться всё содержимое выбранной папки.

F:\portable\zraznoe\WinRAR\WinRARPortable.exe - а вот здесь вы указываете путь до вашего архиватора. Мне проще, я пользуюсь портативной версией, поэтому могу хранить её где угодно. А если у вас стандартная версия архиватора WinRAR , то придётся поискать его на диске "С". Примерно в этой папочке - C:\Program Files (x86). Ну или примерно где-то там Но лучше конечно пользовать портативные версии программ, они круче. Помните я их описывал? Не помните? Ну вы блин и даёте. Вот ведь эта статья -

a -ep1 -r -u -rr10% -y -ibck -t - а вот эта вот ерунда, это всякие команды и ключи . Вот сейчас мы их и разберём немного:

a - это команда для добавления файлов в архив. Дальше пойдут ключи:

Ep1 - исключаем из пути базовую папку.

R - обрабатываем вложенные папки.

U - во время архивации, старые папки и файлы в архиве, заменяем на новые.

Rr10% - информация для восстановления. В принципе 10% многовато, просто я перестраховщик. По мне, лучше пускай побольше места занимает, зато понадёжнее хранится. Ведь чем больше выделите места под эту информацию, тем надёжнее. Но как правило бьются архивы довольно редко. Лично у меня ещё ни разу в жизни ни один архив не поломался. Ой, а вот если у вас стоят антивирусы, оптимизаторы и прочая и прочая, то тут конечно риски возрастают.

Y - на все запросы ответ "Да". Это чтобы лишний раз не отвлекаться.

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

T - а это надо, чтобы файлы протестировались после упаковки.., мало-ли...

Вот и всё. Создаёте ярлык, прописываете там нужные команды и ключи. Теперь просто тыкаете по ярлыку и нужная папка помещается в архив и размещается в нужном месте и все дела.

А чтобы ярлык не попутать, можно значок ему подобрать. Просто заходите в "Свойства" ярлыка и тыкаете по кнопочке "Сменить значок". Затем выбираете тот, который приглянулся, жимкаете "Ок" и все дела. Теперь вы ваш ярлык для архивации ни с чем не попутаете Кстати, если хотите ярлык самого архиватора, то ярлыки программ как правило хранятся в папках с программами. Но можно просто тупо создать ярлык самого запускающего файла WinRARPortable.exe это если портативная программа, или WinRAR.exe если стационарная и уже там прописать нужные команды и ключи и тогда париться с поиском значка не придётся. В общем, разберётесь. Тут ведь главное направление знать, куда рыть, а там накопаем

Запуск архивации при помощи планировщика заданий.

Вот хорошо что про планировщик заданий вспомнили. Сейчас научимся, как запускать архивацию, при помощи планировщика заданий, в нужное нам время . Тут только есть один момент, точнее два. В планировщике можно сразу прописывать нужные команды , а можно эти команды прописывать в ярлыке и потом при помощи батника запускать его в планировщике. Первый вариант простой и без запарок. Второй с запарками. Но ради чего париться? Сейчас объясню.

Тут всё просто. В первом варианте, если у вас полетит система и вы восстановите её до внесения изменений в планировщик, то всё придётся вносить заново. Опять искать эти ключи, команды, в общем напрягать "моск" и всё такое. Если будет второй вариант, то вам придётся всего-лишь заново создать задачу в планировщике и указать нужный путь до батника. И кроме того, при использовании батника, вам надо будет вносить изменения только в ярлык архиватора, а планировщика заданий вы больше касаться не будете, что блин довольно удобно.

Итак первый вариант, как я и говорил, он без запарок. Запускаем планировщик заданий. Он вот тут - Панель управления\Система и безопасность\Администрирование. Далее создаём простую задачу, настраиваем там всё как вам надо. Если встретятся танкисты, то только в коментах чиркните, мигом изображу статью, как пользоваться планировщиком заданий и всё такое. Это я не стебусь, ведь именно благодаря танкистам и появляются новые статьи. А если они ещё и броники одевают, то тут уже вообще целые серии статей появляются. Так-что огромная им благодарность за их вопросы. Да и вообще.., если смотреть с чисто философской точки зрения, то все мы танкисты, просто у каждого свои "танковые" сферы Ой.., отвлёкся.., извиняюсь

Итак, настраиваем всё под себя, даём название задаче, устанавливаем время запуска и т.д. А вот на вкладочке "Действие" выбираем "Запуск программы". А на вкладочке "Запуск программы" в поле "Программа, или сценарий" вводим выше приведённые команды, которые мы прописывали для ярлыка. Вот собственно говоря и всё. Теперь архивация будет запускаться в нужное вам время и с нужными параметрами.

А теперь для любителей сложностей. Запуск при помощи батника. Открываем блокнот и прописываем там путь к вашему ярлыку:

start F:\"portable\zraznoe\WinRAR"\rez_kop.lnk

start F:\"portable\zraznoe\WinRAR"\ - это команда на запуск (start ) и путь к вашему ярлыку, у вас путь конечно другой будет.

rez_kop.lnk - а это название вашего ярлыка. Название может быть любое, не забудьте только обязательно ставить расширение .lnk это расширение ярлыка.

Далее даём сему документу любое название и дописываем расширение .bat Я к примеру долго не парился просто обозвал его rez_kop.bat и всё. А вот теперь открываем планировщик заданий, далее "Запуск программы", ну и прописываете там путь к вашему батнику и все дела.

Внимание. Если у вас в батнике, в пути будут русские буквы, названия папок, файлов на русском языке, то надо сохранить его в кодировке OEM 866. В простом блокноте такой фишки нет, но она есть в нотепаде (Notepad). Путь в нотепаде будет такой - Меню\Кодировки\Кодировки\Кириллица\OEM 866. Меняете кодировку и батник заработает.

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

А напоследок выложу таблицы команд и ключей для архиватора WinRAR. Итак, встречайте:

Таблицы команд и ключей для архиватора WinRAR

Список команд

A Добавить файлы в архив
C Добавить архивный комментарий
CH Изменить параметры архива
CV Преобразовать архивы
CW Записать в файл комментарий архива
D Удалить файлы из архива
E Извлечь файлы из архива, игнорируя пути
F Освежить имеющиеся файлы в архиве
I Найти строку в архивах
K Заблокировать архив
M Переместить файлы и папки в архив
R Восстановить повреждённый архив
RC Воссоздать недостающие тома
RN Переименовать файлы в архиве
RR[N]
RV[N]
S[имя] Преобразовать архив в самораспаковывающийся
S- Удалить SFX-модуль
T Протестировать файлы в архиве
U Обновить файлы в архиве
X Извлечь файлы из архива с полными путями

Список ключей

-- Прервать дальнейший поиск ключей в командной строке
-@[+] Запретить [разрешить] списки файлов
-ac Снять атрибут "Архивный" после архивации или извлечения
-ad Добавить к пути назначения имя архива
-af<тип> Указать формат архива
-ag[формат] Добавить к имени архива текущую дату и время
-ai Игнорировать файловые атрибуты
-ao Добавить файлы с установленным атрибутом "Архивный"
-ap<путь> Установить путь внутри архива
-as Синхронизировать содержимое архива
-av Добавить электронную подпись
-av- Запретить добавление/проверку электронной подписи
-cfg- Игнорировать профиль по умолчанию и переменную окружения
-cl Преобразовать имена файлов в нижний регистр
-cp<имя> Выбрать профиль упаковки
-cu Преобразовать имена файлов в верхний регистр
-df Удалить файлы после архивации
-dh Открывать совместно используемые файлы
-dr Удалить файлы в Корзину
-ds Не сортировать файлы при архивации
-dw Уничтожить (затереть) файлы после архивации
-ed Не добавлять пустые папки
-en Не добавлять блок "Конец архива"
-ep Исключить пути из имён
-ep1 Исключить из пути базовую папку
-ep2 Сохранять полные пути файлов
-ep3 Сохранять полные пути, включая букву диска
-e[+]<атр> Задать исключение или включение файлов из/в обработку по маске атрибутов
-f Освежить имеющиеся файлы
-hp[пароль] Шифровать и данные, и заголовки файлов
-iadm Запрашивать административный доступ для SFX-архива
-ibck Запустить WinRAR как фоновый процесс в системном лотке
-ieml[.][адрес] Отправить архив по электронной почте
-iicon<имя> Указать значок для SFX-модуля
-iimg<имя> Указать логотип для SFX-модуля
-ilog[имя] Записывать протокол ошибок в файл
-inul Не выводить сообщения об ошибках
-ioff Выключить компьютер
-k Заблокировать архив
-kb Сохранять на диске файлы, извлечённые с ошибками
-log[формат][=имя] Записывать имена в файл-протокол
-m Установить метод сжатия
-mc<параметры> Указать дополнительные параметры сжатия
-md Установить размер словаря
-ms[список] Указать типы файлов для архивирования без сжатия
-mt<потоки> Установить число потоков
-n<файл> Включить в обработку только указанный файл
-n@<файл-список> Включить в обработку только файлы, указанные в файле-списке
-oc Установить NTFS-атрибут "Сжатый"
-or Переименовывать файлы автоматически
-os Сохранить потоки NTFS
-ow Обработать информацию о правах доступа к файлам
-o[+,-] Установить режим перезаписи
-p[пароль] Установить пароль
-r Обрабатывать вложенные папки
-r- Запретить рекурсию (обработку вложенных папок)
-r0 Обрабатывать вложенные папки только по шаблону
-ri Установить приоритет и время простоя
-rr[N] Добавить информацию для восстановления
-rv[N] Создать тома для восстановления
-s Создать непрерывный архив
-s Создать непрерывные группы, используя счётчик файлов
-sc<набор символов>[объекты] Указать набор символов (и объекты)
-se Создать непрерывные группы, используя расширения файлов
-sfx[имя] Создать самораспаковывающийся архив
-sl<размер> Обрабатывать файлы размером меньше указанного
-sm<размер> Обрабатывать файлы размером больше указанного
-sv Создать независимые непрерывные тома
-sv- Создать зависимые непрерывные тома
-s- Запретить создание непрерывных архивов
-t Протестировать файлы после архивирования
-ta<дата> Обрабатывать файлы, изменённые после указанной даты
-tb<дата> Обрабатывать файлы, изменённые до указанной даты
-tk Сохранять исходное время архива
-tl Установить время архива по самому новому файлу
-tn<время> Обрабатывать файлы не старее, чем указанный период времени
-to<время> Обрабатывать файлы более старые, чем указанный период времени
-ts Сохранить/восстановить время файлов (модификации, создания, последнего доступа)
-u Обновить файлы
-v Создать многотомный архив
-vd Очищать сменный диск перед архивацией на него
-ver[n] Управление версиями файлов
-vn Использовать старую схему именования томов
-vp Делать паузу перед каждым томом
-w<путь> Задать папку для временных файлов
-x<файл> Не обрабатывать указанный файл
-x@<файл-список> Не обрабатывать файлы, указанные в файле-списке
-y Подразумевать ответ "Да" на все запросы
-z<файл> Прочитать комментарий архива из файла

Коды возврата WinRAR

В случае успешного окончания архивации WinRAR завершает работу с нулевым (0) кодом возврата. Если-же код возврата отличается от нулевого, значит пошёл косяк. И вот по коду вы сможете понять что это за косяк и как с ним бороться.

0 Операция успешно завершена.
1 Предупреждение. Произошли некритические ошибки.
2 Произошла критическая ошибка.
3 Неверная контрольная сумма CRC32. Данные повреждены.
4 Предпринята попытка изменить заблокированный архив.
5 Произошла ошибка записи на диск.
6 Произошла ошибка открытия файла.
7 Ошибка при указании параметра в командной строке.
8 Недостаточно памяти для выполнения операции.
9 Ошибка при создании файла.
10 Нет файлов, удовлетворяющих указанной маске, и параметров.
255 Операция была прервана пользователем.

Опции команды rar.exe

http://www.forum.mista.ru/topic.php?id=227495

WinRAR допускает управление из командной строки. Общий синтаксис командной строки таков: WinRAR <команда> –<ключ1> –<ключN> <архив> <файлы…> <@файл-список…> <путь для извлечения\> команда Комбинация символов, указывающая на действие, которое будет выполнять WinRAR. ключ Ключи используются для определения специфических действий, степени сжатия, типа архива и пр. архив Имя обрабатываемого архива. файлы Имена обрабатываемых файлов. файл-список Файлы-списки – это простые текстовые файлы, содержащие имена файлов для обработки. Каждое имя файла должно быть указано на отдельной строке и начинаться с первой позиции строки. В файл-список допускается помещать комментарии, признак начала комментария – символы //. Например, для архивирования файлов *.txt из папки c:\work\doc, файлов *.bmp из папки c:\work\image и всех файлов из папки c:\work\misc можно создать backup.lst, содержащий следующие строки:c:\work\doc\*.txt //резервная копия текстовc:\work\image\*.bmp //резервная копия рисунковc:\work\miscПосле этого для архивирования достаточно будет выполнить команду:rar a backup @backup.lstВ одной командной строке разрешается указывать как обычные имена или группы файлов для обработки, так и файлы-списки. Если не указаны ни файлы, ни файлы-списки, то подразумевается шаблон *.* (т.е. WinRAR обработает все файлы). путь для извлечения Используется только с командами e и x и указывает папку, в которую нужно извлекать файлы. Если эта папка не существует, то она будет создана. Замечания а) Если не указаны ни файлы, ни файл-список, то подразумевается шаблон *.*, и WinRAR обработает все файлы. б) Если не указано расширение архива, то WinRAR будет использовать формат архива по умолчанию, выбранный в профиле архивации по умолчанию, но если вы хотите указать тип архива явно, то это можно сделать добавлением к имени архива расширения RAR или ZIP. в) Ключи, введенные в командной строке, имеют более высокий приоритет, чем соответствующие установки в диалоге конфигурации, т.е. используются параметры, заданные ключами. г) Для команд c, e, s, t, rr, k и x в имени архива допускается использовать шаблоны, поэтому одной командой можно обработать сразу нескольких архивов. Более того, если вместе с этими командами указать ключ -r, то поиск архивов будет вестись и во всех вложенных папках. д) Некоторые команды и ключи применимы только к архивам RAR, некоторые - к архивам RAR и ZIP, а некоторые - к архивам всех поддерживаемых форматов. Это зависит от возможностей, заложенных в формат архива. е) Команды и ключи не зависят от регистра символов, поэтому вы можете набирать их как строчными, так и прописными буквами.

Опции:

Ac Снять атрибут "архивный" после архивации или извлечения -ad Добавить к пути назначения имя архива -af<тип> Указать формат архива -ag[формат] Добавить к имени архива текущую дату и время -ao Добавить файлы с установленным атрибутом "архивный" -ap Установить путь внутри архива -as Синхронизировать содержимое архива -av Добавить электронную подпись -av- Запретить добавление/проверку электронной подписи -cl Преобразовать имена файлов в нижний регистр -cu Преобразовать имена файлов в верхний регистр -df Удалить файлы после архивации -dh Открывать совместно используемые файлы -ds Не сортировать файлы при архивации -ed Не добавлять пустые папки -en Не добавлять блок "конец архива" -ep Исключить пути из имен -ep1 Исключить из пути базовую папку -ep2 Сохранять полные пути файлов -f Освежить файлы -hp[пароль] Шифровать и данные, и заголовки файлов -ibck Запустить WinRAR как фоновый процесс в системном лотке -ieml Отправить архив по электронной почте -ilog[имя] Записывать протокол ошибок в файл -inul Не выводить сообщений об ошибках -k Заблокировать архив -kb Сохранять на диске файлы, извлечённые с ошибками -m Установить метод сжатия -mc<параметры> Указать дополнительные параметры сжатия -md Установить размер словаря -ms Указать типы файлов для архивирования без сжатия -os Сохранить потоки NTFS -ow Обработать информацию о правах доступа к файлам -o+ Перезаписывать существующие файлы -o- Не перезаписывать существующие файлы -p[пароль] Установить пароль -r Рекурсивно с вложенными папками -r0 Рекурсивно с вложенными папками по шаблону -rr[N] Добавить информацию для восстановления -rv[N] Создать тома для восстановления -s Создать непрерывный архив -s Создать непрерывные группы, используя счетчик файлов -se Создать непрерывные группы, используя расширения файлов -sfx[имя] Создать самораспаковывающийся архив -sv Создать независимые непрерывные тома -sv- Создать зависимые непрерывные тома -s- Запретить создание непрерывных архивов -t Протестировать файлы после архивирования -ta<дата> Обрабатывать файлы, изменённые после указанной даты -tb<дата> Обрабатывать файлы, изменённые до указанной даты -tk Сохранять исходное время архива -tl Установить время архива по самому новому файлу -tn<время> Обрабатывать файлы не старее, чем указанный период времени -to<время> Обрабатывать файлы более старые, чем указанный период времени -u Обновить файлы -v Создать многотомный архив -vd Очищать сменный диск перед архивацией на него -ver Контроль версий файлов -vn Использовать старую схему именования томов -vp Делать паузу перед каждым томом -x<файл > Не обрабатывать указанный файл -x@<файл-список> Не обрабатывать файлы, указанные в файле-списке -y Отвечать "Да" на все запросы-z<файл> Прочитать комментарий архива из файла -- Прервать дальнейший поиск ключей в командной строке

Команды:

A Добавить файлы в архивC Добавить архивный комментарий D Удалить файлы из архива EИзвлечь файлы из архива, игнорируя путиF Освежить файлы в архиве K Заблокировать архив M Переместить файлы и папки в архив R Восстановить поврежденный архив RC Воссоздать недостающие тома RR[N] Добавить информацию для восстановления RV[N] Создать тома для восстановления S[имя] Преобразовать архив в самораспаковывающийся S- Удалить SFX-модуль T Протестировать файлы в архиве U Обновить файлы в архиве X Извлечь файлы из архива с полными путями

L: просмотр содержимого архива.

Наши примеры:

Добавить в архив с именем arh.rar все файлы, имеющие расширение.dbf и.cdx.

1. Создаем в каталоге BAZA подкаталогArhiv.

2. Устанавливаем путь к подкаталогуArhiv:

SET DEFAULT TO "D:\BAZA\Arhiv"

RUN WinRAR\RAR.exe a arh.rar D:\BAZA\*.dbf

RUN WinRAR\RAR.exe a arh.rar D:\BAZA\*.cdx

Извлечь файлы из архива, игнорируя пути (все файлы, имеющие расширение.dbf и.cdx):

1. Создаем в каталоге BAZA подкаталогRazarh.

2. Устанавливаем путь к подкаталогуRazarh:

SET DEFAULT TO "D:\BAZA\Razarh"

3. Помещаем программу WinRAR в каталогArhiv.

4. Вводим команды командной строки МS-DОS:

RUN WinRAR\unrar.exe e -y arh.rar *.dbf "D:\BAZA\razarh"

RUN WinRAR\unrar.exe e -y arh.rar *.cdx "D:\BAZA\razarh"

  • Вступление
  • Как будет работать бэкап
  • Скрипты
  • Командная строка WinRAR
  • Командные файлы
  • Планировщик
  • Заключение
  • Ссылки

Вступление

Бэкапы надо делать всегда. Особенно для серверов. Это аксиома. Существуют разные способы бэкапа - просто копирование, архивация, множество специализированного софта (в том числе, например, и штатный бэкап от Microsoft), работающего с дисками, лентами, МО и т.д. Но что делать, если сторонний софт устанавливать нельзя, а возможностей штатного не хватает? Например, хочется иметь бэкап некоторых ценных папок сервера, в автоматическом режиме, за, скажем, последнюю неделю? Писать свою софтину? Можно. Но не охота. Из пушки по воробьям. Охота обойтись просто скриптом. И в этом нам поможет хороший архиватор WinRAR , встроенный планировщик Windows и книга Джесси Торреса "Скрипты для администратора Windows ".

Как будет работать бэкап

Итак, мне требуется:

  • Хранить бэкап за каждый день в виде архивного файла
  • Каждый файл должен создаваться с уникальным именем (в идеале включать дату создания в имя файла)
  • Процесс создания бэкапа должен проходить в автоматическом режиме
  • Файлы старше 1 недели должны автоматически удаляться

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

Скрипты

Основу скриптов составляют процедуры из книги Джесси Торреса "Скрипты для администратора Windows " (а конкретно из главы 3 "Обслуживание файлов "). Они были дополнены мной для реализации моих задач.
Вот какие функции нам понадобятся (привожу код целиком):

" ---------- " Начало основной секции. Отсюда начнется выполнение при запуске скрипта. Set FSO = CreateObject("Scripting.FileSystemObject") " директория, где будут храниться бэкапы. Вы должны вписать свою директорию " вместо "X:\DailyBackup" sDir = "X:\DailyBackup" Set objDir = GetFolder(sDir) DeleteOlderFiles(objDir) " ---------- Секция функций " Получить файл Function GetFile(sFile) On Error Resume Next Set FSO = CreateObject("Scripting.FileSystemObject") Set GetFile = FSO.GetFile(sFile) if err.number 0 then WScript.Echo "Error Opening file " & sFile & VBlf & "["&Err.Description&"]" Wscript.Quit Err.number end if End Function " Получить папку Function GetFolder (sFolder) On Error Resume Next Set GetFolder = FSO.GetFolder(sFolder) if err.number 0 then WScript.Echo "Error Opening folder " & sFolder & VBlf & "["&Err.Description&"]" Wscript.Quit Err.number end if End Function " удалить один файл (имя файла передается в sFile) Sub DeleteFile(sFile) On Error Resume Next FSO.DeleteFile sFile, True if err.number 0 then WScript.Echo "Error Deleteing file " & sFile & VBlf & "["&Err.Description&"]" Wscript.Quit Err.number end if End Sub " Удалить файлы старше 7 дней Sub DeleteOlderFiles(objDir) " просматриваем все файлы в директории for each efile in objDir.Files " используем DateLastModified, а не DateCreated, поскольку " DateCreated не всегда возвращает правильную дату FileDate = efile.DateLastModified Age = DateDiff("d",Now,FileDate) " в данном случае возраст файла не больше семи дней If Abs(Age)>7 Then DeleteFile(efile) End If next End Sub

Этот код помещаем в файл remove_old_backups.vbs .

Командная строка WinRAR

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

Я использую следующую командную строку для архивирования (прописана в файле make_daily.bat):

"c:\program files\winrar\winrar.exe" a -s -r -rr10p -dh -ed -m3 -ilogC:\DailyBackupScript\dailybackup.log -ag+YYYYMMDD X:\DailyBackup\backup

Разберем ее по составляющим:

  • "c:\program files\winrar\winrar.exe" - путь к WinRAR-у
  • a - команда на добавление файлов
  • -s - режим сжатия "solid "
  • -r - с поддиректориями
  • -rr10p - на всякий случай добавляем информацию для восстановления (-rr), в количестве 10% (10p)
  • -dh - открывать шареные фалы. Полезно, если кто-нибудь засиделся до 12 ночи, и редактирует файл, который должен уйти в бэкап
  • -ed - не добавлять пустые директории
  • -m3 - степень сжатия 3
  • -ilogC:\DailyBackupScript\dailybackup.log - вести лог (-ilog) и записывать его в "C:\DailyBackupScript\dailybackup.log"
  • -ag+YYYYMMDD X:\DailyBackup\backup - формировать имя файла, прибавляя в начало текущий год, месяц и число. Имя файла будет иметь примерно такой вид: 20060927backup.rar
  • X:\DailyBackup\backup - папка, куда писать бэкапы и имя бэкапа (к которому в начало дописываются год, месяц, число)

Командные файлы

Вся работа по созданию бэкапа строится на основе командных файлов (.bat-файлов). У меня их два:

  • make_daily.bat - содержит команды для создания архивного файла или файлов.
  • backup_task.bat - выполняет следующие действия:
    • вызывает интерпретатор скриптов cscript и передают ему на выполнение скрипт, удаляющий старые файлы.
    • вызывает make_daily.bat и передает ему в качестве параметра либо папку, которую надо архивировать, либо файл-список (в котором несколько папок на архивацию).
  • В свою очередь, backup_task.bat вызывается Планировщиком Windows в назначенное время

Содержимое файла make_daily.bat (в одну строку):

@"c:\program files\winrar\winrar.exe" a -s -r -rr10p -dh -ed -m3 -ilogC:\DailyBackupScript\dailybackup.log -ag+YYYYMMDD X:\DailyBackup\backup %1

Содержимое файла backup_task.bat :

@cscript remove_old_backups.vbs call make_daily.bat @backup.lst

Для работы также необходимо создать файл backup.lst (обычный текстовый файл). Он должен содержать список директорий, которые включаются в бэкап. Каждая директория должна располагаться на отдельной строчке, например, так:

C:\Projects c:\VeryImportantProjects c:\Folder Name With Spaces\SubFolder

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

Планировщик

Планировщик можно вызвать через меню Start|Programs|Accessories|System Tools|Scheduled Tasks , или через Control Panel . Откроется папка Scheduled Tasks , в которую и надо добавить новую задачу. Это можно сделать следующим образом (я привожу только основные шаги).

Дважды щелкаем Add Scheduled Task, чтобы добавить новую задачу

Выберем наш bat-файл:

Зададим имя и периодичность задачи

Зададим время запуска

Зададим учетную запись и пароль, от имени которой будет выполняться задача. Обязательно!

Задача добавлена

Редактировать свойства задачи можно, щелкнув правой кнопкой мыши на иконке задачи в папке Sheduled Tasks и выбрав пункт меню Properties .

Заключение

Вот мы и создали простейший, но мощный:) "бэкапер" (или бэкапщик? как правильно?) из подручных средств. Его можно расширять и настраивать, менять архиваторы, прикручивать всякие проверки и т.д. И все это без использования сторонних продуктов и почти без программирования.
Надеюсь, мой опыт окажется для вас полезным.

Статьи по теме: