Alternative à Rsync
Indice NDT
(N)iveau requis, de l’utilisateur à l’expert.
(D)ifficulté : Simple, Moyenne, Complexe.
(T)emps estimé pour la réalisation.
Utilisateur | Technicien | Expert |
Simple | Moyenne | Complexe |
– d’une heure | + de 5 heures | 12 heures et + |
OcM
Objectif de l’article.
Contexte de la réalisation.
Modalité de l’éxécution.
La commande de synchronisation distante (Rsync) exige selon les cas d’utilisations (ordinateur, NAS,..) des ports à router et des ressources. Parfois même la synchronisation de dossier de NAS à NAS implique un niveau d’arborescence trop « haut » pour satisfaire la synchronisation entre deux sous sous sous dossier…
Ce fut mon cas lorsque j’ai découvert la commande lftp.
Définition
lftp est un programme en ligne de commande de transfert de fichiers pour Unix et systèmes d’exploitation apparentés. Il a été écrit par Alexandre Lukyanov et est distribué sous Licence publique générale GNU. (source Wikipédia).
Il permet d’utiliser le protocole FTP d’une machine à une autre, en proposant des options de synchronisation (suppression de fichier, exception de traitement sur des dossiers et fin de connexion..).
Différents paramètres existent – cf https://doc.ubuntu-fr.org/lftp
Cas d’utilisation
- Un NAS avec un utilisateur et son dossier home.
- Un second NAS avec le même utilisateur et son dossier home
- disposer d’une synchronisation entre les deux NAS
sur un NAS on aura un script qui s’exécutera par exemple tous les jours à 7:30 et qui assurera la synchronisation en miroir du dossier source.
Implique que si on supprime un fichier/dossier depuis la source, il est supprimé de la destination (à l’exécution du script)
La ligne de commande lftp
lftp ftp://nomd_user:motdepasse@NASdestinataire -e "mirror -e -R /volume1/homes/nomd_user /home ; quit"
lftp la commande — à exécuter en ligne de commande via une session telnet/ssh… donc intégrée dans un script complet.
ftp://nomd_user:motdepasse@NASdestinataire — nom d’utilisateur concerné, son mot de passe et l’adresse du site distant
—> si utilisateur = sergio et mot de passe sur NAS destinataire = Htv22# et si NAS destinaraire = monnas.myds.me, alors le début de ma ligne de commande est :
lftp ftp://sergio:Htv22#@monnas.myds.me
-e –> indique la commande à exécuter qui se trouve entre guillemets
« mirror -e — > fait une synchronisation en effaçant les fichiers à destination si ils ne sont plsu présents en source.
-R –> de l’emplacement local à l’emplacement distant (sens de la synchro)
/volume1/homes/nomd_user /home–> chemin source
volume/chemin destination (non spécifié)
–> ici on arrive directement en se connectant avec l’utilisateur via FTP dans son home.
; quit » — pour mettre à un terme à la connexion à l’issue.
Intégration finale
Idéalement il faut
- intégrer cette ligne de commande dans un script bash, comme ici
- rendre exécutable ce script (chmod +x)
- disposer du script dans un dossier du NAS
- ajouter en tâche dans le CRONTAB du NAS (cf tableau des évènements comme dans cette image)
Rappel : pour accéder au NAS en mode root c’est par là.
Wouahou, superbe !
Le plaisir de retrouver une ligne de commande puissante et adaptable a souhait.
Je ne connaissais pas et je vais pouvoir defaire une synchro qui certes fonctionne bien, mais se fait sur un dossier racine complet et en consequence est trop consommateur a tout niveau (bande passante memoire cpu).
Merci