[FTP]Transferer une liste de fichiers

Résolu
ViDikk Messages postés 78 Statut Membre -  
 gm -
Bonjour,

Je désire transférer une liste de fichiers contenu dans un dossier, ou le dossier en entier. Pour l'instant j'ai tenté cela mais en vain :

-Pour envoyer chaque fichier :
ftp -pnv $REMOTESERVER << EOT
user $USERNAME $PASSWORD
prompt
mkdir $REMOTEPATH/$DATEJOUR
cd $REMOTEPATH/$DATEJOUR
!LISTTARCLI='ls $HOME/$USFILE/$DATEJOUR/'
!for y in $LISTTARCLI; do
	put $y
!done
bye
EOT


-Pour envoyer le dossier :
ftp -pnv $REMOTESERVER << EOT
user $USERNAME $PASSWORD
prompt
mkdir $REMOTEPATH
cd $REMOTEPATH
put $HOME/$DATEJOUR
bye
EOT


merci pour votre aide ! :)

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Ça n'a pas de sens de mettre des commandes ftp dans un script shell. Il faut éventuellement que tu passes tes directives ftp en paramètre de la commande ftp (si elle peut lire dans un fichier) ou par le biais de l'opérateur << EOF.

    Par exemple avec lftp tu pourrais écrire un truc du genre, mais je suis pas sûre que la commande ftp le permette :

    #!/bin/sh 
    echo "user ?" 
    read user 
    echo "password ?" 
    read password 
    echo "host ?" 
    read host 
    echo "file ?" 
    read file
    
    lftp -u $user,$password $host << EOF 
    cd /toto 
    put $file
    exit 
    EOF


    Bonne chance
    0
  2. ViDikk Messages postés 78 Statut Membre
     
    Bonjour, merci d'avoir pris le temps de me répondre.

    J'utilise déjà la commande ftp avec l'opérateur "EOF" (chez moi c'est EOT). Mon problème n'est pas pour transférer un fichier par FTP, mais de transférer tous les fichiers d'un dossier ou le dossier en entier.

    EDIT : Je viens de trouver la solution: Il suffit d'utiliser la commande "mput" avec comme paramètre "*" pour indiquer tous les fichiers du dossier dans lequel on se situe. Voilà ca que ça donne pour moi :

    # On crée le repertoire où l'on stocke les sauvegardes locales 
    mkdir $HOME/$USFILE/$DATEJOUR 
    
    # On s'y place dedans pour faciliter la commande FTP par la suite 
    cd /$HOME/$USFILE/$DATEJOUR 
    
    # On crée une archive pour chaque dossier 
    LISTCLIENTS='ls $HOME/$USPATH/' 
    for x in $LISTCLIENTS; do 
     echo "compression de $x :" 
     tar -czf $HOME/$USFILE/$DATEJOUR/$x.tar.gz $HOME/$USPATH/$x 
    done 
    
    # On envoi les fichiers du dossier courant vers un serveur distant 
    ftp -pnv $REMOTESERVER << EOT 
    user $USERNAME $PASSWORD 
    prompt 
    mkdir $REMOTEPATH/$DATEJOUR 
    cd $REMOTEPATH/$DATEJOUR 
    mput * 
    bye 
    EOT


    En espérant que ça en aidera d'autres !
    Merci pour l'aide !
    0
    1. gm
       
      Bonjour,

      Effectivement, prompt off puis mput * transférera tous les fichiers.
      En autre solution, tu pouvais aussi utiliser ftpfs pour monter ton FTP sous forme de filesystem dans ton arborescence, et utiliser les commandes habituelles de copie.
      0