FTP

            Daniel Hirschkoff (dh@cermics.enpc.fr)

20 février 1995

ftp est une commande qui sert au transfert de fichiers. Comme nous allons le voir, elle permet à la fois d’aller chercher des fichiers ou de les envoyer quelque part.

1 Transfert de fichiers de compte à compte

1.1 Se connecter

À l’aide de ftp, on établit une connection avec une autre machine, ce qui va permettre l’échange de fichiers. Ceci est possible lorsque vous possédez un compte sur une machine différente de la machine sur laquelle vous êtes en train de travailler. C’est le cas par exemple si vous êtes à Noisy et que vous possédez un compte à Paris 6. Supposons par exemple que votre login soit dh, que vous possédez un compte à Noisy, ainsi qu’un compte à Paris à l’E.N.P.C., avec le login hirschko (bon, d’accord, c’est moi l’exemple…). Vous vous connectez alors sur une machine de Paris par la commande ftp (adresse Paris):

styx:ftp sparc1.enpc.fr
Connected to sparc1.enpc.fr.
220 sparc1 FTP server (SunOS 4.1) ready.
Name (sparc1.enpc.fr:dh):

Vous entrez alors votre login sur la machine destinataire, ainsi que votre mot de passe:

Name (sparc1.enpc.fr:dh): hirschko
331 Password required for hirschko.
Password:
230 User hirschko logged in.
ftp>

Vous avez alors établi la connection. Si vous avez commis une erreur lors de votre identification (mauvais login ou mauvais mot de passe), il faut quitter ftp par la commande bye et recommencer. Note importante: dans la suite, nous allons désigner par ici le compte correspondant à la machine sur laquelle vous vous êtes logués, et par là-bas le compte avec lequel vous avez établi la connection par l’intermédiaire de la commande ftp.

1.1.1 Changer de sous-répertoires

Une fois la connection établie, vous vous trouvez là-bas dans votre home directory, et ici dans le répertoire où vous avez appelé la commande ftp. Pour vous déplacer dans le compte qui se trouve là-bas, utilisez la commande cd comme sous shell. Pour vous déplacer ici, utilisez lcd (comme local change directory). La commande ls, similaire à celle du shell, vous permet d’inspecter les sous-répertoires du compte situé là-bas^{1}.

1.1.2 Envoyer, recevoir

Une fois que vous êtes dans le bon sous-répertoire, à la fois ici et là-bas, vous pouvez transférer des fichiers. Il faut avant tout passer en mode binaire, à travers la commande bin; ceci a pour effet d’empécher la conversion de certains caractères au moment du transfert, conversion qui pourrait s’avérer souvent néfaste. Pour envoyer un fichier, utilisez la commande put, pour le recevoir get. Ces commandes sont à utiliser avec le nom exact du fichier.

230 User hirschko logged in.
ftp> cd Stage92
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 ASCII data connection for /bin/ls (192.54.211.129,4704) (0 bytes).
Rapport92
analyse
coq
oldefs
oldefs.ps
toto.tex

1. Pour inspecter les sous-répertoires ici, on ne dispose pas de commande propre à ftp.

La meilleure chose à faire est de lancer ftp dans le bon répertoire. Si vraiment on veut faire un ls local, il faut lancer un shell par la commande !, dont on sort par exit.

226 ASCII Transfer complete.
54 bytes received in 0.016 seconds (3.3 Kbytes/s)
ftp> get toto.tex
200 PORT command successful.
150 ASCII data connection for toto.tex (192.54.211.129,4705) (5 bytes).
226 ASCII Transfer complete.
local: toto.tex remote: toto.tex
6 bytes received in 0.026 seconds (0.22 Kbytes/s)
ftp>
1.1.3 mget et mput

Lorsque l’on veut transférer plusieurs fichiers du même type (par exemple tous les fichiers commençant par to, ou bien tous les fichiers se terminant par .tex), on dispose des commandes mput et mget, qui s’utilisent de la manière suivante:

ftp> ls
200 PORT command successful.
150 ASCII data connection for /bin/ls (192.54.211.129,4708) (0 bytes).
RapportDea.aux
RapportDea.bib
RapportDea.dvi
RapportDea.ftex
RapportDea.log
RapportDea.toc
SlidesDea.dvi
SlidesDea.ftex
SlidesDea.ps
angl.ftex
beginning.sty
g1.eps
g2.eps
g3.eps
g4.eps
infer.sty
226 ASCII Transfer complete.
410 bytes received in 0.11 seconds (3.7 Kbytes/s)
ftp> mget *.ftex
mget RapportDea.ftex? y
200 PORT command successful.
150 ASCII data connection for RapportDea.ftex (192.54.211.129,4710) (183052 bytes).
226 ASCII Transfer complete.
local: RapportDea.ftex remote: RapportDea.ftex

