The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
rekursiven chmod, dass wirkt sich nur auf Verzeichnisse? retrovertigo UNIX für Fortgeschrittene und Experten 1 06-22-2007 04:02 PM
Rekursive pid Skript jbarnhar Shell Programmierung und Scripting 3 05-02-2007 03:14 PM
Problem mit Rekursive Funktion malle Shell Programmierung und Scripting 4 02-03-2007 10:40 AM
Verzeichnisse Problem yeah016 UNIX for Dummies Questions & Answers 2 07-22-2006 07:48 AM
grep rekursiv Verzeichnisse jagannatha UNIX for Dummies Questions & Answers 8 07-24-2003 04:00 PM

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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 04-27-2008
robertmcol robertmcol is offline
Registrierte Nutzer
  
 

Join Date: Feb 2008
Beiträge: 6
Script-Problem durch rekursive Verzeichnisse Hilfe wenden Sie sich bitte

Hallo alle, ich bin auf der Suche nach einer besseren Lösung, dann die, die ich erstellt haben, für die meine Aufgabe

Die Aufgabe ist:
Erstellen Sie ein automatisiertes Skript, das prüft, für Uploads in einem bestimmten Verzeichnis, und verschieben Sie sie auf einem anderen angegebenen Verzeichnis, wenn die Dateien vollständig hochgeladen.

Die Dateien werden FTP'd in das angegebene Verzeichnis
Mehrere FTPS könnte ausgeführt werden, so wissen, ob eine bestimmte FTP ist es schwierig für mich zu prüfen, durch die Prozess-ID


Ich habe das Skript aufgeführt, kann aber sehen, dass Probleme entstehen können mit Uploads der Bäume
zum Beispiel
Wenn der Upload-Verzeichnis ist die folgende:

Zitat:
# Ls-l UPLOAD_DIR /
UPLOAD_DIR /:
insgesamt 4
drwxr-xr-x 4 root root 4096 Apr 26 21:32 directory1
-rw-r - r - 1 root root 0 Apr 26 21:31 Datei1.txt

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

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

UPLOAD_DIR/Directory1/SubDir1:
Insgesamt 0
-rw-r - r - 1 root root 0 Apr 26 21:32 subdir1file2.txt
-rw-r - r - 1 root root 0 Apr 26 21:32 subdir1file1.txt
Ich bin mir nicht sicher, aber wenn die letzte Änderung Datum der stat Befehl in ein Verzeichnis, das älter als das Alter Ich bin auf der Suche nach
dann shouldn; t bedeuten, dass
, dass alle Datei-und Unter-Verzeichnisse unter dem Verzeichnis wird komplett hochgeladen und auch älter als das Alter Ich bin auf der Suche nach?
...... Ich hoffe, dass Sinn ....
Ich glaube nicht, dass ist dann der Fall, wenn ....

Ich hoffe, es ist ein besserer Weg, sich mit diesem Thema.

Vielen Dank für Ihre gibt.

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
Registrierte Nutzer
  
 

Join Date: März 2008
Location: Bay Area Kalifornien
Beiträge: 68
Hallo ... Ich würde dieses Problem in PERL, Aber jetzt wollte ich, um Optionen für das wissen, wenn die Datei-Upload ist abgeschlossen ... Der übliche Weg, dies zu tun ist, dass die Person oder die Software, die nicht das Hochladen zu RENAME (ftp-Befehl REN) in ein anderes Verzeichnis in der gleichen Datei-System. Da eine RENAME (wie ein mv in die Schale) nur Änderungen Zeiger, der Prozess ist momentan, und so, wenn die Datei wird in der in-Verzeichnis auf, Sie wissen, es muss vollständig sein ....

so zum Beispiel ...

.. / uploaddir / commitdir

Laden Sie Dateien auf den uploaddir und wenn der Upload beendet ist, einen Befehl wie ftp> REN uploadedfile commitdir / uploadedfile

Ihr Prozess Umfragen commitdir, nicht die uploaddir. Wenn eine Datei in commitdir, Sie wissen, es muss vollständig hochgeladen und geschlossen.
  #3 (permalink)  
Old 04-27-2008
RobertCo RobertCo is offline
Registrierte Nutzer
  
 

Join Date: Aug 2006
Beiträge: 1
Quine hallo, danke für die Antwort,
Das Problem ist, dass ich haben will ich haben einen Cron-Job das Skript
und das Verzeichnis, dass die Dateien werden in nicht sichtbar sind, noch durch den Uploader. Sobald die Dateien hochgeladen werden und in der Uploader nicht mehr berechtigt ist, den Zugang zu ihnen. (auch akzeptieren, für die kleinen Zeitspanne zwischen ca. Cron-Jobs. max 1-5 Minuten)

A perl Lösung wäre für mich akzeptabel, akzeptieren, ich habe nur eine Code-Modul in perl in meinem Leben, Sie haben wahrscheinlich gehört es ..... "Hallo Welt"


Shell Scripting Ich kann sich durch, wie Sie sehen können, durch das Skript habe ich so weit.

So dass beispielsweise auch in perl würde mein Problem.
Nochmals vielen Dank
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 05:06 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0