URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 70663
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Использование unison для двусторонн..."

Отправлено auto_tips , 16-Сен-10 08:18 
Для решения задачи по синхронизации данных между двумя машинами, в ситуации когда изменения могут появиться на каждом из компьютеров, прекрасно подходит утилита unison (http://www.cis.upenn.edu/~bcpierce/unison/). При синхронизации между удаленными машинами в качестве транспорта может использоваться ssh. При обнаружении конфликтов, например, когда на обоих машинах отредактирован один и тот же файл, unison пытается разрешить конфликт автоматически, а если это не удается предоставляет пользователю интерфейс для принятия решения.

Устанавливаем unison.

Fedora/RHEL/CentOS:

   sudo yum install unison

Debian/Ubuntu:
   sudo apt-get install unison

FreeBSD:
   # cd /usr/ports/net/unison/ && make install

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

   unison /test1 /test2

В процессе будет выводиться статистика и задаваться вопросы, касающаяся синхронизации и разрешения конфликтов, направление копирования будет указано стрелкой.

Для синхронизации с удаленной директорией необходимо указать:

   unison /test1 ssh://testserver.test.ru//test1

Чтобы выполнить синхронизацию автоматически, без интерактивного взаимодействия с пользователем необходимо использовать опцию "-batch". В случае конфликта, выполнение будет прервано с выводом соответствующего уведомления.

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

Например, создаем файл ~/.unison/test.prf:

   # Определяем список директорий, которые будут синхронизированы
   root = /home/project
   root = /mnt/NFS/home/project

   # Указываем сохранять права доступа и владельца
   owner = true
   times = true

   # Определяем список поддиректорий, которые нужно синхронизировать, остальное игнорируем:
   path = cgi-bin
   path = htdocs
   path = conf

   # Определяем маски для файлов, которые не нужно синхронизировать
   ignore = Name .htaccess
   ignore = Name *~
   ignore = Name .*~
   ignore = Path conf/project.conf
   ignore = Path htdocs/rrd
   ignore = Path htdocs/mon
   ignore = Name *.o
   ignore = Name *.tmp
   ignore = Name *.log
   ignore = Name *.gz
   ignore = Name *.iso
   ignore = Name {,.}*{.old}

   # Копируем в резервные копии изменяемых файлов в отдельную  директорию
   backup = Name *
   backups = true
   backupdir = /home/project/backup

   # Определяем свою команду для отображения отличий между копиями файлов при конфликте
   #diff = diff -y -W 79 --suppress-common-lines

   # Сохраняем лог с результатами работы в отдельном файле
   log = true
   logfile = ./sync.log


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

   unison test


URL:
Обсуждается: https://www.opennet.ru/tips/info/2422.shtml


Содержание

Сообщения в этом обсуждении
"Использование unison для двусторонней синхронизации файлов"
Отправлено Денис , 16-Сен-10 08:18 
Было бы интереснее если была раскрыта тема двустронней синхронизации между Windows и Unix серверами.

"Использование unison для двусторонней синхронизации файлов"
Отправлено Аноним , 16-Сен-10 10:52 
>Было бы интереснее если была раскрыта тема двустронней синхронизации между Windows и
>Unix серверами.

Вы не поверите, но unison прекрасно работает и под Windows, без разницы где его запускать и инструкции те же самые.


"Использование unison для двусторонней синхронизации файлов"
Отправлено Александр , 16-Сен-10 12:05 
Синхронизации чего? Что можно между операционками синхронизировать? Настройки, шрифты? :)

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


"Использование unison для двусторонней синхронизации файлов"
Отправлено Имя , 16-Сен-10 17:16 
Ок, хочу синхронизировать CF-карту с FAT32 и директорию ~/boooks

"Использование unison для двусторонней синхронизации файлов"
Отправлено bdlog , 20-Сен-10 17:55 
Выставите флаг не сохранять аттрибуты и синхронизируйте.

"Использование unison для двусторонней синхронизации файлов"
Отправлено Р , 16-Сен-10 13:19 
ftp есть? а если только в одну сторону делать зеркало? под винду тоже консоль? демоны с обоих сторон надро запускать? или достаточно с одной?:)

"Использование unison для двусторонней синхронизации файлов"
Отправлено www , 16-Сен-10 16:28 
Я так понимаю что когда надо синхронизовать - тогда надо запускать эту утилитку. А как синхронизировать два каталога (с подкаталогами), чтоб после копирования и/или редактирования файла в каталог (или подкаталог) автоматически запускалась синхронизация? Думаю такой эфект можна получить используя watch -n 0,1 unison /test1 ssh://testserver.test.ru//test1, но это както муторно

"Использование unison для двусторонней синхронизации файлов"
Отправлено hryak , 16-Сен-10 17:04 
http://ru.wikipedia.org/wiki/Inotify + демон,слушающий его и запускающий то, что тебе нужно

"Использование unison для двусторонней синхронизации файлов"
Отправлено devcoder , 16-Сен-10 17:34 
% apt-cache search incron
incron - cron-like daemon which handles filesystem events

"Использование unison для двусторонней синхронизации файлов"
Отправлено segoon , 19-Сен-10 22:25 
Интересно, посмотрим...  А я делаю так - в ~/sync лежат все настройки, дотфайлы и директории для синхронизации.  Вместо конфигов симлинки в ~/sync.  Сам ~/sync под гитом.  Если на обоих машинах произошли изменения, то гит поможет смержить обе версии.  Ну и скрипты ~/sync/scripts/ для слияния в одну команду (сам ищет на что надо натравить git rm и пр.).