Unison

Об автоматической синхронизации и паролях

Есть разные подходы организации автоматической
синхронизации. Предпочтительный подход может зависеть от нескольких факторов.

Если работа происходит за несколькими компьютерами/устройствами параллельно,
то необходимо выполнять синхронизацию регулярно. Тут есть несколько вариантов
решения:

  • можно добавить задачу синхронизации в cron;
  • можно запустить Unison единожды, но указать параметр , где N —
    период в секундах, с которым синхронизация должна повторяться;
  • получать оповещения об изменениях в файловой системе от операционной системы
    и запускать синхронизацию данных файлов. Для этого в Unison, начиная с
    версии 2.27, для опции можно указать файл, через который Unison’у
    можно слать имена изменившихся файлов;
  • в svn проекта Unison есть готовое средство автоматического мониторинга и
    синхронизации файлов. Данная возможность доступна при указании параметра
    . Мониторинг файлов реализуется с помощью python-скрипта
    fsmonitor.py, который требует pyinotify в Linux’е. На момент написания этой
    заметки данная функция считается экспериментальной.

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

Данную проблему можно решить, установив на каждой
машине ntpd.

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

О паролях

Другая возможная проблема с автоматической синхронизацией — это управление
паролями. Если выполнять синхронизацию вручную, то пароль пользователя или
пароль к закрытому ключу должен запрашиваться при каждом выполнении
программы. При использовании ssh-agent или gpg-agent пароль может
запрашиваться один раз на сессию. А если использовать gnome-keyring и
добавить пароль в связку login, то расшифровка будет происходить вместе с
входом в систему, и таким образом вводить пароль вообще не
понадобится. Поэтому я предпочитаю последний вариант.

ssh «знает», что пароль необходимо запрашивать у агента, а не у пользователя,
по установленным переменным окружения, таким как SSH_AUTH_SOCK и
SSH_AGENT_PID. Таким образом, агент должен быть запущен до ssh и быть его
предком. Поэтому при использовании gnome-keyring в качестве ssh-агента, скрипт
синхронизации лучше добавить в систему запуска GNOME: вручную посредством
создания desktop-файла в или помощью графической утилиты
gnome-session-proprties.

Запуск синхронизации в конце сессии

Запускать синхронизацию в конце сессии необходимо до того, как агент завершит
работу. Сначала я предпринял попытку повесить выполнение скрипта на окончание
сессии GNOME с использованием , но безрезультатно. Оказалось,
что по сигналу EndSession gnome-keyring сам выходит… В конце-концов, я
создал скрипт, выполняющий последовательно закрытие всех окон, синхронизацию и
выход из системы такого плана:

#!/bin/bash
close-all-windows --wait firefox emacs
unisync-zenity
(( "$?" != 1 )) && gnome-session-quit --power-off

Перед тем, как запустить синхронизацию, желательно закрыть приложения, чьи
профили синхронизируются. Для этого я создал скрипт close-all-windows. При
запуске без параметров, он посылает сигнал закрытия всем окнам и выходит. При
запуске , скрипт выйдет только тогда, когда все окна
будут закрыты. С такими параметрами
скрипт выйдет тогда, когда все окна с классами firefox и emacs закроются.

В unisync-zenity выполняется синхронизация с визуальной индикацией прогресса и
окончательных статусов синхронизации профилей. Если пользователь нажимает OK или
проходит некоторое время, появляется диалог выключения системы. При нажатии Esc,
диалог закрывается, но система не выключается.

Здесь предполагается, что в ~/.unisyncrc установлен параметр
summary=/tmp/unisync_summary. Таким образом, в файл unisync_summary будет
записана краткая сводка результатов синхронизации каждого профиля: успешная
синхронизация, с ошибками, с пропущенными файлами или с критической ошибкой. Эта
информация и отобразится в диалоге, созданном unisync-zenity.

Проблема с rsync

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

Позвольте мне привести один пример из моей собственной практики. У меня дома есть настольный компьютер, но я также использую ноутбук. Я очень много работаю вне дома, так что мой ноутбук путешествует со мной постоянно, а когда я дома, я иногда оставляю мой ноутбук в рюкзаке и использую вместо него настольный компьютер. У меня очень большое количество данных, которые мне постоянно нужны: веб-страницы, которые я читал, инструкции, статьи, над которыми я работаю, фотографии и так далее. Короче говоря, приблизительно 10 Гб данных. Я держу все эти данные в моем настольном компьютере, и пользуюсь этими же данными на моем ноутбуке.

