====== Introduction ======
Documentation de la mise en place d'une synchronisation de fichiers bi-directionnelle avec [[http://www.cis.upenn.edu/~bcpierce/unison/|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 ---