Держим руку на пульсе Time Machine

TimeMachineМало кто из пользователей Mac OS X не слышал о программе резервного копирования Time Machine. Простота настройки и удобство в использовании, а также тот факт, что она доступна каждому пользователю OS X, делают ее практически незаменимой. Однако, иногда её функционала может оказаться недостаточно. Например, если вы хотите всегда быть в курсе состояния резервной копии своего компьютера, даже находясь вдали от него. В этом случае очень бы пригодилась функция уведомления пользователя по Email о текущем состоянии и актуальности резервной копии, которая, увы, доступна только в OS X Server.

Если вы тоже считаете, что расширять функционал своей OS X до серверного только ради получения уведомлений по Email, как минимум, нерационально, предлагаем два варианта решения этой задачи.

TM Error Logger

Творение компании Carnation Software предназначено специально для тех, кто хочет держать руку на пульсе Time Machine. Загрузить программу можно с официального сайта компании (распространяется она бесплатно). Интерфейс ее прост и, на наш взгляд, интуитивно понятен.

Снимок экрана 2015-04-22 в 10.19.48

Большую часть окна занимает область, в которой отображаются логи Time Machine. При запуске программы в этой области по умолчанию отображаются записи о последнем резервном копировании. Нажатием на кнопку «Previous Log» можно листать и просматривать предыдущие записи, а кнопка «Current Log» вновь возвращает нас к последним.

Включить и настроить интересующую нас функцию уведомлений по электронной почте можно, нажав на клавишу «Email Notification».

Снимок экрана 2015-04-22 в 10.28.32

В открывшемся окне достаточно указать свой адрес электронной почты (их можно указать два) и поставить галочку «Send email when backup fails». Таким образом, если вдруг в ходе резервного копирования возникнет ошибка, TM Error Logger отправит на указанный вами email сообщение, содержащее логи с этой ошибкой.

Стоит отметить, что для работы этой программы необходимо, чтобы она запускалась с учётной записи с правами администратора. В противном случае она не сможет получить доступ к логам Time Machine и, соответственно, будет бесполезна для тех, кто по той или иной причине (например, в целях безопасности) использует в основном учётную запись без прав администратора. На этот случай у нас припасён второй вариант.

Создание скрипта для регулярного мониторинга состояния резервной копии Time Machine

Для автоматизации пользовательских процессов в системе OS X компания Apple разработала специальный скриптовый язык AppleScript. Создан он был скорее для пользователя, нежели программиста, поэтому он довольно прост в использовании, а сами скрипты очень напоминают обычный текст на английском языке. Именно им мы и собираемся воспользоваться.

Для начала нам потребуется редактор скриптов. Он по умолчанию включен в состав OS X, и запустить его можно из папки «Утилиты» в Finder. Окно редактора скриптов разделено на две части. Верхняя предназначена для ввода кода, а нижняя – для анализа (здесь будут отображаться все выполняемые действия, а также полученные результаты). В нижней части также может отображаться описание скрипта, если вы решите его добавить.

Снимок экрана 2015-04-24 в 10.27.36

Сначала напишем небольшой скрипт, который бы проверял дату последней резервной копии TimeMachine и выводил её на экран.

Чтобы проверить работу этого скрипта, нажмите на треугольник левом верхнем углу окна редактора скриптов.  В результате скрипт должен выполниться и на экране появится сообщение.

Теперь добавим нашему скрипту функцию уведомления по Email.

В принципе этого достаточно. Теперь наш скрипт узнает дату создания последней резервной копии Time Machine и сообщает ее вам по электронной почте. Однако, если вы хотите получать уведомления только в тех случаях, когда что-то идет не так, а не получать результаты каждой проверки, стоит немного доработать скрипт, приблизив его функционал к упомянутому выше TM Error Logger.

Нажимаем Файл – Сохранить и выбираем удобную нам папку для сохранения. Желательно сохранить скрипт таким образом, чтобы он не слишком часто попадался на глаза и не было риска случайно его удалить. По умолчанию наше творение сохранится как скрипт с расширением .scpt. В нашем случае менять ничего не нужно.