Очевидно, что мне нужно синхронизировать на двух машинах все 10 ГБ данных. Если я удаляю файл на настольном компьютере, мне нужно удалить его на ноутбуке. Если я изменяю файл на ноутбуке, то нужно, чтобы на настольном компьютере не потребовалось дополнительно его открывать и делать в нем изменения. Это неразумно.

Так почему я не могу использовать rsync? Потому что я должен синхронизировать обе машины таким образом, чтобы каждая из них одновременно выступала как источник синхронизации, так и машина, на которой выполняется синхронизация. Вот один пример: на моем ноутбуке я перемещаю файл widgets из директория foo в директорий bar. Однако на моем настольном компьютере файл widgets все еще находится в директории foo. Если я запускаю rsync с ноутбука в качестве источника синхронизации и указываю настольный компьютер, как компьютер, на котором нужно выполнить синхронизацию, то пока все хорошо: файлы widgets теперь находятся в директориях bar как на ноутбуке, так и на настольном компьютере. Но файл widgets все еще находится в директории foo на настольном компьютере. В следующий раз, когда я запускаю rsync на настольном компьютере в качестве источника синхронизации и синхронизирую с ним ноутбук, файл widgets копируется из директория foo, расположенного на настольном компьютере, и помещается в директорий foo на ноутбуке, в результате чего файлы widgets оказываются как в директории foo, так и в директории bar, из-за чего возникает настоящий беспорядок.

Конечно, я могу запускать rsync с установленным параметром
с тем, чтобы если файл был удален на источнике синхронизации, он бы также удалялся на компьютере, на котором выполняется синхронизация, но это на практике может оказаться очень опасным. Что произойдет, если я удалю директорий foo на ноутбуке, но изменю его на настольном компьютере? Если я запускаю rsync на ноутбуке в качестве источника синхронизации, то на настольном компьютере директорий foo будет удален, хотя это не то, что я хочу. Вместо этого, я должен помнить, что rsync следует запустить на настольном компьютере в качестве источника синхронизации, с тем чтобы измененный директорий foo был скопирован на ноутбук. Но что если бы я изменил файлы на ноутбуке и удалил их на настольном компьютере? Тогда мне нужно запускать rsync на ноутбуке в качестве источника синхронизации и … а дальше — все повторяется снова.

Unison решает эту проблему. Вы определяете источник синхронизации и указываете компьютер, на котором нужно выполнить синхронизацию, а затем запускаете Unison. Через некоторое время Unison начинает задавать вам вопросы о файлах, которые он обнаружил: скопировать этот файл из ноутбука на настольный компьютер? Скопировать другой файл с настольного компьютера на ноутбук? Удалить этот файл на ноутбуке, поскольку он был удален на настольном компьютере? Вы можете подтвердить догадки Unison, указав куда надо делать копию, или даже попросить Unison пропустить этот файл и нечего с ним не делать до завтра. При помощи Unison синхронизация двух директориев, которые размещены на разных машинах, становится достаточно простой задачей. И, в качестве приятного дополнения, Unison является кросс-платформенным, так как он работает на компьютерах с Linux, Mac OS X (с некоторыми оговорками, смотрите раздел «Дополнительная информация о пакете Unison» в конце настоящего совета), Unix и Windows.

⇡#Allway Sync

  • Разработчик: Usov Lab
  • Распространение: shareware
  • Русский интерфейс: есть

Программа Allway Sync предоставляется разработчиками бесплатно для личного использования, коммерческая версия приложения стоит $19,95. Утилита довольно проста и удобна в использовании, хотя имеет несколько неказистый интерфейс (поддержка русского языка присутствует). Здесь нет списка профилей, а есть задачи, каждая из которых отображается на отдельной вкладке: вы можете их добавлять, удалять, клонировать и переименовывать. Чтобы настроить задачу, нужно указать две папки для синхронизации и отметить ее направление. Программа позволяет выбирать папки не только на локальном диске, но и в Интернете — она поддерживает протоколы FTP, SFTP, WebDAV, онлайн-службы Dropbox, SkyDrive, Google Docs, OffsiteBox и другие, определяет мобильные устройства, подключенные через Microsoft ActiveSync, а также умеет читать ZIP-архивы. Причем, в отличие от программы SyncBack Pro, где присутствует подобная функциональность, в Allway Sync вы можете добавить связь между онлайн-папками — например синхронизировать аккаунт Dropbox с FTP-сервисом.

