Mise à jour : Debian 11.1
lftp (linux file transfer protocol) est un client ftp en ligne de commande, utilisable pour synchroniser un site distant et un site local.
Sommaire
L'installation s’effectue directement depuis les dépôts :
$ sudo aptitude install lftp
$ lftp --version |head -2
LFTP | Version 4.8.4 | Copyright (c) 1996-2017 Alexander V. Lukyanov
Ouverture d'une session lftp
$ lftp
lftp :~>
Connexion à un serveur ftp, par exemple legtux.org
lftp :~> open legtux.org
lftp legtux.org:~>
Saisie du nom d'utilisateur, par exemple papy-tux, puis du mot de passe
lftp :~> user papy-tux
Mot de passe : xxxxxxxx
lftp papy-tux@legtux.org:~>
Méthode directe : Ouverture d'une session et connexion simultanée (le mot de passe apparaît en clair)
$ lftp papy-tux:<mot_de_passe>@legtux.org
lftp papy-tux@legtux.org:~>
Liste des commandes
(lftp) help
Historique des commandes passées dans lftp
(lftp) history
Affichage du répertoire local
(lftp) lcd
lcd ok, cwd local=/home/philippe
Opérations sur les fichiers distants : ls, cat, mv, rm, rmdir, mkdir, cd, chmod,ln, more, du, ...
Récupération d'un fichier distant sous le même nom que le fichier origine dans le répertoire local courant
(lftp) get doc1009/index.html
794 octets transférés
Récupération d'un ficher distant sous un nom donné dans un répertoire donné
(lftp) get doc1009/index.html -o /home/philippe/test
794 octets transférés en 2 secondes (486 B/s)
Téléversement d'un fichier local dans le répertoire distant courant
(lftp) put Soft/linoux/linoux/doc1210/doc1210-busybox
Fermeture de la connexion
(lftp) quit
Le mode script permet d'exécuter une suite de commande lftp sans intervention de l'opérateur. La ligne de commande suivante
Ouvre une connexion avec le serveur distant legtux.org
Exécute la commande ls (commande ls)
Termine la session lftp lorsque l'action précédente est terminée (commande quit)
Exécute les commandes debug, ls et quit qui sont situées entre les guillemets qui suivent l'option -e (pour execute)
$ lftp papy-tux:<Mot_de_Passe_en_clair>@legtux.org -e "debug;ls;quit"
lftp prend en charge également le protocole FTPS (FTP over SSL).
Si la connexion à un serveur FTPS provoque le message d'erreur suivant
Erreur fatale: Certificate verification: Not trusted
une solution consiste à désactiver la vérification SSL.
Pour ce faire, créer un fichier .config/lftp/rc avec
$ nano .config/lftp/rc
set ssl:verify-certificate no
Relancer une connexion et vérifier que l'erreur a disparu
On peut vérifier avec la commande set -a qui affiche la liste des options que la valeur est bien prise en compte
(lftp) set -a |grep ssl
set ssl:verify-certificate no
La commande mirror permet de mettre à jour un site distant par rapport à un site local et réciproquement
Pour mettre à jour un site distant par rapport à un site local :
$ lftp $USER_NAME:$MDP@$URL -e "mirror -e -R /home/user/chemin_vers_site_local/ / ;quit"
dans lequel
$USER_NAME et $MDP sont les noms d'utilisateur et de mot de passe du site. Ils vont apparaître en clair dans la console ! - Il est conseillé d'effacer la ligne de l'historique de la console.
$URL est l'adresse du serveur de connexion, par exemple legtux.org
/ est l'emplacement du site distant (dans cet exemple : la racine)
et les options
-e pour execute : exécution de la commande qui suit entre guillemets
-mirror : faire un miroir
-R pour reverse : faire un miroir du site local vers le site distant
-e pour eliminate : indique de supprimer dans la destination les fichiers non présents dans la source
quit : indique de fermer la connexion lorsque le transfert est terminé
Cette commande n'agit que sur le site distant :
elle remplace tous les fichiers du site distant plus anciens que ceux du site local
elle efface tous les fichiers du site distant qui n'existent pas ou plus dans le site local
elle ajoute au site distant tous les fichiers qui ne sont présents que sur le site local
La commande suivante met à jour un site local par rapport à un site distant et permet par exemple d'effectuer une sauvegarde du site distant :
$ lftp $USER_NAME:MDP@$URL -e "mirror -e / /home/user/BU/ ; quit"
Dans cette commande, à nouveau :
$USER_NAME et $MDP sont les identifiants de connexion
$URL est l'adresse du serveur ftp, par exemple legtux.org
/ est l'emplacement du site distant (dans cet exemple : la racine)
Noter dans cette commande, par rapport à la précédente :
la suppression de l'option -R
l'inversion de l'ordre entre site local et site distant
A l'aide d'un éditeur de menu tel que alacarte, créer une entrée desktop pour chaque commande comprenant :
Pour la mise à jour du site distant
Commande : Exec=exo-open --launch TerminalEmulator lftp ftp://$USER_NAME:$MDP@$URL -e "mirror -e -R /home/user/chemin_vers_site_local/ / ;quit"
Icône : Icon=/usr/share/icons/oxygen/48x48/actions/arrow-up-double.png
Pour la sauvegarde du site distant
Commande : Exec=exo-open --launch TerminalEmulator lftp ftp://$USER_NAME:MDP@$URL -e "mirror -e / /home/user/BU/ ; quit"
Icône : Icon=/usr/share/icons/oxygen/48x48/actions/arrow-down-double.png
Notes :
La ligne Exec, contient la commande à exécuter. Le début de la commande (exo-open --launch TerminalEmulator) permet (sous xfce4) de lancer la commande dans un terminal qui restera ouvert le temps de l'exécution, ce qui permettra de surveiller le bon déroulement
Le choix des icônes est arbitraire, ici on a choisi des flèches montantes et descendantes dans le thème oxygen