Transfert périodique par FTP du contenu d’un dossier

14.02.2006 | Mis à jour le 15.02.2006 | marcori
4385 visiteurs  -  6 visiteurs aujourd'hui  -  2 commentaires

J’ai eu besoin de transferer par FTP des lots de 450 fichiers par intervalles de 15 minutes.

J’ai créé pour ce faire le script suivant qui copie les 450 fichiers présents dans le dossier local /home/dossier_transfert vers la racine FTP du site ftp.monsitedistant.org.

Ce script nommé transfert.sh est executé toutes les minutes par une tâche cron.


#!/bin/sh
# Script transfert.sh
# Ce script est executé par une tâche cron toutes les minutes mais
# ne fera rien tant qu'il ne s'est pas écoulé 15 minutes depuis
# le dernier transfert.

# On se place dans le dossier contenant les fichiers
cd /home/dossier_transfert

# On teste si un dossier atraiter existe (jeton)
if [ -d atraiter ]
then
       exit 1
fi

# Initialisation des variables
i_fic=1

# Si le dossier done n'existe pas, on le créé
if [ ! -d done ]
then
       mkdir done

       # Puisque done n'existe pas, il s'agit du premier lot
       i_lot=1
else
       # On vient recuperer la liste des dossiers deja traites
       last=$(ls -1d done/* | sed 's,done/dos,,g' | egrep -v '^$' | tail -1)
       # Conversion string vers integer
       i_lot=$(echo $last | sed 's,^0*,,g')
       # On incremente le numero de lot
       i_lot=$(expr ${i_lot} + 1)
fi

# Creation d'une chaine du numero de lot sur 4 digit
s_lot=$(printf "%0004d" ${i_lot})

VLOG=$(echo /var/log/transfert/rapport_transfert_${s_lot}.log)
OUTFTP=$(echo /var/log/transfert/outftp_${s_lot}.log)
ERRFTP=$(echo /var/log/transfert/errftp_${s_lot}.log)
cat /dev/null >${VLOG}

# On vient créer le dossier atraiter
mkdir atraiter

# Message de log
echo "Debut du Traitement du lot ${s_lot}" >>${VLOG}
echo "$(date)" >>${VLOG}

# On boucle sur tous les fichiers à traiter
for Fic in $(ls -1 | egrep -v '^atraiter$' | egrep -v '^done$' | egrep -v '^repart.sh$' | egrep -v '^transfert.sh$')
do
       # On déplace le fichier courant dans le dossier atraiter
       mv ${Fic} atraiter/

       # Message de log
       echo "      Deplacement fichier atraiter/${Fic}" >>${VLOG}

       # On incremente le compteur des fichiers
       i_fic=$(expr ${i_fic} + 1)

       # A t'on déplaçé 450 fichiers, si oui, on les transfert en FTP
       if [ ${i_fic} -ge 451 ]
       then
               # On se place dans le dossier a traiter
               cd atraiter

               # Message de log
               echo "   Debut du Transfert du lot ${s_lot}" >>${VLOG}
               echo "$(date)" >>${VLOG}

               # On envoi le contenu du dossier atraiter sur le site distant
               ftp -n 1>${OUTFTP} 2>${ERRFTP} <<MHPDATA
open ftp.monsitedistant.org
user moncompte "mon72mot12passe01"
passive
prompt
binary
mput *
bye
MHPDATA

               # Message de log
               echo "   Fin du Transfert du lot ${s_lot}" >>${VLOG}
               echo "$(date)" >>${VLOG}

               # PAUSE de 1 quart d'heure
               echo "   Pause d'un quart d'heure pour le lot ${s_lot}" >>${VLOG}
               sleep 15m

               # On revient au niveau des fichiers a traiter
               cd ..

               # Deplacement du lot courant dans le dossier done
               if [ -d atraiter ]
               then
                       mv atraiter done/dos${s_lot}

                       # Message de log
                       echo "   Deplacement dossier atraiter dans done/dos${s_lot}" >>${VLOG}
               fi

               # Message de log
               echo "Fin du Traitement du lot ${s_lot}" >>${VLOG}
               echo "$(date)" >>${VLOG}
               # sortie du programme
               # ATTENTION, le dernier dossier atraiter qui contiendra moins de 450 fichiers
               # sera a traiter manuellement
               exit 0
       fi
done

2 commentaires

Transfert périodique par FTP du contenu d’un dossier 19 septembre 2007 Djeneba
je voudrais faire un scrypt permettant le transfert de fichier de windows vers linux.

-----> transfert de fichier par FTP

Transfert périodique par FTP du contenu d’un dossier 9 février 2007
Excellent ! smiley

Poster un nouveau commentaire


Modération de ce forum :

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d'indiquer ci-dessous l'identifiant personnel qui vous a été fourni. Si vous n'êtes pas enregistré, vous devez vous inscrire.


[s'inscrire] [mot de passe oublié ?]

Derniers Commentaires

Articles les plus consultés

Téléchargez Firefox !

Libricks.org est motorisé par le logiciel libre Spip 1.8.3 associé au squelette graphique BliP 0.91

16 rubriques ... 32 articles ... 20 commentaires ... 28 sites référencés ... 90 visiteurs par jour (129825 au total)

Haut de page | XHTML 1.0 | CSS 2