Version 1.1 par Mélodie le 2026/04/01 08:03

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 # Commandes de base
21
22 ## FTP
23
24 ```
25 lftp ftp://login@ip # connexion à la racine du serveur
26 lftp ftp://login@ip:/repertoire-cible # connexion directe répertoire destination
27 lftp ftp://login@ip/repertoire-cible # idem sans le signe ':'
28 ```
29
30 Le mot de passe est demandé interactivement après connexion.
31
32 ## SFTP
33
34 Pareil que ci-dessus, mais avec `lftp sftp://…`
35
36 ## Commandes de navigation et d'information
37
38 ```
39 pwd # affiche le répertoire courant (distant)
40 lpwd # affiche le répertoire courant (local)
41 ls # liste les fichiers distants
42 lcd # affiche le répertoire local courant en essayant de changer de répertoire local
43 !ls # liste les fichiers locaux (! = exécution locale)
44 cd repertoire # change de répertoire distant
45 lcd repertoire # change de répertoire local
46 ```
47
48 ## Transferts de fichiers
49
50 ```
51 get <fichier> # télécharge le fichier distant choisi dans le répertoire local courant
52 get <fichier> -o /chemin/local/ # télécharge le fichier distant choisi vers un répertoire local spécifique
53 put <fichier> # envoie le fichier local choisi vers le répertoire distant courant
54 mget <fichier1 fichier2 fichier3…> # télécharge plusieurs fichiers choisis dans le répertoire local courant
55 mput <fichier1 fichier2 fichier3…> # envoie plusieurs fichiers choisis vers le répertoire distant courant
56 ```
57
58 ## Transferts de répertoires complets
59
60 Connecté au serveur :
61
62 ```
63 lftp login@serveur:/repertoire> mirror <dossier-distant> <dossier-local/> # télécharge un répertoire complet dans le répertoire local courant
64 lftp login@serveur:/repertoire> mirror --reverse <dossier-local/> <dossier-distant> # envoie le contenu d'un répertoire local complet vers le serveur distant
65 lftp login@serveur:/repertoire> mirror --reverse <dossier-local> <dossier-distant> # envoie un répertoire local complet vers le serveur distant
66
67 mirror --continue # reprend un transfert interrompu
68 mirror --delete # supprime à la destination ce qui n'existe plus à la source
69 mirror --parallel=4 # transferts parallèles
70 ```
71
72 ### Transferts parallèles
73
74 --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.
75
76 Connecté au serveur :
77
78 lftp login@serveur:/repertoire> mirror --parallel=4 <dossier-distant/> <dossier-local/>
79
80 =>le prompt est bloqué jusqu'à la fin du transfert.
81
82 Dans lftp interactif, lancer un mirror en arrière-plan :
83
84 lftp login@serveur:/repertoire> mirror --parallel=4 <dossier-distant/> <dossier-local/> &
85
86 => avec le signe '&' le prompt revient immédiatement, le transfert continue en arrière-plan. On peut continuer à taper des commandes selon le besoin.
87
88 ## Divers
89
90 jobs  # affiche les transferts en cours
91 wait  # attend la fin des transferts en cours
92 queue  # met des commandes en file d'attente
93 exit / quit  # quitte lftp
94
95 ### Divers - Utilisation concrète
96
97 _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 :
98
99 ```
100 jobs  # voir l'état du transfert en cours
101 wait  # bloquer jusqu'à ce que le transfert soit terminé
102 queue permet d'enchaîner des commandes qui s'exécuteront l'une après l'autre :
103 queue mirror /rep1/ /dest1/
104 queue mirror /rep2/ /dest2/
105 queue mirror /rep3/ /dest3/
106 wait
107 ```
108
109 Lftp exécute les trois _mirrors_ séquentiellement sans intervention.
110
111 Mettre chaque queue en arrière-plan si on ne veut pas employer "wait"
112
113 ```
114 queue mirror /rep1/ /dest1/ &
115 queue mirror /rep2/ /dest2/ &
116 queue mirror /rep3/ /dest3/ &
117 ```
118
119 /!\  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 /!\
120
121 => wait après les queues est recommandé en cas de transferts vers le même serveur.
122
123 ## Transferts de répertoires complets : syntaxe et options
124
125 Depuis le prompt lftp, déjà connecté au serveur source :
126
127 mirror repertoire-source/ /chemin/local/repertoire-destination/
128
129 ou
130
131 mirror repertoire-source /chemin/local/
132
133 => La présence du slash final `/` détermine le résultat
134
135 À garder en tête pour la lecture des exemples suivants :
136
137 * Avec `repertoire-source/` le contenu du répertoire est copié dans la destination, mais pas le répertoire lui-même.
138 * Avec `repertoire-source` le répertoire complet est copié dans la destination, contenu inclus.
139 * Le signe `~/` pour "home" sera à adapter en fonction de votre cas
140 * Préférez toujours vous déplacer dans le répertoire de travail, qu'il soit local ou distant
141
142 Depuis le terminal bash, non connecté, récupère le contenu complet du répertoire distant: `lftp -e "mirror <sftp://login:mdp@serveur:/repertoire-source/> /repertoire-local/destination/ ; quit"`
143
144 ### Options
145
146 * `--reverse` : inverse le sens du transfert : envoie du local vers le distant
147
148 Ex : `mirror --reverse ~/repertoire-local/ repertoire-distant/`
149
150 <div style="height:1.5em;"></div>
151
152 * `--continue` : reprend un transfert interrompu, ne retransfère que ce qui manque ou a été modifié
153
154 Ex : `mirror --continue ~/repertoire-source/ /repertoire-local/destination/`
155
156 <div style="height:1.5em;"></div>
157
158 * `--delete` : supprime à la destination les fichiers qui n'existent plus à la source — à utiliser avec précaution
159
160 Ex : `mirror --delete ~/repertoire-source/ /repertoire-local/destination/`
161
162 <div style="height:1.5em;"></div>
163
164 `--parallel=N` : lance N transferts simultanément — utile pour les répertoires contenant de nombreux petits fichiers
165
166 Ex : mirror --parallel=4 ~/repertoire-source/ /repertoire-local/destination/
167
168 <div style="height:1.5em;"></div>
169
170 `--verbose` : affiche chaque fichier transféré au fur et à mesure
171
172 Ex : mirror --verbose ~/repertoire-source/ /repertoire-local/destination/
173
174 <div style="height:1.5em;"></div>
175
176 `--log=fichier.log` : enregistre les opérations effectuées dans un fichier : /!\ ne capture pas les erreurs (utiliser la redirection 2>&1 pour cela) /!\
177
178 Ex : mirror --log=transfert.log ~/repertoire-source/ /repertoire-local/destination/
179
180 <div style="height:1.5em;"></div>
181
182 ## Mirroring entre deux serveurs distants
183
184 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** :
185
186 `lftp -e "mirror --continue --verbose <sftp://login:mdp@serveur1/repertoire-source/> <ftp://login:mdp@serveur2/repertoire-destination/> ; quit"`
187
188 Les protocoles source et destination peuvent être différents (sftp, ftp, ftps) — lftp gère la conversion de façon transparente.
189
190 /!\ Les mots de passe apparaissent en clair dans la ligne de commande /!\
191
192 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` :
193
194 `lftp -e "mirror --continue --verbose <sftp://login:mdp@serveur1/repertoire-source/> <ftp://login:mdp@serveur2/repertoire-destination/> ; quit"`
195
196 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.
197
198 Différence entre `; quit` et `&& quit` :
199
200 * `; quit` : quitte dans tous les cas en fin de transfert
201 * `&& quit` : ne quitte que si le mirror s'est terminé sans erreur
202
203 Sans `--delete`, le mirror est additif : il n'efface rien à la destination.
204
205 Pour capturer les erreurs dans un fichier log, rediriger stdout et stderr :
206
207 lftp -e "mirror --continue --verbose <sftp://login:mdp@serveur1/repertoire-source/> <ftp://login:mdp@serveur2/repertoire-destination/> && quit" > transfert.log 2>&1
208
209 ## Quitter la connexion
210
211 lftp login@serveur:/repertoire> bye
212
213 ou `quit`ou `exit`
214
215 ---
216
217 Le man ne mentionne pas _bye_, il ne documente que _exit_ et _quit_ implicitement via « ftp:use-quit ».
218
219 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.
220
221 Par ailleurs _exit kill_ force l'arrêt de tous les jobs avant de quitter.
222
223 À 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 distingue pas.

Langues / Languages

🇫🇷 Français | 🇬🇧 English