Установка · 4 min read · Nov 17, 2025

Установка веб-, почтового и MySQL кластера на Debian 8.4 Jessie с ISPConfig 3.1 - Страница 4

** 7 Установка Unison

Далее мы устанавливаем Unison. Unison используется для синхронизации каталога /var/www между server1 и server2.

Установите unison на server1 и server2 с помощью

apt-get install unison

Теперь мы устанавливаем файл конфигурации unison на server1:

Создайте новый файл /root/.unison/web:

mkdir /root/.unison  
vi /root/.unison/web.prf

… и добавьте следующее содержимое:

# Корни синхронизации
root = /var/www
root = ssh://192.168.0.106//var/www
 
# Пути для синхронизации
#path = www
#path = vmail
 
# Некоторые регулярные выражения, указывающие имена и пути для игнорирования
#ignore = Path stats    ## игнорирует /var/www/stats
#ignore = Path stats/*  ## игнорирует /var/www/stats/*
#ignore = Path */stats  ## игнорирует /var/www/somedir/stats, но не /var/www/a/b/c/stats
#ignore = Name *stats   ## игнорирует все файлы/каталоги, заканчивающиеся на "stats"
#ignore = Name stats*   ## игнорирует все файлы/каталоги, начинающиеся на "stats"
#ignore = Name *.tmp    ## игнорирует все файлы с расширением .tmp
ignore = Name sess_*  
ignore = Name *access.log*  
ignore = Name error.log  
ignore = Name webalizer.conf  
   
#          Когда установлено в true, этот флаг заставляет пользовательский интерфейс пропускать
#          запросы на подтверждение при неконфликтующих изменениях. (Точнее,
#          когда пользовательский интерфейс завершает установку направления
#          распространения для одной записи и собирается перейти к
#          следующей, он пропустит все неконфликтующие записи и перейдет
#          непосредственно к следующему конфликту.)
auto=true
   
#          Когда это установлено в true, пользовательский интерфейс не будет задавать никаких
#          вопросов. Неконфликтующие изменения будут распространены;
#          конфликты будут пропущены.
batch=true
   
#          !Когда это установлено в true, Unison запросит дополнительное
#          подтверждение, если окажется, что вся реплика была
#          удалена, перед распространением изменения. Если также установлен флаг
#          batch, синхронизация будет прервана. Когда используется
#          предпочтение пути, то такое же подтверждение будет запрашиваться для
#          верхних уровней путей. (На данный момент этот флаг влияет только на
#          текстовый пользовательский интерфейс.) См. также предпочтение mountpoint.
confirmbigdel=true
   
#          Когда это предпочтение установлено в true, Unison будет использовать
#          время изменения и длину файла в качестве `псевдо inode
#          номера' при сканировании реплик на наличие обновлений, вместо того чтобы читать
#          полное содержимое каждого файла. В Windows это может привести к тому,
#          что Unison пропустит распространение обновления, если время изменения
#          и длина файла не изменились. Однако Unison никогда не перезапишет такое обновление
#          изменением из другой реплики, так как он всегда выполняет безопасную
#          проверку на наличие обновлений непосредственно перед распространением изменения.
#          Таким образом, разумно использовать этот переключатель в Windows большую часть времени
#          и время от времени запускать Unison один раз с fastcheck, установленным в false,
#          если вы беспокоитесь, что Unison мог пропустить обновление.
#          Значение по умолчанию для предпочтения - auto, что заставляет
#          Unison использовать быструю проверку на Unix-репликах (где это безопасно)
#          и медленную проверку на Windows-репликах. Для обратной
#          совместимости можно использовать yes, no и default вместо
#          true, false и auto. См. раздел "Быстрая проверка" для получения дополнительной
#          информации.
fastcheck=true

#          Когда этот флаг установлен в true, атрибуты группы файлов
#          синхронизируются. Синхронизируются ли имена групп или идентификаторы групп,
#          зависит от предпочтения numerids.
group=true
   
#          Когда этот флаг установлен в true, атрибуты владельца файлов
#          синхронизируются. Синхронизируются ли имена владельцев или идентификаторы владельцев,
#          зависит от предпочтения extttnumerids.
owner=true
   
#          Включение предпочтения -prefer root заставляет Unison всегда
#          разрешать конфликты в пользу root, а не запрашивать
#          указания у пользователя. (Синтаксис root такой же, как для
#          предпочтения root, плюс специальные значения newer и older.)
#          Это предпочтение переопределяется предпочтением preferpartial.
#          Это предпочтение следует использовать только если вы уверены, что
#          знаете, что делаете!
prefer=newer
   
#          Когда это предпочтение установлено в true, текстовый пользовательский интерфейс
#          не будет выводить ничего, кроме случаев ошибок.
#          Установка silent в true автоматически устанавливает предпочтение batch
#          в true.
silent=true
   
#          Когда этот флаг установлен в true, времена изменения файлов (но не
#          времена изменения каталогов) распространяются.
times=false  
  
#          Когда этот флаг установлен, Unison будет записывать все изменения в файловые системы в файл.  
log=false  
  
#          Когда этот флаг установлен в true, группы и пользователи синхронизируются численно, а не по имени.  
#          Специальный uid 0 и специальная группа 0 никогда не сопоставляются через имена пользователей/групп, даже если это  
#          предпочтение не установлено.  
numericids=true

Мы хотим автоматизировать синхронизацию, поэтому создаем небольшой скрипт и создаем cronjob на server1:

mkdir /root/scripts  
vi /root/scripts/unison.sh

и добавляем следующее содержимое:

#!/bin/sh  
lockdir=/tmp  
UNISON=/usr/bin/unison  
LOGGER=/usr/bin/logger  
  
if [ ! -f /$lockdir/unison ]; then  
        touch $lockdir/unison  
  
        $UNISON -testserver web  
        rc=$?  
        if [[ $rc != 0 ]] ; then  
                echo "error"  
                $LOGGER -d -t unison "web - ошибка подключения к удаленному"  
        else  
                $UNISON web  
        fi  
  
        rm $lockdir/unison  
else  
        $LOGGER -d -t unison "unison уже запущен"  
fi

сделайте скрипт исполняемым:

chmod 700 /root/scripts/unison.sh

И запустите первую синхронизацию. Чтобы получить некоторый вывод во время синхронизации, установите silent = false в /root/.unsion/web.prf. После этого запустите unison:

/root/scripts/unison.sh

Наконец, создаем cronjob:

crontab -e
# unison  
*  * * * *  /root/scripts/unison.sh > /dev/null
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.