====== 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 ---