|
Si archivo ha sido actualizado, hacer algo?
Ponga esto de algún otro lugar en los foros, sólo modificado, y añadió que el bucle.
Código:
#!/bin/ksh
localFile=$1
remoteFile=$2
#source FTP parameters
. .ftp_put.cfg
mylog=ftp_session.log
echo "$(date "+%H:%M:%S") - Attempt to FTP $1 to $2" > $mylog
machine="server1 server2 server3 server4"
count=0
# do the FTP put
for machine in $machine
do
ftp -i -n <<EOF >> $mylog
open $machine
user $FTP_LOGIN $FTP_PASSWORD
put $localFile $remoteFile
ls $remoteFile
quit
EOF
count=`expr $count + 1`
done
Este script se llama por otro script mediante una tarea cron cada 5 minutos:
Código:
/tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar
En cualquier caso, me preguntaba si había alguna forma de hacer un poco mejor. Actualmente, este simplemente ftp del archivo estático que cada 5 minutos, independientemente de si el archivo se ha actualizado o no. La forma en que funciona ahora es si alguien necesita hacer una actualización de los 4 del servidor que este script de FTP para, simplemente deje caer su archivo (el nombre archive.tar) a la / tmp / abcQATest / directorio y, a continuación, dentro de los 5 minutos, el crontab y ftp se ejecuta el archivo en su servidor 1o-4to en el / tmp / archive.tar ubicación.
¿Hay alguna forma de esto por lo que sólo es el archivo del ftp si se ha actualizado desde la última vez que corrió el ftp? De esta forma, si se actualiza, también lo es obtener FTP'd una vez, pero luego no se FTP'd de nuevo a menos que el archivo ha cambiado?
Luego en los otros 4 servidores, también necesitamos algo como esto:
Código:
If /tmp/archive.tar has been updated
do something
.
.
else
endif
El hacer algo es tan sólo un par se mueve rápido, y elimina los extractos, que no es gran cosa. Si la declaración que estoy en Sacado.
|