![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Logfil ikke får opdateret | KornFire | Højtstående Programmering | 4 | 10-21-2008 04:12 AM |
| Find sidst opdateret fil | callimaco0082 | UNIX for dummyer Spørgsmål & svar | 4 | 09-04-2008 11:17 AM |
| kontant afregning seneste opdatering fil | asadlone | Shell Programmering og Scripting | 3 | 05-08-2008 05:16 AM |
| /etc / utmp fil ikke bliver opdateret med boot op detaljer | jyoti_mil | UNIX for Advanced & Ekspertsøgning Brugere | 1 | 06-11-2007 11:41 AM |
| Oprettelse af en opdateret fil | dbfree | Shell Programmering og Scripting | 4 | 09-30-2005 04:23 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Hvis filen er blevet opdateret, skal du gøre noget?
Læg dette sammen fra et andet sted på fora, bare ændret den og tilføjet sløjfen. 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 script bliver kaldt af en anden script gennem et cron job hvert 5. minut: Code:
/tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar Anyways, jeg tænkte, om der var nogen måde at gøre det lidt bedre. Øjeblikket dette simpelthen ftp's at statisk fil hvert 5. minut, uanset hvis filen er blevet opdateret eller ej. Den måde det fungerer nu, er, hvis nogen er nødt til at gøre en opdatering til de 4 servers at dette script FTP's til de ganske enkelt dråbe deres arkivfil (opkaldt archive.tar) til / tmp / abcQATest / mappe, og derefter inden for 5 minutter crontab løber og ftp's deres filen på serveren 1-4 på / tmp / archive.tar placering. Er der nogen måde at sætte det op så det kun ftp's filen, hvis den er blevet opdateret siden sidste gang de ftp løb? Denne måde, hvis den bliver opdateret, det får's FTP'd gang, men så skal det ikke får FTP'd igen medmindre filen er blevet ændret? Så på den anden 4-servere, jeg har også brug for noget lignende dette: Code:
If /tmp/archive.tar has been updated do something . . else endif De gøre noget del er lige et par hurtige skridt, ekstrakter og sletter, that's no big deal. It's Hvis erklæring jeg stumped om. |
|
||||
|
Script: Code:
diff archive.tar backup.tar > tmp if [ -s tmp ]; then /tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar echo "Files different, transferring files" else echo "Files the same, exiting"; fi Resultater: Code:
/tmp/abcQATest>./autoMoveScript.sh Binary files archive.tar and backup.tar differ Files the same, exiting /tmp/abcQATest> De binære filer gøre forskellige, men af en eller anden grund det altid går til den anden del af det, hvis erklæring. Sidst redigeret af cbo0485; 11-06-2008 på 05:17 PM.. |
|
||||
|
Citat:
Code:
diff archive.tar backup.tar > tmp if [ -a tmp ]; then /tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar echo "Files different, transferring files" cat archive.tar > backup.tar else echo "Files the same, exiting"; fi |
|
||||
|
Her er min endelige kode Jeg fik arbejde. Code:
cmp archive.tar backup.tar > /dev/null if [[ $? -eq 1 ]]; then /tmp/abcQATest/abcMoveTest.sh archive.tar /tmp/archive.tar echo "Files different, transferring files" cat archive.tar > backup.tar else echo "Files the same, exiting"; fi |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|