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
Niveau
Simple Moyenne Complexe
Difficulté
– d’une heure + de 5 heures 12 heures et +
Temps

OcM

Objectif de l’article.
Contexte de la réalisation.
Modalité de l’éxécution.

Synchroniser deux dossiers distants.

De NAS à NAS sans vouloir utiliser la commande RSYNC.

Marche à suivre et ligne de commande associée.

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@NASdestinatairenom 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

  1. intégrer cette ligne de commande dans un script bash, comme ici
  2. rendre exécutable ce script (chmod +x)
  3. disposer du script dans un dossier du NAS
  4. 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 .