|
Hvis fila har blitt oppdatert, og gjør noe?
Sett dette sammen fra et annet sted på forumet, bare endret den og lagt loopen.
Code:
#!/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
Dette skriptet blir kalt av et annet script gjennom en cron jobb hvert 5. minutt:
Code:
/tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar
Anyways, jeg lurte på om det var noen måte å gjøre det litt bedre. Currently dette bare ftp som statisk fil hvert 5. minutt, uansett om filen er oppdatert eller ikke. Måten det fungerer nå er om noen har behov for å foreta en oppdatering til 4 serverkonfigurasjonen at dette skriptet FTP står for, de bare droppe sine arkivfil (kalt archive.tar) til / tmp / abcQATest / katalog, og innen 5 minutter crontab kjører og ftp er deres filen til serveren 1-4 på / tmp / archive.tar sted.
Er det noen måte å sette dette opp slik at den bare ftp's filen hvis den er oppdatert siden forrige gang ftp ran? På den måten, hvis den blir oppdatert, er det få's FTP'd gang, men så det ikke komme FTP'd igjen med mindre filen er blitt endret?
Deretter på den andre 4 servere, jeg trenger noe som dette:
Code:
If /tmp/archive.tar has been updated
do something
.
.
else
endif
Det gjør noe delen er bare et par raske trekk ekstrakter og sletter, det er ikke så farlig. Det står Hvis setningen jeg stumped på.
|