The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
chmod recursivo que sólo afecta a los directorios? retrovertigo UNIX para usuarios avanzados y expertos 1 06-22-2007 04:02 PM
Pid script recursivo jbarnhar Programación de scripts de shell y 3 05-02-2007 03:14 PM
Problema con la función recursiva malle Programación de scripts de shell y 4 02-03-2007 10:40 AM
directorios problema yeah016 UNIX for Dummies Preguntas y Respuestas 2 07-22-2006 07:48 AM
grep recursivo de directorios jagannatha UNIX for Dummies Preguntas y Respuestas 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 vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 04-27-2008
robertmcol robertmcol is offline
Usuario Registrado
  
 

Fecha: febrero 2008
Publicaciones: 6
Problema debido a la secuencia de comandos de directorios recursivo Ayuda por favor

Hola a todos, estoy buscando una solución mejor, el que he creado para mi tarea

La tarea es:
Crear un script automatizado que buscar Cargas en un determinado directorio y moverlos a otro directorio especificado si los archivos son completamente cargado.

Los archivos se FTP'd al directorio especificado
FTPS múltiples podría correr lo que conocer si es un particular, FTP completo es difícil para mí, para comprobar la ID del proceso


He creado la secuencia de comandos se enumeran a continuación, pero podemos ver que las cuestiones que pueden surgir con Cargas de árboles
por ejemplo
Si el directorio tiene Subir el texto siguiente:

Cita:
# Ls-LTR UPLOAD_DIR /
UPLOAD_DIR /:
total 4
drwxr-xr-x 4 root root 4096 abril 26 21:32 Directory1
-rw-r - r - 1 root root 0 abril 26 21:31 archivo1.txt

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

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

UPLOAD_DIR/Directory1/SubDir1:
total 0
-rw-r - r - 1 root root 0 abril 26 21:32 subdir1file2.txt
-rw-r - r - 1 root root 0 abril 26 21:32 subdir1file1.txt
No estoy seguro, pero si la última modificación de la fecha de la estadística comando en un directorio de más edad es la edad Estoy buscando
entonces deberías; no significa que
que cualquier archivo y subdirectorios por debajo de ese directorio será completamente cargados y también mayores de edad entonces los estoy buscando?
...... Espero que el sentido ....
Creo que no es el caso aunque ....

Estoy esperando hay una mejor manera de abordar esta cuestión.

Gracias por estar ahí.

Código:
#!/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 (Enlace permanente)  
Old 04-27-2008
quine quine is offline
Usuario Registrado
  
 

Fecha: marzo 2008
Lugar: Área de la Bahía de California
Puestos: 68
Hola ... Me gustaría abordar este problema en PERL, Pero por ahora yo quería hacer frente a las opciones para saber si la carga de archivos se ha completado ... La manera habitual de hacer esto es tener la persona o el software que hace subir a la de RENAME (REN comando ftp) a otro directorio en el mismo sistema de archivos. Debido a un cambio de nombre (como mover un mv en el depósito) sólo cambia los punteros, el proceso es instantáneo y de manera que si el archivo aparece en la trasladó al directorio, usted sabe que debe ser completa ....

Así, por ejemplo ...

.. / uploaddir / commitdir

Que subir archivos a la uploaddir y cuando la subida termine como un comando ftp> REN uploadedfile commitdir / uploadedfile

Su proceso de encuestas commitdir, no el uploaddir. Si un archivo aparece en commitdir, usted sabe que debe estar totalmente cargado y cerrado.
  #3 (Enlace permanente)  
Old 04-27-2008
RobertCo RobertCo is offline
Usuario Registrado
  
 

Fecha: agosto 2006
Publicaciones: 1
Quine Hola, gracias por la respuesta,
El problema que tengo es que quiero tener una tarea de ejecutar este script
y el directorio que los archivos se mueven a no son visibles ni accesibles por el cargador. Una vez que los archivos se cargan y se trasladó, el cargador ya no tiene acceso a ellos. (y aceptar para los pequeños de tiempo entre cron puestos de trabajo aprox. 1-5 minutos máximo)

Un perl solución sería aceptable para mí, aceptar que he codificado en un solo módulo perl en mi vida, probablemente usted oído hablar de él ..... "Hola Mundo"


Shell scripting puedo salir del paso como pueden ver por el guión que he escrito hasta ahora.

Así, cualquier ejemplo, incluso en perl beneficiaría a mi problema.
gracias de nuevo
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 12:28 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0