Unison — настройка двухсторонней синхронизации файлов

Thank you for reading this post, don't forget to subscribe!

Unison — крос­сплат­фор­мен­ная про­грам­ма для син­хро­ни­за­ции фай­лов меж­ду дву­мя или более ком­пью­те­ра­ми или устрой­ства­ми хра­не­ния данных.

Осо­бен­но­сти программы:

  • Выпус­ка­ет­ся под лицен­зи­ей GPL.
  • Исход­ный код открыт и досту­пен для плат­форм Linux, Unix, BSD, Windows, Mac.
  • Сохра­ня­ет еди­ную вер­сию фай­ла на раз­лич­ных устройствах.
  • Воз­мож­на крос­сплат­фор­мен­ная син­хро­ни­за­ция фай­лов, напри­мер вин­до­вых и линук­со­вых машин.
  • Рабо­та­ет по про­то­ко­лу TCP/IP.
  • Исполь­зу­ет шиф­ро­ван­ную пере­да­чу дан­ных по ssh.
  • Исполь­зу­ет­ся алго­ритм rsync с моди­фи­ци­ро­ван­ной частью пере­да­чи и пере­за­пи­си фай­лов. Это обес­пе­чи­ва­ет высо­кую надеж­ность и быстродействие.
  • Напи­са­на на язы­ке Caml.
  • При­ло­же­ние рабо­та­ет в поль­зо­ва­тель­ской сре­де, т.е. не тре­бу­ет адми­ни­стра­тив­ных прав.

Устанавливаем Unison в CentOS 7

Если мы попро­бу­ем ее поста­вить через yum, то уви­дим следующее:

No package unison available.

Поэто­му при­дет­ся ее соби­рать локаль­но из исход­ных тек­стов, кото­рые мож­но ска­чать с сай­та разработчика:

http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/

Про­грам­ма напи­са­на на язы­ке OCaml, так что для нача­ла ста­вим необ­хо­ди­мые для unison зависимости:

Даль­ше пере­хо­дим в домаш­ний ката­лог и ска­чи­ва­ем дистрибутив:

Рас­па­ко­вы­ва­ем архив с программой:

Пере­хо­дим в пап­ку с исходниками:

Соби­ра­ем программу:

Копи­ру­ем в систем­ные папки:

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

Установка на Debian / Ubuntu

Здесь всё намно­го проще:

Пример настройки двухсторонней синхронизации

Рас­смот­рим рабо­ту про­грам­мы на про­стом при­ме­ре. Допу­стим у нас есть 2 пап­ки с сайтами:

  • /web/sites/site1
  • /web/sites/site2

Созда­дим в пап­ке site1 2 файла:

Син­хро­ни­зи­ру­ем содер­жи­мое пап­ки site1 с пап­кой site2:

Про­ве­ря­ем:

Содер­жи­мое ката­ло­гов син­хро­ни­зи­ро­ва­но. Теперь уда­лим из пап­ки site2 один файл и сно­ва про­ве­дем синхронизацию:

Про­ве­ря­ем содер­жи­мое пап­ки site1

Уда­лен­но­го фай­ла нет. По тако­му прин­ци­пу рабо­та­ет программа