Envoi de fichiers d'un répertoire avec un temoin
binjour,
J'ai un soucis sur mon script UNIX, qui me permet d'envoyer la totalité des fichier générés sur mon serveur AIX dans le répertoire "/home/sortie/encours".
1- Avant d'envoyer les fichiers générés dans "/home/sortie/encours" , je dois calculer le nombre de ces fichiers que je mets dans un fichier témoin "depot.tem" dans le répertoire "/home/sortie/temp/depot.tem"
2- J'envoie d'abord la totalité des fichiers générés par FTP vers un PC distant dans le répertoire "D:\reception" pour les consommer.
3- Puis j'envoie le fichiers témoin "/home/sortie/temp/depot.tem" en dernier lieu sur le même PC distant dans le même répertoire.
==> Mon soucis c'est que mon fichier témoin ne se transfère après le transfert des fichiers.
Voici mon script:
cd /home/sortie/encours/ chmod /home/sortie/encours/* 1>/dev/null 2>/dev/null > /home/sortie/temp/depot.tem chmod 775 /home/sortie/temp/depot.tem 1>/dev/null 2>/dev/null if ls /home/sortie/encours/* 1>/dev/null 2>/dev/null then ftp -n 192.168.30.222 >/home/sortie/rapport_relv 2>/home/sortie/rapport_err <<fin quote USER $USER quote PASS $PASSWD verbose #binary lcd /home/sortie/encours/ cd /reception mput * cd /reception lcd /home/sortie/temp cd /reception mput depot.tem bye fin result=`cat /home/sortie/rapport_relv | grep 226 | wc -l` #echo $result echo if [ $result = '0' ] then echo echo ">>>>> TRANSFERT DES FICHIERS ECHOUE, PROBLEME FTP AVEC LE PC " echo sleep 5 exit else echo echo ">>>>> TRANSFERT DES FICHIERS EN COURS..... PATTIENTEZ!" echo sleep 3 echo echo ">>>>> TRANSFERT DES FICHIERS TERMINE AVEC SUCCES VERS LE PC " echo mv /home/sortie/encours/* /home/sortie/archive 2>/dev/null sleep 3 fi else echo echo ">>>>> REPERTOIRE VIDE, PAS DE FICHIERS A ENVOYER VERS LE PC " echo echo sleep 5 fi exit
- Envoi de fichiers d'un répertoire avec un temoin
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Impossible de supprimer un fichier - Guide
- Ouvrir un fichier .dat - Guide
2 réponses
Bonjour,
Que disent les fichiers log et erreur du ftp ?
Et si tu fais les manip à la main ?
Pourquoi 3 fois cd /reception ? le premier doit suffire.
D'une façon formelle, mput c'est le transfert de plusieurs fichiers (multiple put) pour un fichier c'est put. Mais je ne sais plus si mput d'un seul fichier pose soucis, ou pas, le ftp à la main, c'est loin ;-)
Bonjour,
Plusieurs choses sont bizarres dans ton script :
- A plusieurs endroits, tu rediriges les résultats de commandes dans /dev/null. C'est la plupart du temps non seulement inutile (pour les chmod), mais aussi une mauvaise idée, car les messages d'erreurs que tu masques sont potentiellement importants (pour les mv).
- l2: La commande chmod en question ne spécifie pas les nouveaux droits. Par ailleurs pourquoi faire un chmod ?
- l3: cette ligne seule ne semble pas avoir de sens
- l4: pas besoin de corriger les droits a priori. Normalement ce n'est pas une considération interne programme si le fichier n'est pas créé par le programme. De plus, le programme ne pourra pas changer les droits à moins que l'utilisateur qui le lance soit root ou déjà propriétaire du fichier. De manière générale, corriger des droits à l'intérieur d'un programme est rarement indiqué.
- l5: le test me paraît étrange. Voir cette discussion.
- l29, 35, 40: pourquoi attendre ?
- l33, 37: à ce stade le transfert est déjà fait
- Comme le souligne jee pee, la partie FTP se simplifie et pour un simple fichier tu devrais utiliser put :
ftp -n 192.168.30.222 >/home/sortie/rapport_relv 2>/home/sortie/rapport_err <<fin quote USER $USER quote PASS $PASSWD verbose cd /reception #binary lcd /home/sortie/encours/ mput * lcd /home/sortie/temp put depot.tem bye fin
Bonne chance