The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Rekursiv chmod som bare påvirker kataloger? retrovertigo UNIX for Advanced & ekspertbrukere 1 06-22-2007 05:02
Rekursiv pid script jbarnhar Shell programmering og Skripting 3 05-02-2007 04:14
Problemet med Rekursiv funksjon Malle Shell programmering og Skripting 4 02-03-2007 10:40
kataloger problem yeah016 UNIX for Dummies Spørsmål og svar 2 07-22-2006 08:48
grep Rekursiv kataloger jagannatha UNIX for Dummies Spørsmål og svar 8 07-24-2003 05:00

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 04-27-2008
robertmcol robertmcol is offline
Registrert bruker
  
 

Bli Date: Feb 2008
Innlegg: 6
Script problemet skyldes Rekursiv kataloger Hjelp vennligst

Hei alle sammen, jeg er på jakt etter en bedre løsning da den jeg har laget for min oppgave

Oppgaven er:
Opprette et automatisert skript som vil se etter Opplastinger i spesifisert katalog og flytte dem til en annen spesifisert Directory hvis filene er helt opp.

Filene FTP'd til den angitte katalogen
Flere FTPS kunne kjøre så vite om en bestemt FTP er fullført er vanskelig for meg å se etter Prosess-ID


Jeg opprettet manuset oppført nedenfor, men kan se at problemer kan oppstå med Uploads of Trees
for eksempel
Dersom Last katalogen har følgende:

Sitat:
# Ls-ltr UPLOAD_DIR /
UPLOAD_DIR /:
Totalt 4
drwxr-xr-x 4 root root 4096 26 april 21:32 Directory1
-rw-r - r - 1 root root 0 26 april 21:31 file1.txt

UPLOAD_DIR/Directory1:
Totalt 8
drwxr-xr-x 2 root root 4096 26 april 21:33 SubDir2
drwxr-xr-x 2 root root 4096 26 april 21:32 SubDir1
-rw-r - r - 1 root root 0 26 april 21:32 dir1file1.txt

UPLOAD_DIR/Directory1/SubDir2:
Sum 0
-rw-r - r - 1 root root 0 26 april 21:33 subdir2file2.txt
-rw-r - r - 1 root root 0 26 april 21:33 subdir2file1.txt

UPLOAD_DIR/Directory1/SubDir1:
Sum 0
-rw-r - r - 1 root root 0 26 april 21:32 subdir1file2.txt
-rw-r - r - 1 root root 0 26 april 21:32 subdir1file1.txt
Jeg er ikke sikker, men hvis det sist endret datoen for stat-kommandoen på en katalog som er eldre enn den Age jeg leter etter
så burde; t that mean
at alle arkiv og sub kataloger under den katalogen bli helt opp, og også eldre enn den Age jeg leter etter?
...... Jeg håper at laget forstand ....
Jeg tror ikke det er tilfelle skjønt ....

Jeg håper det er en bedre måte å håndtere dette problemet.

Thanks for being there.


Code:
#!/bin/bash
#
#
# This script will be used to monitor uploads to a specified directory
# and move them to another directory for downloading.
#
# Things to consider:
#       1. Was the uploaded files uploaded in a sub directory.
#       2. Are the files being uploaded complete.
#       3. Move the files to the specified directory
#          with the proper permissions.
#
#
#-------------------------------------------------------------------------------#
#
# Functions
#
#-------------------------------------------------------------------------------#
calc_time() {
        AGE_LAST_CHANGED=`expr ${CURRTIME} - ${FILE_LAST_CHANGED}`
        if [ ${AGE_LAST_CHANGED} -lt ${ACCEPTED_AGE} ];
        then
                OK_TO_MOVE=N
        else
                OK_TO_MOVE=Y
        fi
}
check_date() {
        FILE_LAST_CHANGED=`stat -t ${NEWFILE} |awk '{print $13}'`
}
#-------------------------------------------------------------------------------#
#
# Vairables will go here
#
#-------------------------------------------------------------------------------#
UPUSER=up_user
DOWNUSER=down_user
#
UPPATH=/home/Private/Uploads
DOWNPATH=/home/Private/Downloads

