Description
lftp est un outil en ligne de commande, qui permet de transférer des fichiers. Il supporte les protocoles Bittorent, FISH, FTP, FTPS, HTTP, HTTPS, SFTP et a un support partiel pour WebDAV. IPv(4|6).
Ses fonctionnalités sont :
- la reconnexion automatique et la possibilité de ré-essai après erreurs ou timeout
- préservation de l’heure de modification
- mirroring, reverse mirroring, re-get, re-put
- mise en file d’attente par job, multiplier les transferts en tâche de fond
- gestion de “bookmarks” et d’alias
Installation
installez
le
paquet lftp
.
Utilisation
En tant que client CLI, il peut autant s’utiliser dans une ligne de commande que dans un script sh.
Options
Les options :
-c
: suivi d’un ensemble de commandes et quitte-d
: le mode de déboguage-e
: suivi d’un ensemble de commandes et ne quitte pas-f
: suivi d’un nom de fichier, permet d’exécuter les commandes dans ce fichier et quitte. Cette option DOIT s’utiliser toute seule, sans aucun autre argument (sauf--norc
).--norc
: ne pas exécuter les fichiers rc depuis votre répertoire $HOME.-p
: spécifie le numéro de port sur lequel se connecter--rcfile
: suivi d’un nom de fichier, permet d’exécuter un ensemble de commandes dans ce fichier et d’être exécuté plusieurs fois.-u
: permet de spécifier le couple d’identification utilisateur + mot de passe. Il est recommandé d’utiliser le fichier~/.netrc
dans lequel préciser le mot de passe, plutôt que dans la ligne de commande, ou par le biais de la variable d’environnementLFTP_PASSWORD
qui sera ensuite appelée par l’option--env-password
. De manière alternative, il est possible d’utiliser une connexion SSH par authentification par clé autorisée.
Variables d’environnement
Si les variables d’environnement suivantes sont précisées avant l’appel système, lftp est/sera capable de les utiliser :
EDITOR
: l’éditeur de texte qui sera appelé lors de l’usage de la commandeedit
.HOME
: le répertoire personnel localLFTP_HOME
: utilisée pour localiser le répertoire des fichiers de configurations locaux spécifiques à l’utilisateur.- Par défaut, sans spécification, il sera utilisé
~/.lftp
.
- Par défaut, sans spécification, il sera utilisé
LFTP_MODULE_PATH
: initialise la variablemodule:path
LFTP_PASSWORD
: utilisée par l’argumentopen
lors de l’usage de l’option--env-password
.LS_COLORS
: permet de paramétrer la variablecolor:dir-colors
qui ajoutera des couleurs.PAGER
: le nom du pager à utiliser lors de l’usage des commandesmore
etzmore
.SHELL
: utilisée par la commande!
pour déterminer quel shell utiliserXDG_CONFIG_HOME
,XDG_DATA_HOME
,XDG_CACHE_HOME
: utilisée pour localiser les répertoires spécifiques utilisateur si~/.lftp
ou la variable d’environnementLFTP_HOME
ne sont pas précisés.- Par défaut, il sera recherché respectivement
~/.cache
,~/.config
,~/.local/share
. Il sera ajouté le préfixe/lftp
pour restituer le chemin absolu du répertoire en question.
- Par défaut, il sera recherché respectivement
ftp_proxy
: initialise la variable pour le mandataire FTPhttp_proxy
,https_proxy
: initialise les variables pour les mandataires HTTP(S)no_proxy
: initialise la variablenet:no_proxy
.
Les commandes
ll existe énormément de commandes utilisables avec lftp ; veuillez lire le manpage ; seules certaines seront précisées ici sur cette page :
!
Cette commande spéciale !
exécute un shell suivi d’une autre commande
alias
Pour définir un nom d’alias ; c’est le même principe que les alias de shell
at
Exécutera une commande au moment donné. Voir le manpage at(1).
edit
Permettra l’édition d’un fichier distant par le biais de l’éditeur texte spécifié. Dans les faits, lftp récupérera le fichier vers un répertoire temporaire local, exécutera l’éditeur de texte local et téléversera sur le serveur le fichier.
Les options :
-k
: pour garder le fichier temporaire-o
: pour spécifier le répertoire temporaire
mirror
Faire une copie en miroir d’un répertoire source spécifié vers un
répertoire cible. (c’est l’équivalent de l’outil rsync
).
Par défaut, la source est distante et la cible est le répertoire local.
Il faut utiliser l’option -R
pour inverser la source et la cible ;
ainsi le répertoire source sera le répertoire local et la cible sera le
répertoire distant.
Si le répertoire cible est omis, la base du nom du répertoire source sera utilisée. Si les deux sont omis, les répertoires courants local et distant seront utilisés.
Si le répertoire cible termine avec un /
(hormis le répertoire racine)
alors la base du nom du répertoire source sera ajouté.
Les options :
-a
: l’équivalent des options--allow-suid
et--no-umask
.-c
,--continue
: continue un job si possible-e
,--delete
: supprime les fichiers qui ne sont pas présent sur la source--delete-excluded
: supprimera les fichiesr exclus sur la cible--delete-first
: supprimera en premier les vieux fichiers avant de transférer les nouveaux--depth-first
: descendra dans les sous répertoires avant de transférer les fichiers--scan-all-first
: analysera tous les répertoires récursivement avant de transférer les fichiers
-F
,--directory=
: fera une copie miroir du seul répertoire spécifié, ou selon un glob précis, tel/path/dir*
.-f
,--file=
: fera une copie miroir du seul fichier spécifié, ou selon un glob précis, tel que/path/*.txt
.-I GP
,--include-glob=GP
: inclue les fichiers correspondants au glob pattern. À-propos deGP
, voir la note ci-dessous.-i RX
,--include=RX
: inclue les fichiers correspondants à l’expression régulière. À-propos deRX
, voir la note ci-dessous.-L
,--dereference
: télécharge les liens symboliques comme étant des fichiers--no-overwrite
: supprime d’abord les fichiers et les recréer ensuite--overwrite
: ré-écrit les fichiers sans les supprimer en premier
-O
,--target-directory=
: cible le chemin ou l’URL-N
,--never-than=
: téléchargera seulement les fichiers les plus récents selon une date spécifiée--older-than=
: téléchargera seulement les fichiers anciens selon une date spécifiée--size-range=
: téléchargera seulement les fichiers ayant telle taille
-n
,--only-newer
: téléchargera seulement les fichiers les plus récents - dans ce cas, l’option-c
ne fonctionnera pas.--upload-older
: téléchargera sur la cible même les fichiers plus vieux que les actuels.--transfer-all
: transférera tous les fichiers, même ceux qui ressemblent à ceux existant sur la cible.
-P
,--parallel
: téléchargera N fichiers en même temps--loop
: répétera le miroir jusqu’à ce que plus aucun changement ne soit trouvé--on-change=
: exécutera la commande spécifiée lors d’un changement--use-pget
: utilisera l’outilpget
pour transférer chaque fichier
-p
,--no-perms
: ne paramétrera pas les permissions de fichiers--no-umask
: n’appliquera pas le mode umask
-R
,--reverse
: inverse le miroir-r
,--no-recursion
: ne parcourra pas les sous répertoires--recursion=
: parcourra les sous répertoires selon un mode choisi--no-symlinks
: ne créera pas les liens symboliques
-s
,--allow-suid
: paramétrera les bitssuid
etsgid
selon la source--allow-chown
: paramétrera les droits utilisateur et groupe sur les fichiers--ascii
: utilisera le mode de transfertascii
- ce qui implique l’option--ignore-size
.--ignore-size
: ignore la taille--ignore-time
: ignore l’heure de téléchargement--only-existing
: téléchargera seulement les fichiers déjà existant sur la cible--only-missing
: téléchargera seulement les fichiers non existant sur la cible.
-v
,--verbose
: restitue les informations de manière verbeuse ; il est possible de spécifier un niveau, tel que=level
.--log=
: écrit le retour des commandes lftp exécutées dans le fichier journal spécifié--max-errors=
: arrête l’exécution après N erreurs.--Move
: identique à l’option--Remove-source-dirs
.--Remove-source-dirs
: supprime les répertoires et les fichiers sources après le transfert - à utiliser avec précaution !--Remove-source-files
: supprime les fichiers sources après le transfert - à utiliser avec précaution !--script=
: lis les commandes lftp depuis un fichier, sans les exécuter. Autres noms de l’option :--just-print
, ou--dry-run
.--skip-noaccess
: ne pas essayer de transférer les fichiers qui n’ont pas d’accès en lecture.--use-cache
: utilise une liste de répertoire mis en cache
-X GP
,--exclude-glob=GP
: exclue les fichiers selon le pattern glob. À-propos deGP
, voir la note ci-dessous.--exclude-glob-from=
,--exclude-rx-from=
,--include-glob-from=
,--include-rx-from=
: inclura ou exclura les fichiers selon le fichier renfermant l’expression régulière ou le glob pattern fourni - un par ligne.
-x RX
,--exclude=RX
: exclue les fichiers selon l’expression régulière. À-propos deRX
, voir la note ci-dessous.
Notes :
GP
est un glob pattern à fournir, tel*.zip
RX
est une expression régulière à fournir- sachez qu’il existe énormément de notes relatives à certaines options, pour plus d’informations, veuillez lire le manpage.
Exemples
SFTP
Se connecter en ligne de commande :
$ lftp -p $port sftp://$user@$address
-p $port
: est le numéro de port de connexion vers le serveur.- Par défaut, pour SSH, c’est le
22
, mais cela dépend de votre configuration serveur.
- Par défaut, pour SSH, c’est le
$user
: l’identifiant de connexion$adress
: l’adresse ip ou le nom d’hôte FQDN du serveur sur lequel se connecter.
Dans un script shell :
/usr/local/bin/lftp -p $port sftp://$user@$host
Une des fonctionnalités intéressantes est le fait de pouvoir faire du “mirroring” - de la copie en miroir d’un ensemble de fichiers, répertoires vers un autre endroit ; l’équivalent de rsync -
Mirroring par SFTP
$ lftp -e "mirror -e -R /repertoire_local/ /repertoire_distant/ ; quit" -p $port sftp://$user@$host
Documentation
- le manpage :
man ltfp
- le site web : https://lftp.tech/
Historique
J’ai écrit historiquement cette documentation sur le wiki de la communauté “OpenBSD Pour Tous”.