Foros del Web » Administración de Sistemas » Unix / Linux »

de 5 archivos cual es el actual

Estas en el tema de de 5 archivos cual es el actual en el foro de Unix / Linux en Foros del Web. buenas a todos mi duda es que estoy creando un script en el que quiero copiar unos archivos que me llega en otro directorio. tengo ...
  #1 (permalink)  
Antiguo 18/11/2012, 11:57
 
Fecha de Ingreso: febrero-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
de 5 archivos cual es el actual

buenas a todos

mi duda es que estoy creando un script en el que quiero copiar unos archivos que me llega en otro directorio. tengo los siguientes archivos:

arch1.txt
arch2.txt
arch3.txt
arch4.txt
arch5.txt actual

entonces pense que lo podia hacer listando los archivos con la opcion -t y me muestra un listado con mas caracteristicas y ver la fecha y la hora del archivo mas actual y enviar el archivo con la hora mas actual ene este caso el arch5.txt, pero que tal si antes de ejecutar el script me llega otro archivo en este caso el arch6.txt el script va a copiar el arch6.txt y el arch5.txt que supuestamente se tenia que copiar no va ser copiado al otro directorio.

entonces habra una forma de tener en cuenta estas ocurrencias. espero que me pudan dar una idea para llevarlo a cabo.

saludos.
  #2 (permalink)  
Antiguo 18/11/2012, 15:54
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: de 5 archivos cual es el actual

Si lo generas con un script, va a ejecutar el último que encuentre cuando lo evalúe y si llega otro en ese momento, no va a ser tomado en cuenta.

¿Qué podrías hacer? un cron con ese script para que se ejecute cada cierto tiempo.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 19/11/2012, 12:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: de 5 archivos cual es el actual

lo tengo agregado en el cron para que se ejecute cada 5 minutos, pero siantes de que se ejecute en esos 5 minutos y me llega 2 o mas archivos, esos 2 o mas archivos ya no seran tomados en cuenta para su envio. entonces habra una forma de poder enviar esos 2 o mas archivos, he buscado la forma de hacerlo pero no doy con la forma para hacerlo. alguna idea
  #4 (permalink)  
Antiguo 19/11/2012, 13:25
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: de 5 archivos cual es el actual

¿No crees que la mejor forma sería utilizar algún programa de copias incrementales de las que ya hay creadas para linux?

De esa forma, simplemente lo ejecutas y va a pasar solo los archivos que han cambiado o los nuevos.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 22/11/2012, 09:59
 
Fecha de Ingreso: octubre-2010
Mensajes: 374
Antigüedad: 14 años, 1 mes
Puntos: 34
Respuesta: de 5 archivos cual es el actual

Usa find con la opción mtime así podrás sacar los archivos más nuevos ( ej último 5 minutos ), o bien como te a dicho BrujoNic usa algún script para crear mirrors que es lo más sencillo.
__________________
Administrador de Servidores -> yo[arroba]skamasle[puntito]com
| Debian | Centos |
| Solución de Problemas | Seguridad | Instalaciones y Configuraciones | Soluciones Anti-DDOS
  #6 (permalink)  
Antiguo 23/11/2012, 06:21
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: de 5 archivos cual es el actual

elrey123, creo que el problema está mal encarado. Lo que querés no es verificar el último archivo, sino todos los archivos que lleguen en un intervalo de tiempo, ¿o no?
La opción que sugiere BrujoNic me parece acertada (copias incrementales). Por ejemplo, podrías hacerlo con rsync.

Si la idea es hacerlo como un daemon, prueba inotify (podés crear un script que reaccione cada vez que se agrega un archivo al directorio). Lee el manual de inotify, o esta página: http://blog.lagentz.com/general/auto...d-inotifywait/


Saludos.
  #7 (permalink)  
Antiguo 24/11/2012, 10:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 61
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: de 5 archivos cual es el actual

Estuve checando la ideas que han estado sugiriendo, pero no he dado aun con la solucion.

La idea es esta tengo 2 usuarios en cada uno de sus home reciben unos archivos(fichero.txt, archivo2.xml, archivo3.txt, etc). lo que trato de hacer que al ejecutar el scripts ver todos los archivos del dia de que recibieron cada usuario y enviarlo a un directorio general.
Y en otro script hacer una conexion por ftp y poder transferir estos archivos. el script es ejecutarlo a diario para enviar los archivos por el ftp.

Estuve haciendo pruebas entrando desde el home de cada usuario y realizar la conexion al ftp y enviar todos los archivos pero no es factible porque voy a estar enviando los archivos repetidos, de manera que solo se envien los archivos actuales. lo de inotify no se si hay para solaris 10, pero estoy investigando para ver.

Todo esta operacion lo estoy haciendo en solaris 10. Estoy utilizando este script para las pruebas.
envio.sh
#!/bin/bash
#
#variables
FTP_SERVER=elrey123
FTP_USER=dchan
FTP_PASS=******
dir2=prueba
#no_archivo=tesa.txt
#copia de archivo
pwd
fecha=$(date '+%h %d')
arte=$(find . -type f -mtime -1)
archo=$arte
dir=$(pwd)
ext=$(find . -name \*.txt)

if [ -d $dir ]
then
# Codigo si existe
file * | grep $ext
echo estos son los archivos:
else
# codigo si no existe
echo no existe ningun archivo con extencion txt
fi

HORA=$(date '+%H:%M')
#arch=$(find tesa.txt)
echo $fecha
echo $HORA

echo enviando $archo
echo enviando $arch
echo enviando $no_archivo
echo enviando $oter

echo '====='
ftp -i -n <<EOF
open $FTP_SERVER
quote USER $FTP_USER
quote PASS $FTP_PASS
binary
hash
put $archo
put $oter
put *.sh
put *.txt
bye
EOF

lo que hago con este script estando en el directorio del usuario buscar con el comando find y utilizando la opcion -mtime -1 que archivos fueron modificado al menos por un dia y la salida del comando del find lo almaceno en una variable, despues lo envio con el put nombre de la variable, he observado si hay un solo nombre de archivo lo envia, pero si har mas de un archivo solo envia uno, por ejemplo:
al imprimir la variable tiene esto: archivo1.txt archivo2.txt archivo3.xml, he buscado ejemplo para ver en que estoy fallando pero aun nada. alguna idea.
saludos.
  #8 (permalink)  
Antiguo 26/11/2012, 05:55
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: de 5 archivos cual es el actual

Deberías haber especificado que estabas en Solaris desde el primer mensaje. inotify es solamente para Linux.

El motivo por el que no te funciona es que estás usando PUT, y PUT solamente transfiere 1 archivo. Para que los transfiera todos, debes usar MPUT (aunque te pedirá confirmación antes de cada uno) o usar un bucle que genere un PUT por cada archivo en $ARCHO.

Tu programa parece más complicado de lo que debería ser, ¿no te bastaría hacer 1 solo find?
Código bash:
Ver original
  1. find . -type f -name "*.txt" -mtime -1

Es más, podrías hacer algo como esto (¡no sin antes probarlo y refinarlo, por supuesto!)

Código bash:
Ver original
  1. ftp -i -n <<EOF
  2.  open $FTP_SERVER
  3.  quote USER $FTP_USER
  4.  quote PASS $FTP_PASS
  5.  binary
  6.  hash
  7.  $(find . -type f -name "*txt" -mtime -1 -exec echo PUT {} \;)
  8.  bye
  9.  EOF

Etiquetas: actual, ip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:00.