![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| paus () problem | IdleProc | UNIX for Dummies Frågor & Svar | 1 | 03-17-2009 06:21 |
| Paus för svar från loggfilen | gxdanh | Shell-programmering och Skript | 3 | 10-24-2008 12:52 |
| Rsync-skript i cron från trampa på sig själv | sunsysadm2003 | Shell-programmering och Skript | 3 | 04-30-2008 12:14 |
| paus? var är du? | 01000101 | High Level Programming | 3 | 05-15-2006 08:42 |
| hur man kan pausa en process? | daneensign | UNIX for Dummies Frågor & Svar | 1 | 02-14-2006 12:27 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Script Pause Fram Rsync Is Done Överföra
Okej, jag har detta script som hämtar filer från ett fåtal platser, förädla dessa filer, skapar en zip-fil, är rsync det och sedan tar bort allt.
Problemet som jag har är att jag inte vet hur stor rsync'ed zip-filen kommer att bli. Just nu är jag med en sömn kommando innan jag tar bort alla filer och kataloger som skapats, men jag är obekväm med att lämna det så här. Allt det skulle ta skulle vara en stor fil som den behöver rsync och manuset skulle radera filen innan det är gjort överförs. Så, finns det något sätt att låta skriptet kontrollera utvecklingen för rsync? Om inte, hur skulle jag gå tillväga för att göra något i denna riktning? |
|
|||||
|
Om detta är ett bash shell script kan du prova att "vänta"-kommando.
Se mer här -- Job styrkommandon Hoppas den här hjälper. |
|
||||
|
Citat:
Kod:
rsync -urza -e "ssh -i rsync-key -l username -p xxxx" /filepath/filename.zip webserv:/filepath/ wait Och det inte vänta alls. Vad gäller lockfile, jag är inte säker på vad detta skript gör, exakt. Kod:
lockDir="/root/lock_files" lockFilePath="$lockDir/file.lock" while [ -e "$lockFilePath" ] do exit done touch $lockFilePath /usr/bin/rsync --stats -e ssh -rlvtgoDz --delete /dir/dir/dir/ root@server:/dir/dir/dir/ & rm -f $lockFilePath Såvitt jag kan säga, börjar ut berättar om låset katalog och fil. Sedan säger ni om den låsta filen finns, om den gör det, avsluta sedan skriptet. Då om det inte är där, då du trycker på filen (och därigenom skapa en tom fil, om min "touch" kunskap är korrekt), och sedan börjar rsync i en bakgrund process. Efter det börjar göra rsync, tar bort det då låset filen. Jag kunde se detta något att fungera om du gjort skriptet kalla sig före medan uttalande, men jag vet inte hur detta skulle förbättra min situation. Normalt mitt manus tar sedan bort filerna som rsync'ed, så även om jag ringde detta skript externt skulle rm kommandot gå igenom precis så snart detta manus färdigt, a la precis som rsync startar. Och jag behöver verkligen inte rsync flera filer, bara en. Några andra idéer / förslag? (Tack för vad jag har hittills, förresten. )EDIT: Också, jag kör allt detta på en Red Hat-system. Glömde att ta med det tidigare. |
|
||||
|
Om jag förstått det rätt, du letar efter ett sätt att se till att rsync slutför framgångsrikt innan vi går vidare till resten av ditt manus. bash skulle låta dig göra detta med "& & 'operatör (i detta fall rsync är Kommando1): Kod:
command1 && command2 Från bash manualsidan, är "Kommando2 verkställas om, och endast om, Kommando1 returnerar ett Returvärdet noll." Så, något du kanske kan använda är: Kod:
rsync -options file.xx remotehost:/path/to/store && rm file.xx Den Gotcha här är att rsync kan misslyckas ett par olika skäl och om det gör, skulle det andra kommandot inte köra. |