Zet dit samen ergens anders op de forums, net bewerkt en toegevoegd de lus.
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
Dit script wordt aangeroepen door een ander script via een cronjob iedere 5 minuten:
Code:
/tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar
Anyways, ik vroeg me af of er enige manier om het een beetje beter. Momenteel is dit gewoon ftp is dat statisch bestand elke 5 minuten, ongeacht of het bestand is bijgewerkt of niet. De manier waarop het werkt nu als iemand nodig heeft om zich een update voor de 4-server is dat dit script FTP's, zij gewoon met hun archief bestand (genaamd archive.tar) naar de / tmp / abcQATest / directory, en vervolgens binnen 5 minuten de crontab loopt en ftp's hun bestand op de server 1.4 op de / tmp / archive.tar locatie.
Is er een manier om dit dus alleen ftp is het bestand als het zijn bijgewerkt sinds de laatste keer de ftp liep? Op die manier, als het wordt bijgewerkt, dan krijgt FTP'd keer, maar dan is het niet krijgen, tenzij FTP'd opnieuw het bestand is al veranderd?
Vervolgens op de andere 4 servers, ook ik moet iets als dit:
Code:
If /tmp/archive.tar has been updated
do something
.
.
else
endif
De iets deel is slechts een paar snelle bewegingen, extracten en schrapt, is dat geen probleem. Het is Als verklaring Ik ben stumped op.