| Обертка для rsync |
|
Как вы уже, наверное, знаете, rsync - это инструмент командной строки, первоначально разрабатывавшийся Эндрю Триджеллом (Andrew Tridgell) и Полом Маккерра (Paul Mackerra). В конце 2007 года стала доступна для тестирования версия 3, включающая еще более широкий перечень параметров, чем оригинальная версия. За эти годы для нас rsync превратился в основной инструмент перемещения данных из пункта А в пункт Б. Объем страницы справочного руководства и количество возможных параметров просто поражают, поэтому мы рекомендуем познакомиться с ними поближе. Без преувеличения утилиту rsync можно считать уникальным, наиболее полезным инструментом командной строки, из всех, что когда-либо создавались для системных администраторов. К этому стоит добавить, что язык Python предоставляет несколько способов управления поведением rsync. Одна из проблем, с которой мы столкнулись, состояла в том, чтобы обеспечить копирование данных в запланированное время. Мы не раз попадали в ситуации, когда было необходимо синхронизировать терабайты данных между двумя файловыми серверами настолько быстро, насколько это возможно, но мы совсем не хотели контролировать этот процесс вручную. Это как раз та ситуация, в которой Python действительно может сыграть значимую роль. С помощью языка Python можно придать утилите rsync немного искусственного интеллекта и настроить ее под свои нужды. В такой ситуации сценарий на языке Python используется как связующий программный код, который заставляет утилиты UNIX выполнять такие вещи, для которых они никогда не предназначались, и благодаря этому вы получаете возможность создавать очень гибкие и легко настраиваемые инструменты. Вы здесь действительно ограничены только вашим воображением. В примере 6.13. приводится очень простой сценарий, который представляет собой обертку для rsync. Пример 6.13. Простая обертка для rsync
Этот пример жестко определяет синхронизацию двух каталогов и выводит сообщение об ошибке, если команда не сработала. Однако мы могли бы реализовать нечто более интересное и решить проблему, с которой часто приходится сталкиваться. Нас часто вызывали, чтобы синхронизировать два очень больших каталога, но мы при этом не собирались следить за синхронизацией данных всю ночь. Но, если вы не контролируете процесс синхронизации, вы можете обнаружить, что процесс был прерван на полпути, при этом данные и целая ночь времени были потрачены впустую, а сам процесс синхронизации придется опять запускать на следующий день. Используя Python, вы можете создать более агрессивную, высокомотивированную команду rsync. Что могла бы делать высокомотивированная команда rsync? Она могла бы делать то же самое, что и вы, если бы контролировали процесс синхронизации двух каталогов: она могла бы пытаться продолжать синхронизацию до самого конца и затем посылала бы сообщение по электронной почте с описанием того, что было сделано. В примере 6.14 приводится немного более продвинутый сценарий-обертка для rsync. Пример 6,14. Команда rsync, которая не завершается, пока не выполнит задание
Этот сценарий максимально упрощен и содержит жестко определенные данные, но это - пример полезного инструмента, который можно создать для автоматизации чего-то, что вам обычно приходится контролировать вручную. В этот сценарий можно добавить такие особенности, как возможность устанавливать интервал между попытками и ограничивать количество попыток, проверять объем свободного дискового пространства на машине, с которой устанавливается соединение, и так далее.
Related Articles
Set as favorite
Bookmark
Email This
Hits: 305 Комментарии (0)RSS feed CommentsНаписать комментарий |