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 Coeur

Library_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 commande

unison 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

 

 

Retour en haut