Synthèse des commandes SFTP en CLI
Je sais bien que la plupart du temps, vous utilisez un client graphique pour ce genre d’activité… surement FileZilla même. Mais pour une raison x ou y – ou tout simplement pour le plaisir de jouer le barbu – il arrive un jour où vous devez vous connectez en SFTP en ligne de commande. Rien de bien complexe rassurez-vous. Voyons rapidement comment s’en sortir.
Pour être très franc, je n’avais jamais non plus eu ce besoin jusqu’à très récemment. Ayant un accès ssh à quasi tous mes serveurs et aux environnements de mes clients, un mix de scp, rsync, ansible et git clone pour les deploy m’ont toujours gardé à l’écart du FTP et SFTP.
Soyons honnête, j’ai toujours un FileZilla à portée de main pour ces hébergements mutus auxquels ont n’a d’autre accès qu’en ftp. Bref. Soyons fous, rangeons le FZ et sortons la CLI.
Pour se connecter, rien de sorcier, c’est quasi comme en ssh : sftp [-P port] login@host
.
Vous verrez que les commandes sont les mêmes que celles que vous connaissez déjà en bash. La seule différence est que sftp permet de gérer deux dimensions à la fois : les fichiers distants (sur le serveur) et les fichiers locaux (sur le client).
Lorsque nous voulons effectuer une action en local, il suffit de préfixer la commande avec l
. Les détails dans le tableau ci-dessous.
Commande | Description |
---|---|
pwd | Affiche le dossier courant |
lpwd | Affiche le dossier courant local (client) |
cd | Change de répertoire |
lcd | Change de répertoire en local |
ls | Liste les fichiers et répertoires du dossier courant |
lls | Liste les fichiers et répertoires du dossier courant sur le client |
mkdir | Créer un répertoire |
lmkdir | Créer un répertoire en local |
get | Télécharger des fichiers depuis le serveur vers le client (l’option -r permet d’envoyer un répertoire) |
put | Envoyer des fichiers depuis le client vers le serveur (l’option -r permet d’envoyer un répertoire) |
rm | Supprime un fichier |
rmdir | Supprime un répertoire |
exit | Je pense que celui-ci se passe d’explications |
help | Afficher l’aide |
LFTP, le client qui vous veut du bien
Conseillé par @BXT dans les commentaires, LFTP est un client bien plus puissant que le SFTP natif. Ce client supporte de nombreux protocoles, mais le cas qui nous intéresse ici est bien l’usage du sftp. Pour se connecter avec ce protocole, il va falloir lui spécifier dans l’url :
lftp [-p port] protocol://login:password@host
# exemple
lftp sftp://buzut:azerty@127.0.0.10
Chose assez étrange, même si vous utilisez une connexion par clef (et que vous ne spécifiez pas de mot de passe), l’oiseau vous le demande quand même, vous n’avez cas spécifier n’importe quoi ou juste “entrer”.
Mais alors, pourquoi utiliser lftp plutôt que sftp ? Le premier supporte l’auto-complétion, l’effacement récursif (vous pouvez faire rm -r un_dossier/
), sans vous embêter à d’abord effacer manuellement tout son contenu. Il supporte aussi le mirrorring un peu à la rsync en upload et en download. Pratique pour ne répercuter que les modifications !
# -R pour inverser (de la machine locale vers le serveur)
lftp > mirror [-R] repertoire_source repertoire_dest
Dans les options intéressantes du mode mirror, on notera --delete
qui permet d’effacer les fichiers du répertoire de destination qui ne sont pas présents dans le répertoire source – comme dans rsync
– et --parallel[=N]
qui permet de paralléliser les téléchargements.
On n’hésitera donc pas longtemps à troquer sftp contre lftp pour tout autre chose qu’un trivial upload.
Et voilà, vite fait, bien fait. Vous êtes maintenant autonomes en sftp ! Easy, wasn’t it?
Commentaires
Rejoignez la discussion !