Detectar archivos nuevos en carpetas - Versión para impresión +- Foro QNAP en español (https://www.qnapclub.es) +-- Foro: GENERAL (https://www.qnapclub.es/forumdisplay.php?fid=3) +--- Foro: Firmware, Aplicaciones y Tutoriales (https://www.qnapclub.es/forumdisplay.php?fid=39) +--- Tema: Detectar archivos nuevos en carpetas (/showthread.php?tid=2960) Páginas:
1
2
|
Detectar archivos nuevos en carpetas - Ganekogorta - 24-06-2019 Hola El usuario @Oroimenak plantea en otro hilo una cosa que creo que nos puede venir bien a varios. Como usamos diversos programas de descargas se nos hace necesario tener algún tipo de aviso de que se ha completado la descarga de un nuevo archivo. Yo lo que suelo hacer es tener estos pequeños scripts en una carpeta ubicada en /share/CACHEDEV1_DATA/Scripts . Recordad que es importante que estén dentro de "share" para que NO se borre tras los reinicios de la NAS. Dependiendo de nuestros volúmenes de almacenamiento la ruta puede cambiar y ser del tipo /share/MD0_DATA, /share/CACHEDEV2_DATA,... si se hace un ls /share vereis los nombres que teneis en vuestra nas. Dentro de esa carpeta creo un archivo con atributos de ejecución. Lo he llamado cambios.sh y su contenido es: #! /bin/bash # ruta donde creo archivos temporales origen="/share/CACHEDEV1_DATA/Scripts" # ruta que voy a examinar en busqueda de archivos añadidos (que no eliminados) ruta="/share/CACHEDEV1_DATA/Public" if [ -f $origen/listaoriginal.txt ]; then echo "Existe el archivo listaoriginal.txt y creo el listado de los archivos actuales" # creo archivo con la lista actual de archivos ls $ruta/ > $origen/listaactual.txt # comparo ambos archivos y obtengo las diferencias diff -ab $origen/listaoriginal.txt $origen/listaactual.txt | grep "+" | grep -v "@" | grep -v "+++" > $origen/diferencias.txt #compruebo si tiene contenido if [ -s $origen/diferencias.txt ]; then echo "Hay cambios ya que no tiene tamaño cero" #comienzo a crear el archivo de correo a enviar echo "Subject: Cambios en el directorio" > $origen/correo.txt echo "From: remitente@correo.com" >> $origen/correo.txt echo "To: destinatario@direccion.com" >> $origen/correo.txt echo "" >> $origen/correo.txt echo "Los siguientes archivos se han añadido:" >> $origen/correo.txt cat $origen/diferencias.txt >> $origen/correo.txt cat $origen/correo.txt | /usr/sbin/sendmail -t rm $origen/correo.txt ls $ruta/ > $origen/listaoriginal.txt else echo "No hay cambios de contenido en el directorio" fi rm $origen/diferencias.txt rm $origen/listaactual.txt else echo "No existe listaoriginal.txt y lo creo por primera vez" ls $ruta/ > $origen/listaoriginal.txt fi Este archivo luego ha de agregarse al crontab de nuestra nas para que se ejecute tras "x" minutos y nos envíe un correo de aviso a "destinatario@direccion.com" en caso de adicciones. RE: Detectar archivos nuevos en carpetas - Oroimenak - 24-06-2019 muchas gracias por tu gran ayuda Ganekogorta, en cuanto saque un rato lo pruebo ya que me viene de lujo este script ya que no controlo aun manejarme con script. Detectar archivos nuevos en carpetas - Ganekogorta - 25-06-2019 Hola Yo lo he probado y me funciona [emoji6] Si quieres monitorizar diferentes carpetas, hay que hacer varios scripts con diferentes correos de aviso y sus correspondientes programaciones o bien modificar este para que haga varios comprobaciones. Un saludo Agur eta ondo ibilli Mon (TS-469Pro, TVS-673, QBoat Sunny y TS-453Be) RE: Detectar archivos nuevos en carpetas - Oroimenak - 26-06-2019 Hola, buenas tardes, después de buscar información como un loco por el for ya que el tema de script se para que se utilizan pero ando muy verde en el tema de como hacer que se ejecuten. he seguido tal cual lo explica Ganekogorta y tengo editado el Script. He modificando mis datos de email y ruta donde se descargan los torrent por ejemplo Cita:# ruta que voy a examinar en busqueda de archivos añadidos (que no eliminados) aqui debo de poner la ruta donde tengo los archivos descargados verdad? uso Mac con lo cual acceder a través de consola y le daré permisos de ejecución Cita:chmod +x /share/CACHEDEV1_DATA/Script/cambios.sh Ahora para que se ejecute cada X minutos y añadirlo a contrab que es donde estoy perdido es de la siguiente forma? Cita: - vi /etc/config/crontab de esa forma estaria ya correctamente? gracias Detectar archivos nuevos en carpetas - Ganekogorta - 26-06-2019 Hola Antes de añadirlo al crontab ejecútalo manualmente para comprobar que funciona. Para ejecutarlo ejecuta: “cd /share/CACHEDEV1_DATA/Scripts” “./cambios.sh” Ahí verás mensajes que son el resultado de los “echo”. Ahora provoca un cambio añadiendo un archivo a la carpeta que monitorizas. Ejecuta de nuevo “./cambios.sh” Te debería llegar un correo con el cambio. Si todo ha ido bien. Agrégalo en el crontab, pero con la línea que has puesto se hace cada hora en el minuto 5. Cambia ese “5” del inicio por “*/5”. Aunque yo personalmente bajaría la frecuencia a */15 o incluso a */30 Un saludo Agur eta ondo ibilli Mon (TS-469Pro, TVS-673, QBoat Sunny y TS-453Be) RE: Detectar archivos nuevos en carpetas - Oroimenak - 28-06-2019 muchas gracias Ganekogorta, ayer lo probé. y funciona de lujo, he realizado varias pruebas metiendo alguna archivo nuevo y como tu indicas cada x tiempo revisa la carpeta y me manda un email con lo nuevo que se ha agregado. al final cambie la orden de contrab como tu me dijiste. Cita:/30 * * * * /bin/bash /share/CACHEDEV1_DATA/Script/cambios.sh creo que así esta correctamente escrita verdad? otra cosa mas, ayer mirando las carpetas que genera Rtorrent he encante una llamada script y dentro habia este, no controlo mucho de programación te lo pego aquí para que le eches un ojo. Cita:#!/bin/sh RE: Detectar archivos nuevos en carpetas - Ganekogorta - 28-06-2019 La línea de crontab debe ser */30 * * * * /bin/bash /share/CACHEDEV1_DATA/Script/cambios.sh para que se ejecuta cada 30 minutos /30 * * * * /bin/bash /share/CACHEDEV1_DATA/Script/cambios.sh esta es para ejecutarse a las 00:30 , 01:30, 02:30.... es decir cada 60 minutos, cuando son y media. RE: Detectar archivos nuevos en carpetas - Oroimenak - 29-06-2019 (28-06-2019, 02:32 PM)Ganekogorta escribió: La línea de crontab debe ser Ok. Gracias. Ahora lo cambio. Has podido echar un Ojo al script que he puesto? Que hace realmente? No entiendo mucho de programación. Detectar archivos nuevos en carpetas - Ganekogorta - 01-07-2019 Hola Yo tampoco me muevo bien con bash (vengo del mundo Dos/Windows). Pero al parecer lo que hace es ejecutar archivos sh ubicados en “/share_/Rdownload/sh-script” tras acabar las descargas. En las primeras líneas de comentarios te indica donde crearlos y como hacerlos ejecutables por cambio de atributos con el comando chmod Un saludo Agur eta ondo ibilli Mon (TS-469Pro, TVS-673, QBoat Sunny y TS-453Be) RE: Detectar archivos nuevos en carpetas - Oroimenak - 03-07-2019 Ok. Gracias de nuevo |