188096 bytes received in 39 seconds (4.7 Kbytes/s)
mget SlidesDea.ftex? y
200 PORT command successful.
150 ASCII data connection for SlidesDea.ftex (192.54.211.129,4711) (6077 bytes).
226 ASCII Transfer complete.
local: SlidesDea.ftex remote: SlidesDea.ftex
6389 bytes received in 6.5 seconds (0.96 Kbytes/s)
mget angl.ftex? y
200 PORT command successful.
150 ASCII data connection for angl.ftex (192.54.211.129,4712) (2201 bytes).
226 ASCII Transfer complete.
local: angl.ftex remote: angl.ftex
2247 bytes received in 1.1 seconds (2 Kbytes/s)

Vous remarquez que le système demande à chaque fois la confirmation avant le transfert (p. ex. transfert RapportDea.ftex?). On peut éviter cela en tapant la commande prompt avant de lancer la commande mget ou mput.

1.2 Regrouper, compresser des fichiers

Si l’on doit transférer plusieurs fichiers, typiquement tous les fichiers contenus dans un sous-répertoire, il est bon de les regrouper en un seul fichier. Cela se fait avec la commande tar. Placez-vous (à l’aide de cd) dans le sous-répertoire contenant le répertoire que vous voulez transférer, et tapez la

commande tar cvf (nom du fichier).tar  (nom du répertoire). Ceci

aura pour effet de créer le fichier (nom du fichier).tar, qui regroupera tous les fichiers contenus dans le répertoire (nom du répertoire). Pour diminuer la durée du transfert, il est préférable de compresser les fichiers de taille non négligeable (notamment les fichiers obtenus à l’aide de la commande tar décrite ci-dessus). La commande pour compresser le fichier

nommé fichier1 est gzip fichier1, qui génère le fichier fichier1.gz, de

taille inférieure au fichier de départ. Il est fréquent de rencontrer des fichiers dont le nom se termine par le double suffixe .tar.gz, qui indique qu’ils proviennent du regroupement de plusieurs fichiers suivi d’une compression. Une fois le transfert effectué, on décompresse un fichier se terminant par

.gz à l’aide de la commande gunzip. Similairement, on “reconstitue” un répertoire qui a été crée par la commande tar à l’aide de la commande tar

-xvf (nom du fichier).

Pour résumer, indiquons les opérations à effectuer pour transférer tout le contenu d’un sous répertoire nommé Rep1:

– Regrouper les fichiers du répertoire: tar cvf fichier.tar Rep1

– Compresser le fichier obtenu: gzip fichier.tar

– Transférer le fichier: ftp, cd, get,...

– Décompresser le fichier reçu: gunzip fichier.tar.gz

   – Créer le répertoire Rep1: tar -xvf fichier.tar

2 ftp anonyme

2.1 Se connecter

Une autre grande utilisation de ftp est celle qui permet de récupérer des fichiers (articles et rapports de recherche, documents divers, applications…) sur des sites ftp qui sont en fait des serveurs. Il y en a un peu partout dans le monde entier, et ils contiennent des choses très diverses. Comme on ne peut pas avoir de compte sur chacun de ces serveurs, on utilise le ftp anonyme, de la manière suivante:

styx:ftp pascal.ibp.fr
Connected to pascal.ibp.fr.
220-
220-    -- Bienvenue sur le serveur ftp de l'IBP et du CCR Jussieu --
220-Utilisez le compte `anonymous' avec votre adresse e-mail comme mot de passe
220-    Merci de signaler les problemes eventuels a ftpmaint@ibp.fr
220-
220-        -- Welcome on the IBP and CCR Jussieu ftp server --
220-    Please login as `anonymous' with your e-mail address as password
220-         Report unusual problems to ftpmaint@ibp.fr
220-
220-
220 pascal FTP server (Version wu-2.4(1) Sat Jun 4 18:47:39 MET DST 1994) ready.
Name (pascal.ibp.fr:dh): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:

Comme on le voit sur l’exemple ci-dessus, la réponse ftp est une sorte de sésame qui vous assure l’accès au serveur en question (il suffit en effet ensuite de rentrer son adresse email en guise de mot de passe). Le sésame le plus utilisé pour le ftp anonyme est ftp, anonymous marche aussi très souvent.

La grande question en ce qui concerne le ftp anonyme est de connaître l’adresse d’un serveur, elle est traitée dans la sous-section intitulée “Où trouver quoi?”. Il peut arriver que l’accès au serveur ne soit pas possible, soit que ce dernier ait changé d’adresse, soit que le nombre limite d’utilisateurs ait été atteint: ce quota existe pour ne pas surcharger la ligne du serveur ftp.

