Version 2.1 par Mélodie le 2026/04/01 11:01

Afficher les derniers auteurs
1 # Manuel de lftp
2
3 **lftp** est un logiciel de transfert de fichiers en ligne de commande. Il est puissant et fiable, et très utile dans le contexte de la gestion de serveurs distants. Il supporte les protocoles FTP, HTTP, FISH, SFTP, HTTPS et FTPS.
4
5 Il vient avec un fichier de configuration /etc/lftp.conf que l'on peut utiliser comme base pour une personnalisation. Il contient de nombreux exemples commentés.
6
7 Le fichier de configuration personnel doit être créé sous `$HOME/.config/lftp/`. Voici un exemple de fichier lftp.conf personnalisé:
8
9 ```
10 # Pour plus d'options vérifier les commentaires dans le fichier /etc/lftp.conf
11 # set ftp:ssl-allow false
12 # set xfer:clobber "on"
13 set ssl:verify-certificate no
14 set ftp:ssl-force yes
15 set ftp:anon-pass "mozilla@"
16 ```
17
18 La documentation officielle se trouve sur <https://lftp.yar.ru/>
19
20 <div style="height:1.5em;"></div>
21
22 # Commandes de base
23
24 ## FTP
25
26 ```
27 lftp ftp://login@ip # connexion à la racine du serveur
28 lftp ftp://login@ip:/repertoire-cible # connexion directe répertoire destination
29 lftp ftp://login@ip/repertoire-cible # idem sans le signe ':'
30 ```
31
32 Le mot de passe est demandé interactivement après connexion.
33
34 <div style="height:1.5em;"></div>
35
36 ## SFTP
37
38 Pareil que ci-dessus, mais avec `lftp sftp://…`
39
40 <div style="height:1.5em;"></div>
41
42 ## Commandes de navigation et d'information
43
44 ```
45 pwd # affiche le répertoire courant (distant)
46 lpwd # affiche le répertoire courant (local)
47 ls # liste les fichiers distants
48 lcd # affiche le répertoire local courant en essayant de changer de répertoire local
49 !ls # liste les fichiers locaux (! = exécution locale)
50 cd repertoire # change de répertoire distant
51 lcd repertoire # change de répertoire local
52 ```
53
54 <div style="height:1.5em;"></div>
55
56 ## Transferts de fichiers
57
58 ```
59 get <fichier> # télécharge le fichier distant choisi dans le répertoire local courant
60 get <fichier> -o /chemin/local/ # télécharge le fichier distant choisi vers un répertoire local spécifique
61 put <fichier> # envoie le fichier local choisi vers le répertoire distant courant
62 mget <fichier1 fichier2 fichier3…> # télécharge plusieurs fichiers choisis dans le répertoire local courant
63 mput <fichier1 fichier2 fichier3…> # envoie plusieurs fichiers choisis vers le répertoire distant courant
64 ```
65 <div style="height:1.5em;"></div>
66
67 ## Transferts de répertoires complets
68
69 Connecté au serveur :
70
71 ```
72 lftp login@serveur:/repertoire> mirror <dossier-distant> <dossier-local/> # télécharge un répertoire complet dans le répertoire local courant
73 lftp login@serveur:/repertoire> mirror --reverse <dossier-local/> <dossier-distant> # envoie le contenu d'un répertoire local complet vers le serveur distant
74 lftp login@serveur:/repertoire> mirror --reverse <dossier-local> <dossier-distant> # envoie un répertoire local complet vers le serveur distant
75
76 mirror --continue # reprend un transfert interrompu
77 mirror --delete # supprime à la destination ce qui n'existe plus à la source
78 mirror --parallel=4 # transferts parallèles
79 ```
80
81 <div style="height:1.5em;"></div>
82
83 ### Transferts parallèles
84
85 --parallel=N lance N transferts simultanément au lieu d'un seul à la fois. Utile pour les répertoires avec beaucoup de petits fichiers → au lieu d'attendre que chaque fichier soit terminé avant de passer au suivant, lftp en transfère plusieurs en même temps.
86
87 Connecté au serveur :
88
89 `lftp login@serveur:/repertoire> mirror --parallel=4 <dossier-distant/> <dossier-local/>`
90
91 =>le prompt est bloqué jusqu'à la fin du transfert.
92
93 <div style="height:1.5em;"></div>
94
95 Dans lftp interactif, lancer un mirror en arrière-plan :
96
97 `lftp login@serveur:/repertoire> mirror --parallel=4 <dossier-distant/> <dossier-local/> &`
98
99 => avec le signe '&' le prompt revient immédiatement, le transfert continue en arrière-plan. On peut continuer à taper des commandes selon le besoin.
100
101 <div style="height:1.5em;"></div>
102
103 ## Divers
104 ```
105 jobs  # affiche les transferts en cours
106 wait  # attend la fin des transferts en cours
107 queue  # met des commandes en file d'attente
108 exit / quit  # quitte lftp
109 ```
110
111 <div style="height:1.5em;"></div>
112
113 ### Divers - Utilisation concrète
114
115 _jobs_, _wait_ et _queue_ sont utiles quand on lance un transfert en tâche de fond depuis le prompt lftp, pour continuer à naviguer pendant ce temps :
116
117 ```
118 jobs  # voir l'état du transfert en cours
119 wait  # bloquer jusqu'à ce que le transfert soit terminé
120 queue permet d'enchaîner des commandes qui s'exécuteront l'une après l'autre :
121 queue mirror /rep1/ /dest1/
122 queue mirror /rep2/ /dest2/
123 queue mirror /rep3/ /dest3/
124 wait
125 ```
126
127 Ci-dessus lftp exécute les trois _mirrors_ séquentiellement sans intervention.
128
129 <div style="height:1.5em;"></div>
130
131 Mettre chaque queue en arrière-plan si on ne veut pas employer "wait" :
132 ```
133 queue mirror /rep1/ /dest1/ &
134 queue mirror /rep2/ /dest2/ &
135 queue mirror /rep3/ /dest3/ &
136 ```
137
138 /!\  là les trois tournent en parallèle simultanément : Si les trois destinations sont sur le même serveur risque de satureration de la connexion et/ou refus du serveur FTP /!\
139
140 => wait après les queues est recommandé en cas de transferts vers le même serveur.
141
142 <div style="height:1.5em;"></div>
143
144 ## Transferts de répertoires complets : syntaxe et options
145
146 Depuis le prompt lftp, déjà connecté au serveur source :
147
148 `mirror repertoire-source/ /chemin/local/repertoire-destination/`
149
150 ou
151
152 `mirror repertoire-source /chemin/local/`
153
154 => La présence du slash final `/` détermine le résultat
155
156 <div style="height:1.5em;"></div>
157
158 À garder en tête pour la lecture des exemples suivants :
159
160 * Avec `repertoire-source/` le contenu du répertoire est copié dans la destination, mais pas le répertoire lui-même.
161 * Avec `repertoire-source` le répertoire complet est copié dans la destination, contenu inclus.
162 * Le signe `~/` pour "home" sera à adapter en fonction de votre cas
163 * Préférez toujours vous déplacer dans le répertoire de travail, qu'il soit local ou distant
164
165 <div style="height:1.5em;"></div>
166
167 Depuis le terminal bash, non connecté, récupère le contenu complet du répertoire distant:
168
169 `lftp -e "mirror <sftp://login:mdp@serveur:/repertoire-source/> /repertoire-local/destination/ ; quit"`
170
171 <div style="height:1.5em;"></div>
172
173 ### Options
174
175 * `--reverse` : inverse le sens du transfert : envoie du local vers le distant
176
177 Ex : `mirror --reverse ~/repertoire-local/ repertoire-distant/`
178
179 <div style="height:1.5em;"></div>
180
181 * `--continue` : reprend un transfert interrompu, ne retransfère que ce qui manque ou a été modifié
182
183 Ex : `mirror --continue ~/repertoire-source/ /repertoire-local/destination/`
184
185 <div style="height:1.5em;"></div>
186
187 * `--delete` : supprime à la destination les fichiers qui n'existent plus à la source — à utiliser avec précaution
188
189 Ex : `mirror --delete ~/repertoire-source/ /repertoire-local/destination/`
190
191 <div style="height:1.5em;"></div>
192
193 `--parallel=N` : lance N transferts simultanément — utile pour les répertoires contenant de nombreux petits fichiers
194
195 Ex : mirror --parallel=4 ~/repertoire-source/ /repertoire-local/destination/
196
197 <div style="height:1.5em;"></div>
198
199 `--verbose` : affiche chaque fichier transféré au fur et à mesure
200
201 Ex : mirror --verbose ~/repertoire-source/ /repertoire-local/destination/
202
203 <div style="height:1.5em;"></div>
204
205 `--log=fichier.log` : enregistre les opérations effectuées dans un fichier : /!\ ne capture pas les erreurs (utiliser la redirection 2>&1 pour cela) /!\
206
207 Ex : mirror --log=transfert.log ~/repertoire-source/ /repertoire-local/destination/
208
209 <div style="height:1.5em;"></div>
210
211 ## Mirroring entre deux serveurs distants
212
213 Transfert direct d'un serveur vers un autre, sans passer par le local. La commande s'écrit en une seule ligne depuis le terminal bash, avec les deux URIs complètes — le premier argument est la **source**, le second est la **destination** :
214
215 `lftp -e "mirror --continue --verbose <sftp://login:mdp@serveur1/repertoire-source/> <ftp://login:mdp@serveur2/repertoire-destination/> ; quit"`
216
217 Les protocoles source et destination peuvent être différents (sftp, ftp, ftps), lftp gère la conversion de façon transparente.
218
219 /!\ À noter : Les mots de passe apparaissent en clair dans la ligne de commande /!\
220
221 De là, si besoin, pour éviter l'enregistrement dans l'historique bash, préfixer la commande d'un espace. Cela nécessite que `HISTCONTROL` soit défini à `ignorespace` ou `ignoreboth` :
222
223 `lftp -e "mirror --continue --verbose <sftp://login:mdp@serveur1/repertoire-source/> <ftp://login:mdp@serveur2/repertoire-destination/> ; quit"`
224
225 => Le slash final sur les deux URIs est important : il garantit que le contenu du répertoire source va dans le répertoire destination, et non que le répertoire source est recréé à l'intérieur.
226
227 => Différence entre `; quit` et `&& quit` :
228
229 * `; quit` : quitte dans tous les cas en fin de transfert
230 * `&& quit` : ne quitte que si le mirror s'est terminé sans erreur
231
232 => Sans `--delete`, le mirror est additif : il n'efface rien à la destination.
233
234 => Pour capturer les erreurs dans un fichier log, rediriger stdout et stderr :
235
236 `lftp -e "mirror --continue --verbose <sftp://login:mdp@serveur1/repertoire-source/> <ftp://login:mdp@serveur2/repertoire-destination/> && quit" > transfert.log 2>&1`
237
238 ## Quitter la connexion
239
240 lftp login@serveur:/repertoire> bye
241
242 ou `quit`ou `exit`
243
244 ---
245
246 /!\ Détail : Le man ne mentionne pas _bye_, il ne documente que _exit_ et _quit_ implicitement via « ftp:use-quit ».
247
248 Ce que le man dit sur _exit_ : si des jobs sont en arrière-plan, _exit_ détache lftp du terminal et le fait continuer en arrière-plan (comportement similaire à _nohup_) plutôt que de tout tuer : les transferts continuent.
249
250 Par ailleurs _exit kill_ force l'arrêt de tous les jobs avant de quitter.
251
252 À vérifier : _bye_ pourrait être un alias de _exit_ ou de _quit_ hérité de la tradition FTP (les serveurs FTP répondent souvent _bye_ à la déconnexion), mais le man ne le mentionne pas.

Langues / Languages

🇫🇷 Français | 🇬🇧 English