|
Se il file è stato aggiornato, fare qualcosa?
Metti questo insieme da qualche altra parte sul forum, appena modificato e aggiunto il loop.
Codice:
#!/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
Questo script viene chiamato da un altro script attraverso un processo di cron ogni 5 minuti:
Codice:
/tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar
Anyways, mi chiedevo se vi è stato alcun modo di rendere un po 'meglio. Attualmente questo ftp semplicemente il file statico che ogni 5 minuti, a prescindere se il file è stato aggiornato o no. Il modo in cui funziona adesso è se qualcuno ha bisogno di fare un aggiornamento del 4 che del server FTP di questo script, esse semplicemente cadere i loro file di archivio (che prende il nome archive.tar) alla / tmp / abcQATest directory /, e quindi entro il 5 minuti crontab corre e ftp della loro file server 1-4 a / tmp / archive.tar posizione.
C'è un modo per impostare la questione in modo che solo ftp il file se è stato aggiornato l'ultima volta dal ftp corse? In questo modo, se viene aggiornato, è ottenere la FTP'd una volta, ma poi non si FTP'd nuovamente a meno che il file è stato cambiato?
Poi gli altri 4 sul server, ho bisogno anche di qualcosa di simile a questo:
Codice:
If /tmp/archive.tar has been updated
do something
.
.
else
endif
Il fare qualcosa è solo un paio di veloci spostamenti, estratti e cancella, che non è un grosso problema. E 'stato Se mi stumped su.
|