2.2 Inspecter un site de ftp anonyme

Les sites de ftp anonyme sont généralement de grande taille, ils contiennent beaucoup de sous-répertoires et de fichiers. Si l’on ne connaît pas exactement l’emplacement et le nom des fichiers que l’on souhaite récupérer, il faut inspecter le site de manière intelligente. Il ne faut pas en particulier lancer la commande ls -lR, qui renvoie récursivement le contenu de tous les sous-répertoires; généralement, les sites contiennent des fichiers nommés ls-lR, contenant le résultat de cette commande; ces fichiers sont souvent compressés, et permettent ainsi le transfert de fichiers de taille réduite (il faut se rendre compte que lorsque l’on lance la commande ls -lR, on provoque le transfert de nombreuses données). Les serveurs ftp anonymes sont aussi parsemés de fichiers intitulés README, de petite taille, et qui contiennent des informations sur le répertoire où l’on se trouve. Avant de se lancer dans un grand transfert, il vaut mieux s’assurer de ce que l’on fait en transférant le fichier README et en en lisant le contenu. Signalons enfin une possibilité offerte par de nombreux serveurs, à savoir la compression “au vol”: si le serveur contient un fichier toto, tapez la commande get toto.gz, qui indiquera au serveur de comprimer le fichier toto avant de le transférer. Si le serveur n’est pas capable de faire cela, il vous le signalera en répondant qu’il ne peut trouver le fichier toto.gz; il faut alors se résoudre à transférer le fichier toto non comprimé.

2.3 Où trouver quoi?

2.3.1 Les FAQs

Une bonne chose à faire lorsque l’on s’intéresse à un sujet particulier est de lire les News le concernant (il est désormais assez difficile de trouver un sujet non traité dans les News). En général à chaque groupe de News correspond un fichier nommé FAQ (comme “Frequently Asked Questions”), qui contient de nombreuses adresses où trouver des fichiers en relation avec le sujet du groupe. Reste à trouver ces fichiers FAQ si on les trouve pas dans les News: une bonne partie d’entre eux se trouve à l’adresse grasp.insa-lyon.fr (serveur ftp anonyme), dans le répertoire /pub/faq.

2.3.2 L’application xarchie

xarchie est une application qui sert de boussole dans la recherche ftp de publications. Elle s’utilise de la manière suivante: une fois l’application lancée par la commande xarchie, on rentre dans la rubrique “Search Term” un mot caractéristique du domaine qui nous intéresse; le mieux pour cela est d’avoir choisi dans le menu Settings - Search Type l’option Substr, qui correspond à la recherche d’une sous-chaîne de caractères, plutôt qu’à la recherche d’une chaîne exacte (à moins d’être sûr de son coup et de connaître exactement le titre d’un article, par exemple). Il faut ensuite indiquer à xarchie un “hôte” pour la recherche, autrement dit une base de donnée où effectuer cette recherche; ceci se fait dans le menu Settings - Archie Host, en tenant compte du pays choisi pour accroître ses chances de réussite. On tape ensuite sur Enter pour déclencher la recherche. Si elle ne donne rien, il faut penser à changer de Host dans le menu Settings - Archie Host, certains sites pouvant se révéler obsolètes. En cas de succès, on voit s’afficher une liste d’adresses ftp, dans la colonne de gauche. Il suffit alors de cliquer sur l’une de ces adresses pour faire apparaître le(s) sous-répertoire(s) trouvé(s) par la recherche.

2.4 L’éthique du ftpiste

Il y a un certain nombre de principes à respecter lorsque l’on fait du ftp, afin de ne pas trop gêner les utilisateurs locaux (à Noisy) ainsi que les utilisateurs du site sur lequel vous vous connectez par ftp:

– Si vous voulez récupérer autre chose que des publications (logiciels ou images), assurez-vous que personne ne les possède déjà ici, pour éviter un transfert inutile.

– Commencer par chercher en France: La connexion en France est gratuite et plus rapide. Il y a en France un gros serveur, à l’adresse pascal.ibp.fr, qui est le miroir de nombreux sites de par le monde, c’est-à-dire qu’il contient une copie régulièrement actualisée du contenu de ces sites; il s’agit de nombreux logiciels (Unix, PC et autres), qu’il est inutile d’aller chercher ailleurs. Si la recherche en France ne donne rien, il faut procéder par cercles concentriques, à savoir d’abord l’Europe (certains serveurs y sont gratuits), et en dernier lieu le reste du monde, où les serveurs sont payants.

– Ne pas utiliser Mosaic: le logiciel Mosaic, pour ceux qui le connaissent, permet de faire du transfert de fichiers par ftp; pour ce faire, à chaque nouvelle opération, il se reconnecte à chaque fois, ce qui ralentit considérablement les manipulations.