Detectar archivos nuevos en carpetas
#1
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.
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Responder


Mensajes en este tema
Detectar archivos nuevos en carpetas - por Ganekogorta - 24-06-2019, 12:59 PM



Usuarios navegando en este tema: 1 invitado(s)