CURRTIME=`date +%s`
ACCEPTED_AGE=300        # 5 minutes of no activity according to date modified


for f in $( ls ${UPPATH} ); do

if [ -d ${UPPATH}/${f} ];
then
#--- Directory with Subfiles In it ---#
        DIR=${UPPATH}/${f}
        echo "${DIR} is a Directory"
        DIRDATE=`date +%Y_%m_%d_%H%M%S`
        NEWDIR=${DOWNPATH}/${f}_${DIRDATE}
        NEWFILE=${DIR}
        check_date
        calc_time
                # It appears that the directory has not been changed in the allowed timeframe (ACCEPTED_AGE)
                # it is ok to create a new directory in the DOWNPATH now.
                # set permissions of new directory to the download user
        mkdir ${NEWDIR}

        # This causes a problem by leaving the original Directory present in th UPLOADS directory.

        for f2 in $(ls  ${UPPATH}/$f ); do
                NEWFILE=${DIR}/${f2} # Set becuase of check_date function
                check_date
                calc_time
                if [ ${OK_TO_MOVE} = "Y" ];
                then
                        mv ${NEWFILE} ${NEWDIR}
                        echo "mv ${NEWFILE} ${NEWDIR} "
                else
                        echo "File date is too new to move better wait"
                fi

        chown -R ${DOWNUSER}:${DOWNUSER} ${NEWDIR}
        done

else
#--- File is in Main Upload directory ---#
        if [ -f ${UPPATH}/$f ]; then
                NEWFILE=${UPPATH}/${f}
                echo "${NEWFILE} is a file"
                check_date
                calc_time

                if [ ${OK_TO_MOVE} = "Y" ];
                then
                        mv ${NEWFILE} ${DOWNPATH}
                        echo "mv ${NEWFILE} ${DOWNPATH} "
                        chown ${DOWNUSER}:${DOWNUSER} ${DOWNPATH}/*
                else
                        echo "File date is too new to move better wait"
                        echo "next pass of cronjob should move this file"
                fi
        fi
fi

done

  #2 (permalink)  
Old 04-27-2008
quine quine is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Beliggenhet: Bay Area California
Innlegg: 68
Hallo ... Jeg ville takle dette problemet i PERL, Men nå ønsket jeg å ta valg for å vite hvis filen opplastingen er ferdig ... Den vanlige måten å gjøre dette på er å ha den personen eller programvare som gjør opplastingen til RENAME (ftp REN kommando) til en annen katalog i samme filsystemet. Fordi en RENAME (som en MV flytte i skallet) bare endringer pekere, er prosessen øyeblikkelig og så hvis filen vises i den flyttet til katalogen, du vet det må være komplett ....

slik at for eksempel ...

.. / uploaddir / commitdir

Du laste opp filer til uploaddir og når opplastingen er ferdig med å utstede en kommando som ftp> REN uploadedfile commitdir / uploadedfile

Din prosessen avstemninger commitdir, ikke uploaddir. Hvis en fil vises i commitdir, du vet det må være helt opp og lukket.
  #3 (permalink)  
Old 04-27-2008
RobertCo RobertCo is offline
Registrert bruker
  
 

Bli Dato: Aug 2006
Innlegg: 1
Hei quine, takk for svar,
Problemet jeg har er at jeg vil ha en cron-jobb kjøre dette skriptet
og katalogen at filene flyttes til ikke er synlig eller tilgjengelig for uploader. Når filene er lastet opp og flyttet, opplasteren ikke lenger har tilgang til dem. (vel akseptere for de små tidsramme mellom cron jobber ca. 1-5 minutter max)

En perl løsningen ville være akseptabel for meg, aksepterer jeg har kodet bare én modul i perl i mitt liv, har du sannsynligvis hørt om det ..... "Hello World"


Shell scripting Jeg kan rotet igjennom som du kan se av manuset jeg har skrevet så langt.

Så noen eksempel selv i perl ville tjene mitt problem.
takk igjen
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 02:30.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0