Выбор направления синхронизации в Allway Sync

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

Отчет о проанализированных файлах в Allway Sync

В опциях Allway Sync присутствует раздел «Установки профиля», где для каждой задачи отображается набор дополнительных свойств: «Правила синхронизации», «Автоматическая синхронизация», «Включающие и исключающие фильтры», «Политика управления версиями», «Обработка ошибок». Рассмотрим их подробнее. В правилах синхронизации можно активировать несколько важных опций — игнорировать часовую разницу во времени модификации, копировать атрибуты безопасности и прочее. Параметры автоматической синхронизации позволяют выбрать условие для старта: при подключении съемного диска, когда обнаружены изменения файлов или простаивает компьютер и тому подобные. Включающие и исключающие фильтры настраиваются довольно широко: вы можете применить их как к имени или расширению файлов, так и к статусу (новый, измененный, удаленный), атрибутам (системный, сжатый и другие), времени модификации и размеру. Политика управления версиями позволяет выбрать, что делать со старыми версиями измененных файлов: удалять их или перемещать в определенную папку, а также отметить, сколько времени должны храниться эти старые версии. В настройках, связанных с обработкой ошибок, вы можете указать, что должна делать программа в случае этих ошибок, и определить ее поведение при появлении предупреждения.

Опции Allway Sync

Напоследок стоит добавить, что, как и ранее рассмотренные утилиты, Allway Sync ведет лог действий в журнале и позволяет импортировать и экспортировать настройки приложения.

Синхронизация файлов и папок

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

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

Критерии оценки утилит синхронизации:

Хорошая утилита синхронизации должна уметь большинство из всего нижеследующего.

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

Есть много претендентов в данном классе программ, но лишь пара из них поддерживает большую часть критериев.

Windows 10

Сетевая синхронизация файлов и папок в Windows 10 выполняется с помощью аналогичных инструментов. Ограниченные возможности работы с папками привели к тому, что функция Портфель из набора компонентов исключена. Вместо нее пользователь получает возможность использования сетевого хранилища OneDrive, поддерживающего командную работу. Еще одним доступным инструментом синхронизации в Windows является утилита Microsoft SyncToy. С ее помощью можно работать с любыми локальными и сетевыми носителями.

SyncToy

Работа над утилитой заброшена еще в 2009 году, но с поставленными задачами она справляется и в современных версиях операционных систем.

При первом запуске программы активируется мастер создания связей. Пользователям предлагается выбрать «левую» и «правую» папки. Так разработчики «окрестили» источник и получатель.

Следующим шагом является выбор типа синхронизации. Доступно три варианта:

  1. Synchronize. Полная синхронизация всех совершенных файловых операций в обоих направлениях.
  2. Echo. Копирование изменений, выполненных в «левой» папке в «правую».
  3. Contribute. Избирательное копирование. Из источника в получатель переносятся только новые или измененные документы. Удаление файлов игнорируется.

На завершающем этапе задаем имя созданной связи.

В главном окне мы видим заданную пару папок. При желании можно изменить выбранный тип синхронизации или задать дополнительные правила. Здесь же можно удалить связь или создать дополнительную пару директорий. Нажатие на отмеченную кнопку запускает синхронизацию.

Прогресс операции показывается полоской индикации. После завершения в окне выводится подробная статистика выполнения.

Утилита поддерживает создание неограниченного количества связей. Операции можно выполнять для всех вместе или выбрав необходимую в данный момент пару директорий.

6: Создание задачи cron для Unison

Демон cron будет запускать Unison и создавать резервную копию каталога на бэкап-сервере с указанной частотой.

Crontab – это файл, который читается процессом cron. Содержащиеся в нем команды загружаются в cron и выполняются с заданными интервалами.

Чтобы просмотреть текущее содержимое crontab, введите:

