Unisson file sync
Je part du principe que vous avez ssh sur votre serveur linux ou windows Si jamais ca ne serait pas le cas:
Executer les commandes suiventes en power shell avec des droits admin pour installer le serveur ssh et le client ssh
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Have ssh agent start automatically
Get-Service ssh-agent | Set-Service -StartupType Automatic
# Start ssh agent now
Start-Service ssh-agent
# Should work successfully
Get-Service ssh-agent
Une doc https://www.it-connect.fr/installer-et-configurer-openssh-server-sur-windows-server-2019/
on va donc utiliser unison v2.53.7
Les version (v2.53.7) de unisson utiliser son ici https://github.com/bcpierce00/unison/releases/tag/v2.53.7
Les build ubuntu matche sur des bases redhat pas de pb
Sous linux
extraire le tgz et copier les 3 binaire du dossier bin dans /usr/bin
Sous windows
Personellement j'ai déja un dossier bin dans le patch a la racine de c:\bin
j'ai copier dans bin le dossier de unisson et ajouter son dossier bin dans le path
Ca donne ca (Mais vous installer ca comme vous voulez)
Du moment que quand vous tapper unison dans un cmd ou un terminal et que ca marche :) les reste m'importe peu ^^
Je travail avec le compte usabatch de hamony sous linux mais windows est un peu plus permissif ;)
Donc pour verifier que ca marche sous linux ou sous windows taper unison
Vous devriez avoir se genre de retour:
Coté Firewall quand vous etre serveur
Vous devez créer un Alias /Service type Host avec les ip des studios client de vos données
Vous devez natté un port TCP externe (Celui que vous souhaiter ) 22125 vers le port 22 de votre machine qui gére votre serveur ssh et vérifier qui est la source
Exemple
Evidement si vous filtrez les port en sortie (Se qui est fortement recommander en 2024) vous devez authoriser la machine qui execute unisson a se connecter sur les port TCP distant et les ip des studio partenaire
Je suis client d'un dossier
Commade commune au 2 Operating System
Généter une cle ssh dans l'utilisateur que vous souhaiter utilier (Il doit avoir acces au data de prod)ssh-keygen -t rsa -b 4096 -C "support@d-ns.fr"
Vous devez générer un cle sans mot de pass pour un service
Apres avoir générer des cle ssh transmettre votre public key a la personne en charge du serveur pour quel soit copier dans les dossier .ssh dans .ssh/authorized_keys du serveur transmettre aussi votre ip quel soit accessible du firewall
Quand vous avez un retour de votre interlocuteur avec son ip externe son port ssh exposer Vous pouvez verifier que ca marche avec ces commandes ssh-add
Ca va chargé votre private key
ssh -p 22125 usabatch@vpn.madlab-animations.com
Le faite que unison soit dans le path coté serveur et client est donc important
Comme vous avez deja normalement lancer unisson vous devirez avoir un fichier .unison dans le compte de votre utilisateur.
Sous Windows C:\Users\monuser\.unison
Sous linux /home/monuser/.unison/
Dans se dossier vous allez créer un fichier .prf dans l'exemple suivant on part du principe que Madlab est serveur du dossier library pour la prod Sacrée CoeurLibrary_Madlab.prf
Le model suivant est pour un serveur linux ou les données son recupérer sur une machine windows dans "F:\Sacre_Coeur\library\Madlab"
# Unison preferences
label = Libray Madlab
root = ssh://usabatch@vpn.madlab-animations.com:22125//harmonydata/USA_DB/environments/Sacre_Coeur/library/Madlab/
root = F:\Sacre_Coeur\library\Madlab
batch = true
auto = true
repeat = watch
#repeat = 600
prefer = newer
#logfile = /var/log/unison/BEST_data_madlab_to_akami.log
ignore = Name {*.tmp}
ignore = Name {~$*}
ignore = Name __wip
ignore = Name Old
ignore = Name OLD
ignore = Name old
ignore = Name {*old}
ignore = Name (*.unison.tmp)
#debug=all
#debug=all
La second ligne root peu evidement etre changer par un path linux
Quand vous etre serveur d'un dossier le plus simple est quand meme de fournir le fichier .prf
Vous pouvez lancer unisson avec cette commandeunison Library_Madlab -dontchmod -perms 0
Unisson sera demarer a distance par l'initiateur (D'ou l'importance qu'il soit dans le path)
Moi quand je le lance sur un machine windows je fait bat avec une boucle infi je le lance dans la session terminal de l'hyperviseur (pas dans un rdp)
:loop
echo Library SacreCoeur
ssh-add
unison Library_Madlab -dontchmod -perms 0
goto loop
Sous linux chmod +x Lauchesynchro.sh quand je lance dans une commande screen
#!/bin/sh
eval `ssh-agent`
ssh-add
while true
do echo "Sacree coeur Library"
unison Library_madlab -dontchmod -perms 0
done