![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| 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 |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
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:
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
|
|
||||
|
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. |
|
||||
|
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 |
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|