Table des matières

Introduction

Documentation de la mise en place d'une synchronisation de fichiers bi-directionnelle avec Unison sous des distributions GNU/Linux Debian-like .

Installation

Sur les deux machines, tapez

sudo apt-get install unison-all rsync

Configuration

Générez une paire de clés SSH sans passphrase pour le compte root ayant pour longueur 3072 bits.

Sur une seule des deux machines, effectuez :

Unison

sudo -s
cd
mkdir .unison

Adaptez à vos besoins :

root
path
backupdir
--- 8< --- /root/.unison/default.prf
# Common options
logfile = /var/log/unison.log
sshargs = -C
copythreshold = 1000
 
# Roots of the synchronization
root = /mnt/Volume02
root = ssh://fraggle.piment-noir.org//data00/piment-noir-data
 
# Paths to synchronize
path = Projects
#path = common
#path = .netscape/bookmarks.html
 
# Some regexps specifying names and paths to ignore
ignore = Name *.swp    ## ignores 
ignore = Name .*.swp   ## ignores 
ignore = Name *~       ## ignores 
ignore = Name .DS_Store ## ignores 
ignore = Name .#*      ## ignores 
ignore = Name #*#      ## ignores 
ignore = Name *.tmp    ## ignores 
 
# Backup deleted files
backup = Name *
backuplocation = central
backupdir = /home/.unison-backups
 
#          When set to true, this flag causes the user interface to skip
#          asking for confirmations on non-conflicting changes. (More
#          precisely, when the user interface is done setting the
#          propagation direction for one entry and is about to move to the
#          next, it will skip over all non-conflicting entries and go
#          directly to the next conflict.)
auto=true
 
#          When this is set to true, the user interface will ask no
#          questions at all. Non-conflicting changes will be propagated;
#          conflicts will be skipped.
batch=true
 
#          When this is set to true, Unison will request an extra
#          confirmation if it appears that the entire replica has been
#          deleted, before propagating the change. If the batch flag is
#          also set, synchronization will be aborted. When the path
#          preference is used, the same confirmation will be requested for
#          top-level paths. (At the moment, this flag only affects the
#          text user interface.) See also the mountpoint preference.
confirmbigdel=true
 
#          When this preference is set to true, Unison will use the
#          modification time and length of a file as a `pseudo inode
#          number' when scanning replicas for updates, instead of reading
#          the full contents of every file. Under Windows, this may cause
#          Unison to miss propagating an update if the modification time
#          and length of the file are both unchanged by the update.
#          However, Unison will never overwrite such an update with a
#          change from the other replica, since it always does a safe
#          check for updates just before propagating a change. Thus, it is
#          reasonable to use this switch under Windows most of the time
#          and occasionally run Unison once with fastcheck set to false,
#          if you are worried that Unison may have overlooked an update.
#          The default value of the preference is auto, which causes
#          Unison to use fast checking on Unix replicas (where it is safe)
#          and slow checking on Windows replicas. For backward
#          compatibility, yes, no, and default can be used in place of
#          true, false, and auto. See the section "Fast Checking" for more
#          information.
fastcheck=true
 
#          When this flag is set to true, the group attributes of the
#          files are synchronized. Whether the group names or the group
#          identifiers are synchronizeddepends on the preference numerids.
group=true
 
#          When this flag is set to true, the owner attributes of the
#          files are synchronized. Whether the owner names or the owner
#          identifiers are synchronizeddepends on the preference
#          extttnumerids.
owner=true
 
#          Including the preference -prefer root causes Unison always to
#          resolve conflicts in favor of root, rather than asking for
#          guidance from the user. (The syntax of root is the same as for
#          the root preference, plus the special values newer and older.)
#          This preference is overridden by the preferpartial preference.
#          This preference should be used only if you are sure you know
#          what you are doing!
prefer=newer
 
#          When this preference is set to true, the textual user interface
#          will print nothing at all, except in the case of errors.
#          Setting silent to true automatically sets the batch preference
#          to true.
silent=true
 
#          When this flag is set to true, file modification times (but not
#          directory modtimes) are propagated.
times=true
--- >8 ---

cronjob

sudo mkdir /var/lock/unison
 
--- 8< --- /etc/cron.d/unison
*/5 * * * * root [ ! -d /var/lock/unison ] && mkdir /var/lock/unison; flock -n /var/lock/unison/cron.lock -c /usr/bin/unison &> /root/unison-cron.log
--- >8 ---

With a run control file :

sudo mkdir /var/lock/unison
 
--- 8< --- /etc/cron.d/unison
*/5 * * * * root [ ! -d /var/lock/unison ] && mkdir /var/lock/unison;  [ -e /etc/unison.sync ] && flock -n /var/lock/unison/cron.lock -c /usr/bin/unison &> /root/unison-cron.log
--- >8 ---

logrotate

--- 8< --- /etc/logrotate.d/unison
/var/log/unison.log {
        notifempty
        copytruncate
        daily
        rotate 7
        missingok
        compress
        delaycompress
}
--- >8 ---