Теперь, когда скрипт сохранён, необходимо научить систему автоматически его запускать. За запуск процессов в системе отвечает launchd. Это первый процесс, который вызывает ядро при загрузке системы, и за запуск всех остальных процессов отвечает именно он. При загрузке системы luanchd проверят папки LaunchAgents и LaunchDaemons на предмет инструкций относительно процессов, которые необходимо запустить. Эти инструкции представлены в виде файлов с расширением .plist. Если файл .plist находится в папке LaunchAgents, то процесс будет запущен при входе в учетную запись пользователя, если же поместить файл в папку LaunchDaemons, то процесс будет запущен вне зависимости от того, был осуществлен вход в учетную запись пользователя или нет. Для нашего скрипта больше подходит первый вариант.

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

Первым делом в ниспадающем меню слева выберем пункт «User Agents» и нажмем плюсик в нижней части левого столбца, чтобы создать новую запись. Новой записи стоит дать имя, которое бы описывало, что это за запись и для чего она создана, например, «tm.check.date». Название записи стоит продублировать в графе «Label».

CreatingLaunchAgent1

Затем удаляем путь к обработчику по умолчанию в разделе «Program to run» и добавляем нужный нам:

/usr/bin/osascript

Ставим пробел после пути к обработчику, находим файл нашего скрипта в Finder и перетаскиваем его в окно Launch Control в раздел «Program to run», тем самым указывая путь к нему. В результате запись должна выглядеть примерно как на картинке:

CreatingLaunchAgent2

По умолчанию, к каждой новой записи уже добавлено условие запуска «Run at load», указывающее на то, что процесс будет запускаться при загрузке системы (или при входе в учетную запись). Намного удобнее настроить расписание для запуска процесса, указав в какие дни недели и какое время должна проводится проверка. Для удаления «Run at load» нажмите на крестик в правой части отведенной для него области. Чтобы добавить условие «Start calendar interval» достаточно перетащить его в рабочую область из списка справа.

В настройке «Start calendar interval» есть шесть параметров: Year, Month, Day, Weekday, Hour, Minute. По умолчанию для всех этих параметров стоит значение «Any». Нажатием на кнопку «Add» можно добавить новый ряд значений для более гибкой настройки. Например, если мы хотим, чтобы скрипт запускался по вторникам и четвергам в 17:00, необходимо использовать две строки значений. В первой строке в столбцах Weeekday, Hour и Minute нужно поставить соответствующие значения Tuesday, 17 и 00. Во второй строке в те же столбцы нужно поставить Thursday, 17 и 00.

Снимок экрана 2015-05-28 в 10.54.26

Также, если столь гибкая настройка параметров запуска не требуется, вместо «Start Calendar Interval» можно использовать «Start Interval». В «Start Interval» нужно указать всего один параметр: интервал времени между двумя запусками скрипта. Значение указывается в секундах. Соответственно, если мы, например, хотим запускать скрипт каждые 48 часов, то в «Start Interval» нужно ввести значение 172800.

Снимок экрана 2015-05-28 в 11.02.58

Для того чтобы сохранить наш файл и загрузить его в систему нажимаем кнопку «Load». В открывшемся окне снова нажимаем «Load», затем «Save and Load».

Готово! Теперь система знает о вашем скрипте и будет автоматически запускать его, руководствуясь вашими инструкциями. А вы можете больше не беспокоиться за резервную копию своего компьютера, ведь впредь вы всегда будете в курсе событий, если что-то пойдет не так.

Напоследок хотелось бы продемонстрировать еще один вариант скрипта, который подойдет тем, кто не пользуется почтовым клиентом от Apple. Этот скрипт пользуется встроенным в систему функционалом для отправки email сообщений без использования пользовательских почтовых клиентов. Ему также не требуются учетные данные вашего почтового ящика, что несомненно является плюсом.

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

Об авторе Дмитрий Архипов

Специалист технической поддержки пользователей.
Метки: , , , , , . Закладка Постоянная ссылка.