THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

У ряда пользователей OS X возникают сложности при работе с RAR архивами. Кто-то их решает путем установки бесплатных утилит из AppStore, но есть и более правильное решение.

Вообще эта заметка для тех, кто не хочет грузить свой Mac лишним ПО и умеет пользоваться терминалом.

Автор архиватора WinRar на самом деле не обделил вниманием и другие OS. Версии для Linux, FreeBSD и Mac OS X доступны для скачивания на официальном сайте , просто у них нет графического интерфейса.

Скачиваем архив для OS X и распаковываем в любую удобную папку.

Установка

Для того, чтобы пользоваться командами для архивации rar и распаковки unrar , их нужно установить. Делается это следующим образом:

Команда переносит приложение rar в папку /bin системы: sudo install -c -o $USER rar /bin Команда переносит приложение unrar в папку /bin системы: sudo install -c -o $USER unrar /bin

или для El Capitan и выше:

Команда переносит приложение rar в папку /usr/local/bin системы: sudo install -c -o $USER rar /usr/local/bin Команда переносит приложение unrar в папку /usr/local/bin системы: sudo install -c -o $USER unrar /usr/local/bin

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

Проверить все ли хорошо можно просто выполнив в терминале rar или unrar . В результате Вы должны увидеть номер версии и другую информацию!

И все же, ниже мы собрали несколько типовых примеров использования архиватора через командную строку на OS X.

Примеры использования

Создание архива каталога:

Rar a archive.rar folder/

Создание архива из нескольких файлов:

Rar a archive.rar file.jpg file.doc file.mov

Создание архива директории folder с паролем qwerty:

Rar a -pqwerty archive.rar folder/

Создание архива с паролем, шифрующим и список файлов:

Rar a -hpqwert archive.rar folder/

Создание архива без алгоритмов сжатия:

Rar a -m0 archive.rar folder/

Создание архива с максимальным сжатием:

Rar a -m5 archive.rar folder/

Распаковка архива в текущую директорию:

Unrar e archive.rar

Распаковка архива в отдельную директорию:

Unrar x archive.rar

На этом все. Спасибо за то, что прочитали до конца!

Обновлено 26 февраля, установка на OS X El Capitan и выше. Спасибо за комментарии e33 и neprokin!

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

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
  • Командные файлы
  • Планировщик
  • Заключение
  • Ссылки

Вступление

Бэкапы надо делать всегда. Особенно для серверов. Это аксиома. Существуют разные способы бэкапа - просто копирование, архивация, множество специализированного софта (в том числе, например, и штатный бэкап от 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 .

Заключение

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

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама