shell script en bash pour télécharger le fichier à partir du serveur ftp

je dois écrire un script shell pour le shell bash pour transférer des fichiers à partir d'un serveur ftp
étant donné

serveur ftp -- [email protected]

l'utilisateur user1

mot de passe rapidair1

maintenant dans /dir1/dir2 au serveur ftp j'ai un dossier dans les formes suivantes

0.7.1.70

0.7.1.71

0.7.1.72

j'ai copier le fichier "file1.iso" dans le dernier dossier que j'.e 0.7.1.72 dans ce cas.
je dois aussi vérifier l'intégrité du fichier en cours de copie je.e supposons que les fichiers sont téléchargés vers le serveur et à l'époque, si je commence à copier dans ce cas, la copie ne sera pas complet.

je dois faire après toutes les 4 heures . cela peut être fait en en faisant une tâche cron. s'il vous plaît aider

je l'ai fait
j'ai monté le serveur ftp le dossier de ma machine locale . pour vérifier si le fichier a été complètement chargé ou pas je suis la vérification de la taille après chaque 50 sec pour 5 fois si c'est la même chose, alors je suis la copie c'est le contraire d'exécuter le script après 4 heures...
j'ai maintenu un fichier texte "foldernames.txt" nom de tous ces dossiers à partir de laquelle j'ai copié le fichier requis .. je suis donc de vérifier si un nouveau dossier est ajouté au serveur en vérifiant son nom dans le nom du dossier.fichier texte ..
**

tout fonctionne parfaitement, le seul problème est maintenant .. supposons que le fichier a été téléchargé à cette époque, il y avait une certaine défaillance du réseau.. comment vais-je m'assurer que j'ai téléchargé le fichier .... j'ai essayé d'utiliser md5sum et chksum mais il prenait de temps à calculer le montage de dossier. s'il vous plaît aider

voici mon script ..

#!/bin/bash
#
# changing the directory to source location 
echo " ########### " >> /tempdir/pvmscript/scriptlog.log
echo `date`>> /tempdir/pvmscript/scriptlog.log
echo " script is strting " >> /tempdir/pvmscript/scriptlog.log
cd /var/mountpt/pvm-vmware
#
# array to hold the name of last five folders of the source location
declare -a arr
i=0
for folder in `ls -1 | tail -5 `; do
arr[i]=$folder
#echo $folder
i=$((i+1))
done
echo " array initialised " >> /tempdir/pvmscript/scriptlog.log
#
#now for these 5 folders we will check if their name is present in the list of copied         
#  folder names
#
echo " checking for the folder name in list " >> /tempdir/pvmscript/scriptlog.log
## $(seq $((i-1)) -1 0 
for j in $(seq $((i-1)) -1 0  ) ; do
var3=${arr[$j]}
#var4=${var3//./}
echo " ----------------------------------------" >>  /tempdir/pvmscript/scriptlog.log
echo " the folder name is $var3" >> /tempdir/pvmscript/scriptlog.log
#
# checking if the folder name is present in the stored list of folder names or not
#
#
foldercheck=$(grep $var3 /tempdir/pvmscript/foldernames.txt | wc -l)
#
if test $foldercheck -eq 1
then 
echo " the folder $var3 is present in the list so will not copy it " >>  /tempdir/pvmscript/scriptlog.log
foldercheck=" "
continue
else
#
echo " folder $var3 is not present in the list so checking if it has the debug.iso file ">> /tempdir/pvmscript/scriptlog.log
#enter inside  the new folder in source
#
cd  /var/mountpt/pvm-vmware/$var3
#
# writing the names of content of folder to a temporary text file
#
ls -1 > /var/temporary.txt
#checking if the debug.iso is present in the given folder
var5=$(grep debug.iso /var/temporary.txt | wc -l)
var6=$(grep debug.iso //var/temporary.txt)
#
check1="true"
#
# if the file is present then checking if it is completely uploaded or not  
#
rm -f /var/temporary.txt
if test $var5 -eq 1 
then 
echo " it has the debug.iso checking if upload is complete   ">>/tempdir/pvmscript/scriptlog.log
#
# getting the size of the file we are checking if size of the file is constant or     changing    # after regular interval
#
var7=$(du -s ./$var6 |cut -f 1 -d '.')
#echo " size of the file is $var7"
sleep 50s
#
# checking for 5 times at a regular interval of 50 sec if size changing or not 
#
#
for x in 1 2 3 4 5 ;do
var8=$(du -s ./$var6 |cut -f 1 -d '.')
#
#if size is changing exit and check it after 4 hrs when the script will rerun
#echo " size of the file $x is $var7"
if test $var7 -ne $var8
then
check1="false"
echo " file is still in the prossess of being uploadig so exiting will check after 4 hr  " >> /tempdir/pvmscript/scriptlog.log
break
fi
sleep 50s
done
#
#if the size was constant copy the file to destination
#
if test $check1 = "true" 
then
echo " upload was complete so copying the debug.iso file  " >>  /tempdir/pvmscript/scriptlog.log
cp $var6 /tempdir/PVM_Builds/ 
echo " writing the folder name to the list of folders which we have copied " >>  /tempdir/pvmscript/scriptlog.log
echo $var3 >> /tempdir/pvmscript/foldernames.txt
echo " copying is complete  " >> /tempdir/pvmscript/scriptlog.log
fi
#else 
#echo $foldercheck >> /vmfs/volumes/Storage1/PVM_Builds/foldernames.txt
else
echo " it do not have the debug.iso file so leaving the directory "  >>/tempdir/pvmscript/scriptlog.log
echo $var3 >> /tempdir/pvmscript/foldernames.txt
echo 
fi
#rm -f /var/temporary.txt
fi
done
"j'.e supposons que les fichiers sont téléchargés vers le serveur et à l'époque, si je commence à copier dans ce cas, la copie ne sera pas complet." Ouais... ne se passe pas.
Hors-sujet pour; appartient à Super-Utilisateur ou éventuellement Serveur de Faute
si vous devez écrire un script shell", vous avez pour nous montrer ce que vous avez fait et pourquoi il ne fonctionne pas. Un Débordement de pile, c'est aider les programmeurs à résoudre leurs problèmes de programmation, ne pas faire le travail de quelqu'un pour eux. Bonne chance.
monsieur, j'ai essayé ce n maintenant, je suis frappé de cette façon de faire en sorte que le script avez copié le fichier . j'ai pensé que je vais comparer la taille des fichiers à la fois sur l'emplacement, mais quand j'ai vérifié la taille des fichiers qui ont été copiés avec succès, ils étaient différents sur les deux emplacement ne peut donc pas le faire . veuillez suggérer des façons de le faire.

OriginalL'auteur puneet | 2012-04-11