Опция -l выводит содержимое crontab текущего пользователя. Если вы не редактировали crontab ранее, вы увидите следующую информацию:

Затем на первичном сервере выполните команду crontab с флагом -e, чтобы открыть его в режиме редактирования:

Если у вас не настроен редактор командной строки по умолчанию, при первом запуске команды вам будет предложено выбрать его. Выберите редактор, чтобы открыть crontab.

Как только вы откроете crontab, добавьте следующую команду в первую пустую строку под существующим текстом:

Команда, которую нужно поместить в crontab, почти такая же, как та, которую вы использовали выше при резервном копировании вручную, но с некоторыми дополнительными опциями. Вот эти дополнительные параметры:

  • -silent: отключает все выходные данные, кроме ошибок. Обычный вывод не нужен, когда Unison выполняется из crontab, так как никто не будет читать его.
  • -log: позволяет Unison регистрировать свои действия в логах.
  • -logfile: указывает, где Unison может регистрировать свои действия.

В этом примере Unison запускается каждые 3 часа. Вы можете указать другую частоту, которая лучше соответствует вашим требованиям.

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

Сохраните и закройте файл.

На первичном сервере создайте лог для Unison:

Передайте права на него пользователю primary_user.

Вы можете проверить состояние резервных копий Unison, просмотрев лог /var/log/unison.log. Unison будет регистрировать что-либо, только если он создал резервную копию нового или обновленного файла или обнаружил ошибку.

Теперь Unison периодически выполняет резервное копирование из crontab.

Установка и тестовый запуск

Выполним установку lsyncd на CentOS, а также настроим сервис для синхронизации двух каталогов на локальном компьютере.

Установка

Выполняем команды:

yum install epel-release

yum install lsyncd

Разрешаем автозапуск сервиса:

systemctl enable lsyncd

Настройка и запуск

Открываем конфигурационный файл:

vi /etc/lsyncd.conf

Приводим его к виду:

settings {
    logfile = «/var/log/lsyncd.log»,
    statusFile = «/var/log/lsyncd.stat»,
    statusInterval = 5,
    insist = true,
    nodaemon = false,
}
sync {
    default.rsync,
    source=»/tmp/source»,
    target=»/tmp/target»,
}

* где:

  • settings — общие настройки.

    • logfile — путь до файла логов.
    • statusFile — файл, в который заносятся изменения, найденные с помощью inotify.
    • statusInterval — интервал в секундах для обновления statusFile.
    • insist — позволяет продолжить работу сервиса, даже если одна или несколько целевых директорий недоступны.
    • nodaemon — отключаться или нет от вызывающей стороны. Проще говоря, если разрешить, то будет больше информации по его работе. Для боевого режима можно отключить.
  • sync — настройка для синхронизации конкретного ресурса. Для каждого создается своя секция sync.
    • default.rsync — должен использоваться протокол для синхронизации rsync.
    • source — источник, откуда синхронизируем данные.
    • target — куда синхронизируем.

* в данном примере мы синхронизируем два каталога на локальном компьютере. Таким же образом, можно синхронизировать данные и в подмонтированных каталогах, например, по nfs или cifs (smb).

Создадим два тестовых каталога:

mkdir /tmp/source

mkdir /tmp/target

Перезапускаем сервис lsyncd:

systemctl restart lsyncd

Пробуем создать тестовый файл к каталоге-источнике:

touch /tmp/source/testfile

Ждем 5-10 секунд. Проверяем содержимое каталога-цели:

ls /tmp/target/

Мы должны увидеть файл:

testfile

Сервис готов к работе.

Настройка

Теперь в локальной системе запустите утилиту Unison GUI. Она должна выглядеть примерно так.

Сначала нам нужно создать новый профиль для синхронизации. Для создания нового профиля кликните Add. Затем кликните Forward.

Введите имя для нового профиля и кликните Forward.

Здесь вас попросят указать метод синхронизации. Я хочу проводить синхронизацию между локальной машиной и удаленным сервером, используя SSH, поэтому выбираю «Using SSH». Введите IP-адрес и имя пользователя для удаленного сервера, как показано ниже, и кликните Forward.

