/*
 * https ; gemini ;
 * tout ; log ; twtxt ;
 * à propos (@) ; ;
 */

Plusieurs /home synchronisés

J'utilise principalement 2 ordinateurs :

J'ai besoin que le contenu de mes documents sur ces 2 ordinateurs soit identique.

Pour cela, j'ai jusqu'à présent utilisé 2 solutions qui marchaient très bien : syncthing et l'implémentation de rsync "openrsync". À chaque fois, mon serveur sert d'intermédiaire pour stocker les fichiers. En effet, ces 2 machines sont rarement allumées en même temps.

Toutefois, ils avaient chacun des défauts un peu gênants.

Solène a récemment publié un article sur les outils de synchronisation.

C'est elle qui m'a rappelé l'existence d'unison. Après relecture de sa description, il semblait tout à fait approprié pour répondre à mes besoins. Son seul défaut était de ne pas être présent de base sous OpenBSD. Toutefois, les avantages sont nombreux :

Je l'utilise pour synchroniser tous mes documents avec le profil suivant :

# Unison preferences
root = /home/prx
root = ssh://batman@ledzep/bckp/prx
sshargs = -C

# dirs
path=docs
path=bin
path=work
path=Maildir

# dots
path=.bookmarks
path=.config
path=.fceux
path=.fonts
path=.newsboat
path=.templates
path=.unison/prx_bckp.prf
path=.xsession

# ignores
ignore=Name .*~
ignore=Name *.tmp
ignore=Name *cache.db.lock

La liste est assez longue, et sera peut-être complétée petit à petit. Il y a des trucs pas vraiment utiles, car ils changent peu. Le tout pèse tout de même 44G.

Afin de m'assurer de récupérer les derniers changements lorsque j'allume ma machine, j'édite mon crontab avec la commande "crontab -e" pour y ajouter :

@reboot /home/prx/bin/xunison >/dev/null 2>&1

De même, lorsque j'éteins, je veux envoyer tous mes documents donc j'ai ajouté dans "/etc/rc.shutdown" ceci :

su prx /home/prx/bin/xunison

Cela lance le script "xunison" en tant qu'utilisateur "prx". On pourrait faire avec "doas" aussi.

Le contenu du script "xunison" lance la synchronisation. Cependant, elle le fait dans une session tmux de façon à l'afficher dans un terminal. Ça me permet d'avoir un oeil sur ce qu'il se passe, et résoudre les conflits s'il en apparaît un jour (je retirerai l'option "-batch" dans ce cas) :

#!/bin/sh
# display unison in a terminal
s="xunison"
export DISPLAY=:0

tmux has-session -t "$s" && exit

MAX=10
i=0

/usr/X11R6/bin/xwininfo -root > /dev/null
while [ $i -lt $MAX ]; do
        /usr/X11R6/bin/xwininfo -root > /dev/null && break
        sleep 1
        i=$(($i+1))
done
tmux new -s "$s" -d /usr/local/bin/unison -auto -batch prx_bckp
/usr/X11R6/bin/xterm -e tmux attach-session -t "$s"

En quelques secondes, la synchronisatoin est réalisée. C'est peu intrusif et économe en ressources.

Je vous invite à tester cet outil. Il y a même une version "no_x11" sous OpenBSD qui s'affranchit de l'interface graphique et pèse environ 6,3M.

syncthing
openrsync
unison

Une réaction?

Envoyez votre commentaire par mail.
Mode d'emploi de la liste de diffusion pour recevoir les réponses.