• LINUX > FTP

      CONNEXION

      ftp domain.com
      ftp 192.168.0.1
      ftp user@ftpdomain.com

      User & Password

      Name: anonymous
      Password:
      230 Login successful.
      Remote system type is UNIX.
      Using binary mode to transfer files.
      ftp>

      LES RÉPERTOIRES

      Lister les répertoires:

      ftp> ls
      200 PORT command successful. Consider using PASV.
      150 Here comes the directory listing.
      directory list
      ....
      ....
      226 Directory send OK.

      Changer de répertoire :

      ftp> cd directory
      250 Directory succesfully changed.

      Télécharger des fichiers

      Il faut se placer dans le bon répertoire local, sinon le fichier sera téléchargé dans le dossier où on aura lancer le ftp :

      lcd /home/user/monDossier
      get fichier.ext
      local: fichier.ext remote: fichier.ext
      200 PORT command successful. Consider using PASV.
      150 Opening BINARY mode data connection for file (xxx bytes).
      226 File send OK.
      933 bytes received in 0.00 secs (1.112 MB/s).

       

      Plusieurs fichiers :

      mget *.xls

      Uploader des fichiers

      put fichier.ext
      put /chemin/fichier.ext

       

      Plusieurs fichiers :

      mput *.xls

      Quitter FTP

      bye
      exit
      quit

       

      Pour connaître toutes les commandes internes :

      ftp> help

      Guide pour débutant

      Types de transferts de fichiers

      Après vous être identifié sur un site ftp, ftp vous indiquera le mode de transfert de fichier. Dans notre cas, c’est le mode binaire. Le mode binaire transfère les fichiers, octet par octet, en les conservant tels qu’ils sont sur le serveur FTP. Le mode Ascii, lui, téléchargera le texte directement. Vous pouvez entrer ascii ou binary pour changer de mode pendant la connexion.

      Vous souhaitez télécharger les sources du noyau de votre système, donc vous laissez le type du transfert en mode binaire. Le mode binaire est aussi le mode que vous utiliserez pour transférer des fichiers qui ne sont pas des fichiers textes — comme des images, des archives (zip/gzip), des programmes exécutables, et cætera. En cas de doute, utilisez le mode binaire.

      Explorer et voir la liste des fichiers

      Si la commande vous affiche trop de fichiers, et que la liste dépasse la hauteur de l’écran, vous pouvez utiliser la combinaison de touches Shift+PageUp pour revenir vers le début de la liste. Ceci marche sous Linux en mode console avec xterm ou rxvt.

      Les archives publiques disposées sur les serveurs FTP se trouvent généralement dans le répertoire /pub. Dans cet exemple, vous savez déjà que les sources du noyau se trouvent dans le répertoire /pub/Linux/kernel, doncvous entrez la commande suivante pour vous rendre dans ce répertoire.

      ftp> cd pub/Linux/kernel
      250-README for kernel
      250-
      250-What you'll find here: kernel sources and patches
      250-
      250-
      250 CWD command successful.

      Les messages que vous voyez, précédés de "250″, sont les messagesd’informations transmis par le serveur. Dans notre cas, le serveur ftp est configuré pour vous envoyer automatiquement le fichier README et l’afficher lorsque vous entrez dans le répertoire.

      Télécharger et uploader des fichiers

      Maintenant, après que vous ayez utilisé la commande ls, vous constatez que vous pouvez vous rendre dans le répertoire du noyau de votre choix (au moment où j’écris ce document, la version la plus récente est la v2.2). Accédez au répertoire et regardez les fichiers contenus dans le répertoire. Le fichier que vous souhaitez télécharger est linux-2.2.13.tar.gz. Donc vous entrez ceci :

      ftp> get linux-2.2.13.tar.gz
      local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz
      200 PORT command successful.
      150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes).

      Le programme ftp commence à sauvegarder le fichier distant versvotre ordinateur.

      Si vous souhaitez enregistrer le fichier distant vers le fichier toto.tar.gz, vous devez lespécifier en indiquant les paramètres suivants :

      ftp> get linux-2.2.13.tar.gz toto.tar.gz
      local: toto.tar.gz remote: linux-2.2.13.tar.gz
      200 PORT command successful.
      150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes).

      Si vous souhaitez télécharger plus d’un fichier à la fois, vouspouvez utiliser la commande mget. Vous pouvezutiliser la commande avec un nombre limité de nom de fichier, enutilisant les options prévues à cet effet. Par exemple :

      ftp> mget linux*

      Cette commande va télécharger les fichiers commençant par lachaîne de caractère "linux". Normalement, la commande vous demanderaune confirmation de téléchargement de chaque fichier. Vous pouvezmodifier cette option l’aide de la commande prompt.

      Maintenant, disons que vous venez d’écrire une partie d’unprogramme, et que vous souhaitez transférer ce programme sur le serveurde MetaLab (uploader). Tout d’abord, il faut changer de répertoire pouraller dans le dossier /incoming (la plupart des serveurs FTP publicspossèdent un dossier appelé incoming ou uploads, où des fichierspeuvent être uploadés), donc vous utilisez la commande d’upload :

      ftp> cd /incoming
      ftp> put toto.tar.gz
      local: toto.tar.gz remote: toto.tar.gz
      200 PORT command successful.
      150 Opening BINARY mode data connection for toto.tar.gz.
      226 Transfer complete.
      10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec)

      La commande put s’utilise comme lacommande get, donc vous pouvezutiliser la commande mput pour uploader plusieurs fichiers en mêmetemps. Vous pouvez aussi uploader un fichier de votre disque dur sur leserveur avec un nom différent, en spécifiant le nouveau nom de fichiercomme argument.

      Mais comment uploader le fichier toto.tar.gz qui ne setrouve pas dans le répertoire local en cours ? Vous pouvez changer derépertoire local en utilisant la commande lcd :

      ftp> lcd /home/toto/
      Local directory now /home/toto

      Utiliser des commandes shell

      Le client ftp permet l’utilisation du point d’exclamation (!)pour effectuer des commandes locales. Par exemple, pour afficher laliste des fichiers dans le répertoire local en cours, entrezceci :

      ftp> !ls

      Cette commande appelle les fonctions du shell, et utilise lacommande indiquée après le "!". Vous pouvez utiliser n’importe quellecommande que votre shell supporte en appelant le "!". Notez que !cd nechangera pas de répertoire local, c’est pourquoi la commande lcd existe.

      Progression des transferts

      Mais ne souhaiteriez-vous pas connaître la progression de vostransfert pendant l’utilisation de FTP ? Vous pouvez utiliser lacommande hash pour afficher la progression de votre transfert :

      ftp> hash
      Hash mark printing on (1024 bytes/hash mark).

      Comme vous pouvez le voir, une indication vous sera affichée tousles 1024 bytes pendant le téléchargement.

      Il y a aussi l’option tick :

      ftp> tick
      Tick counter printing on (10240 bytes/tick increment).
      Bytes transferred: 11680

      Autres commandes FTP

      Si vous avez lespermissions nécessaires, vous pouvez créer un répertoire sur le serveurdistant en utilisant la commande mkdir. Vous pouvez aussieffacer un fichier avec la commande delete, ou un répertoireavec la commande rmdir. Enfin, vous pouvezchanger les permissions sur les fichiers en utilisant la commande chmod.

      Pour plus d’informations concernant l’utilisation de FTP,reportez-vous à l’aide intégrée du logiciel (accessible via la commande helpsans arguments, pour la liste des commandes disponibles, ou avec help<nom de la commande> pour une aide sur une commande spécifique.Vous pouvez aussi utiliser l’aide Unix pour FTP en tapant man ftp.

      Clients ftp en ligne de commande

      lftp

      lftp est un client ftp en ligne de commande très sophistiqué. Il utilise la bibliothèque GNU readline pour fonctionner, donc il intègre des fonctions telles que que le complément (le rajout automatique de la fin d’un nom en appuyant sur <tab>) et l’historique (le fait de pouvoir revenir sur une commande déjà entrée). lftp possède aussi des signets, supporte les miroirs, et peut transférer plusieurs fichiers en parallèle.

      Vous pouvez vous procurer la dernière version de lftp ici : http://lftp.yar.ru/get.html.

      Serveurs FTP

      Un serveur FTP traditionnel est exécuté depuis inetd. Le port standard est le port 21. Quand un utilisateur se connecte, le serveur l vérifie le nom et le mot de passe dans un fichier contenant les mots de passe.

      Un FTP anonyme fonctionne différemment. L’utilisateur se connecte avec, soit le nom d’utilisateur anonymous, soit le nom d’utilisateur ftp (ce qui peut être définit dans le fichier de configuration du serveur). Il a accès à une arborescence située dans un environnement restreint (chroot — l’arborescence en question lui apparaît comme la racine du système de fichiers). Cela garantit qu’il ne pourra pas accéder aux répertoires qui lui sont interdits. L’arborescence de l’environnement restreint contient habituellement une ébauche du système de fichiers, avec des répertoires bin/, etc/ et lib/. Les fichiers à télécharger sont généralement placés dans le répertoire /pub.

      La raison de l’utilisation d’un faux système de fichiers dans une arborescence FTP pour les utilisateurs anonyme, est que le démon FTP utilise des commandes externes pour les requêtes de type ls. Vous pouvez aussi placer d’autres programmes dans le répertoire /bin, et un utilisateur peut les lancer avec la commande SITE dans son client ftp. Par exemple, le FTP Red Hat inclut la commande RPM (pour installer les paquets RPM à partir du site).

      D’autres serveurs FTP fonctionnent différemment. Par exemple, certains serveurs permettent la mise en place de systèmes d’authentification différents de celui d’Unix (ce qui permet d’avoir des comptes dédiés à l’accès ftp). Certaines serveurs (par exemple ProFTPD et NcFTPD) disposent d’une commande ls interne et n’ont donc pas besoin d’une arborescence dédiée à leur environnement restreint. FTP4ALL, par exemple, n’utilise pas les mots de passe définis par le système. Il utilise son propre fichier contenant les informations sur les utilisateurs, et possède des fonctions de limitation de bande passante, et desmessages personnalisés pendant la session ftp.

      Script des accès FTP avec bash

      Copier un backup tous les mois sur un FTP

      créé un fichier backup.tgz et on le transfère sur un serveur FTP.

      #!/bin/sh
      
      HOST=ftp.monhost.com
      LOGIN=mon_login
      PASSWORD=mon_password
      PORT=21
      
      ftp -i -n $HOST $PORT << END_SCRIPT
      quote USER $LOGIN
      quote PASS $PASSWORD
      pwd
      bin
      put backup.tgz
      quit
      END_SCRIPT

      Récupérer tous les fichiers d’un répertoire FTP

      récupérer tous les fichiers d’un répertoire FTP sur son poste local. Notons juste le "prompt" dans les commandes envoyées au serveur FTP, pour que le FTP nous pose pas de question à chaque fichier transféré

      #!/bin/sh
      
      HOST=ftp.monhost.com
      LOGIN=mon_login
      PASSWORD=mon_password
      PORT=21
      
      ftp -i -n $HOST $PORT << END_SCRIPT
      quote USER $LOGIN
      quote PASS $PASSWORD
      pwd
      cd le_repertoire_ou_sont_les_fichiers
      bin
      prompt
      mget *
      quit
      END_SCRIPT

      Récupérer de façon récursive tout le contenu d’un serveur FTP

      Pour récupérer de façon récursive, il y a une astuce tilisant wget.

       

      #!/bin/sh
      
      HOST=ftp.monhost.com
      LOGIN=mon_login
      PASSWORD=mon_password
      PORT=21
      
      wget -r ftp://$LOGIN:$PASSWORD@$HOST

      Commentaires

      Une fois que l'on exécute une première fois le script, il récupère bien le fichier.
      Que se passe -t-il si on l’exécute à nouveau? Y-a-t-il un paramètre qui permet d’incrémenter le nom du fichier ou de modifier le nom du fichier à chaque récupération?

      Et dans l’autre sens? Pourrait-on faire upload avec wput au lieu de wget de la même façon?

      il faut juste changer put backup.tgz en get backup.tgz

 

Aucun commentaire

 

Laissez un commentaire