Теперь необходимо вернуться к локальной и удаленной папкам. Введите путь к локальной папке в Local Directory (у меня это /home/sk/Unixmen), а путь к удаленной — в Remote Directory. Кликните Forward.

Если вы синхронизируете любые папки на разделах FAT, отметьте «FAT Partition» и кликните Forward.

В конце кликните Apply.

Мы успешно создали профиль. Кликните Open, чтобы начать синхронизацию.

Вы увидите запрос пользовательского пароля для удаленной системы. Введите пароль и кликните Ok.

Если вы запускаете приложение в первый раз, то увидите предупреждение, как показано ниже. Для продолжения кликните Ok.

Теперь вы увидите следующую картину:

Скопируйте папки или файлы, которые вы хотите реплицировать на удаленной машине, в свою папку для синхронизации (/home/sk/unixmen), и кликните Go. Все будет происходить в фоновом режиме. Теперьт проверьте наличие файлов на удаленной машине. Они определенно должны быть там. Если вы добавите новый файл или директорию, кликните Rescan, затем Go для начала синхронизации.

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

Источник

Базовый синтаксис

Базовый синтаксис rsync очень прост и аналогичен ssh, scp и cp. Дли синхронизации содержимого директории dir1 в dir2 на той же системе введите команду:

Опция -r означает рекурсивную синхронизацию и обязательна для синхронизации директорий.

Вместо нее можно было воспользоваться флагом -a:

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

Важное замечание: В конце первого аргумента в рассмотренных выше командах указан слэш (/):

Он нужен для того, чтобы определить аргумент как “содержимое dir1”. Без слэша в dir2 была бы помещена сама директория со всеми файлами внутри:

Всегда внимательно проверяйте аргументы при выполнении команды rsync. Специально для этого существуют опции -n или —dry-run (тестовый прогон без фактической синхронизации). Флаг -v (verbose, подробная информация) также полезен для полноценного просмотра выходных данных:

Удалим слэш в конце аргумента и сравним результаты:

Видно, что была передана сама директория.

Итак, реализация

Выбираем/создаём каталог для синхронизации и создаём его на обоих серверах. Затем создаём ключи для пользователя, от имени которого будет происходить синхронизация:

ssh-keygen

Добавляем ключи на сервер. Чтобы это сделать, копируем содержимое созданного файла ~/.ssh/id_rsa.pub с сервера, на котором создали ключ для подключения, в файл ~/.ssh/authorized_keys на сервере, к которому будет подключаться. Пробуем подключиться к целевому серверу:

ssh 

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

Далее устанавливаем lsyncd на обоих серверах:

sudo yum install lsyncd -y

Редактируем conf-файл. Файл /etc/lsyncd.conf пишется в формате lua. Самое простое — сделать один конфиг со всеми нодами и скопировать его на сервера, закомментировав ненужные куски конфига. У меня файл получился примерно таким для сервера nfs-exchange, через который будет происходить обмен:

settings {
  logfile    = "/var/log/lsyncd/lsyncd.log", --]
  statusFile = "/var/log/lsyncd/lsyncd.status", --]
  statusInterval = 5, --]
}

--]
  source = "/nfssync/pics", --]
  host = "nfs-exchange", --]
  targetdir = "/nfssync/pics", --]
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  }, 
  --[[дополнительные параметры синхронизации:
    a — режим архивации; равносильно -rlptgoD, тоесть копировать рекурсивно, вместе с симлинками и специальными файлами, сохраняя права доступа, группу, владельца.
    u — не обновлять файлы на получателе если они новее;    
    s — на случай если в имени файла попадется пробел.
    S — оптимизировать передачу данных состоящих из нулей.
    temp-dir нужна если синхронизация двухсторонняя
    далее я задал пользователя и его ключ, чтобы синхронизация происходила под пользователем, для которого мы ранее создали ключи и раскидали их по серверам.
    Опция -o StrictHostKeyChecking=no решает проблему ошибки Permission denied.
    Более подробно в man и тут:
    https://github.com/mralexjuarez/lsyncd-tutorial

        ]]
  delay = 3, --]
}
]]

sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "node01",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3
}


sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "node02",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3,
}

sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "node03",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3,
}

На остальных нодах закомментированы все ноды и раскомментирован только участок конфига, касающийся хоста nfs-exchange.

