[FTP]Transferer une liste de fichiers

Résolu/Fermé
ViDikk Messages postés 69 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 24 février 2017 - 25 févr. 2012 à 00:02
 gm - 27 févr. 2012 à 09:42
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 ! :)

A voir également:

2 réponses

mamiemando Messages postés 33346 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 novembre 2024 7 803
Modifié par mamiemando le 25/02/2012 à 01:00
Ç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
ViDikk Messages postés 69 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 24 février 2017
Modifié par ViDikk le 27/02/2012 à 01:18
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
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