The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
chmod récursif qui ne concerne que les répertoires? retrovertigo UNIX for Advanced & Expert Users 1 06-22-2007 05:02 PM
Recursive pid script jbarnhar De programmation et de script Shell 3 05-02-2007 04:14 PM
Problème avec la fonction récursive malle De programmation et de script Shell 4 02-03-2007 10:40 AM
répertoires problème yeah016 UNIX pour les nuls Questions et réponses 2 07-22-2006 08:48 AM
grep récursif de répertoires jagannatha UNIX pour les nuls Questions et réponses 8 07-24-2003 05:00 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 04-27-2008
robertmcol robertmcol is offline
Registered User
  
 

Join Date: Feb 2008
Messages: 6
Script problème de répertoires récursifs Aide s'il vous plaît

Bonjour à tous, je suis à la recherche d'une meilleure solution que celle que j'ai créé pour le Groupe de mon

La tâche est la suivante:
Créer un script qui vérifie Uploads dans un répertoire et de les déplacer vers un autre répertoire spécifié si les fichiers sont téléchargés.

Les fichiers sont FTP'd dans le répertoire spécifié
FTPS multiples pourrait être en cours d'exécution afin de savoir si un FTP est complète est difficile pour moi de vérifier par l'ID de processus


J'ai créé le script ci-dessous, mais il peut voir que les problèmes peuvent survenir avec des arbres Uploads
par exemple
Si le répertoire a Envoyer le texte suivant:

Citation:
# Ls-l UPLOAD_DIR /
UPLOAD_DIR /:
total 4
drwxr-xr-x 4 root root 4096 avril 26 21:32 Directory1
-rw-r - r - 1 root root 0 avril 26 21:31 file1.txt

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

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

UPLOAD_DIR/Directory1/SubDir1:
total 0
-rw-r - r - 1 root root 0 avril 26 21:32 subdir1file2.txt
-rw-r - r - 1 root root 0 avril 26 21:32 subdir1file1.txt
Je ne suis pas sûr, mais si la dernière modification de la date de la commande stat sur un répertoire plus âgés est alors l'âge je suis à la recherche de
ne devrais alors, que signifie t
que tous les fichiers et sous répertoires du répertoire qui sera complètement téléchargée et donc aussi les anciennes puis l'âge que je cherche?
...... J'espère que de sens ....
Je ne pense pas que si c'est le cas ....

J'espère que il ya une meilleure façon de traiter cette question.

Merci d'être là.


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

 

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 08:10 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0