settings {
  logfile    = "/var/log/lsyncd/lsyncd.log",
  statusFile = "/var/log/lsyncd/lsyncd.status",
  statusInterval = 5,
}


sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "nfs-exchange",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3,
}


--[[
sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "node01",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3
}


sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "node02",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3,
}

sync {
  default.rsyncssh,
  source = "/nfssync/pics",
  host = "node03",
  targetdir = "/nfssync/pics",
  rsync = {
       _extra = { "-ausS", "--temp-dir=/tmp", "-e", "/usr/bin/ssh -l username -i /home/username/.ssh/id_rsa -o StrictHostKeyChecking=no" }
  },
  delay = 3,
}
]]

Когда конфиги созданы, можем включать lsyncd с обеих сторон на серверах. Желательно, конечно, включить с одной стороны, посмотреть log, и если все хорошо, включать с другой стороны.

systemctl start lsyncd
systemctl enable lsyncd

Grsync

Grsync — это основанный GTK+ графический интерфейс для известной утилиты rsync. Он поддер-живает сохранение сессий, большинст-во функций rsync (удаление, подроб-ный вывод, игнори-рование существу-ющих элементов, обновление и т.д.) и выполнение команд до и после работы rsync. Чтобы навер-няка избежать удаления крити-ческих данных, можно запустить утилиту в режиме симуляции. К сожа-лению, синхрониза-ция через SSH не работает без дополнительной настройки, но следующие инструкции помогут решить эту проблему: http://url.fullcirclemagazine.org/118bb3.

Для установки Grsync вам нужен пакет «grsync» из репозитория «universe».

Обзор бесплатных программ для синхронизации файлов и папок

Программа для синхронизации файлов и папок FreeFileSync лучший выбор 

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

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

Какие чувства вы будете испытывать, когда обнаружите этот досадный факт? Утилита умеет работать с заблокированными файлами, так что вам не придется ломать голову над вопросом «а все ли вы программы закрыли?».

К сожалению, FreeFileSync имеет очень простые фильтры. Так же в ней нет функции автоматической синхронизации, и никакой поддержки протокола FTP. Файл справки у утилиты достаточно скудный. Инсталлятор FreeFileSync содержит OpenCandy. Тем не менее, простота и качество утилиты перевешивают с лихвой ее недостатки.

Allway Sync многофункциональный продукт для синхронизации файлов

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

К недостаткам стоит отнести не очень хорошо проработанный интерфейс утилиты при обнаружении конфликтов и факта удаления. В интерфейсе не совсем очевидно, что нужно выбрать, чтобы достичь желаемого результата при разрешении конфликта. У начинающих пользователей здесь могут возникнуть проблемы. Так же необходимо учитывать, что в бесплатной версии Allway Sync есть лимит в расчете 40000 файловых операций на один месяц. Так что если вам требуется синхронизировать кучу файлов, то эту утилиту стоит отложить в сторону. Еще одним недостатком можно считать отсутствие поддержки копирования заблокированных файлов. Сами разработчики на данный недостаток отвечают «это может поставить под угрозу целостность файлов». Отчасти они правы, но если быть честным до конца, то такой факт просто должен быть внесен в список конфликтов, и решаться самим пользователем. 

Еще программы:

  • SyncBack. Поддерживает сжатие файлов. Может проверить целостность файлов после завершения синхронизации.
  • Synkron. Позволяет восстанавливать файлы, которые были перезаписаны или удалены во время синхронизации.
  • File Synchronizer. Если вы ищите минимализма, то это программа специально для вас.

Dropbox

Dropbox — это мощный кроссплатформенный сервис синхро-низации данных. Будучи функционально схожим с Ubuntu One, более зрелый Dropbox может похвастаться некоторыми серьёз-ными отличиями, такими как поддержка симлинков, больше возможностей по хранению данных и гораздо более удобный веб-интерфейс. Кроме того, это кроссплатформенный сервис (поддерживаются Windows, OS X и даже iPhone), и к нему есть множество расширяющих функционал модулей. Так же как и Ubuntu One, он использует промежуточные узлы для синхро-низации, то есть все ваши данные оседают на сервере Dropbox.

Для установки Dropbox скачайте пакет с https://www.dropbox.com/install

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: