inicio de nas, copia de HBS3 a usb y apagado de nas - 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) +---- Foro: Tutoriales (https://www.qnapclub.es/forumdisplay.php?fid=40) +---- Tema: inicio de nas, copia de HBS3 a usb y apagado de nas (/showthread.php?tid=4480) |
inicio de nas, copia de HBS3 a usb y apagado de nas - Ganekogorta - 06-02-2022 Hola HBS3 tiene una función interesante que es la autodetección de disco usb al ser conectados. Con ayuda de esto podemos automatizar o simplificar las copias/sincronzaciones para gente poco acostumbrada a usar las nas. Sólo han de fijarse en un led para saber si está trabajando el disco usb y cuando pueden retirar el disco sin mas conocimientos. Pero aquí voy a tratar una situación distinta, la idea es que disponemos de una nas (mas o menos obsoleta y poco potente) con un disco duro usb de gran capacidad para que contenga las copias o sincronizaciones de otras nas. Queremos iniciarla de forma arbitraria y que autoinicie la tarea de HBS3 y luego se apague tras la finalización. En principio, con activar la tarea de auto detección sería suficiente, pero hay un problema de tiempos. Las nas de Qnap tardan en iniciar todos los procesos y servicios. Para cuando HBS3 está activo, el disco duro ya ha sido detectado previamente y la tarea HBS3 no se lanza puesto que no salta el suceso de agregación de disco (ya estaba agregado). Para hacerlo hemos de preparar varios scripts que nos los hagan. Básicamente el flujo es el siguiente: -tengo activado autorun.sh . para crear un archivo temporal que me sirve a modo de flag para saber que la nas se ha iniciado y he de iniciar ciertas tareas -se ha agregado en el crontab una ejecución cada 5 minutos de un script en bash que hace dos cosas (expulsar/conectar el disco usb y saber si ya puedo apagarla) Descripción y configuración de todos los pasos 1-activo lo del autorun.sh. Yo para evitar el delicado sistema de montar, editar y desmontar para editar ese autorun.sh lo que hago es agregarle una línea que ejecute otro script que tengo en una ubicación editable fácilmente. En mi caso autorun.sh contiene el siguiente código Es decir ejecuta un script llamado mi_autorun.sh que contiene lo siguiente: Código: #! /bin/bash Lo que hace es copiar un archivo existente llamado "backup1.txt" ubicado en la ruta "/share/CACHEDEV1_DATA/Scripts/flagini" y lo copio a "/share/CACHEDEV1_DATA/Scripts/flags". Evidentemente el archivo backup1.txt lo hemos creado con anterioridad y con un contenido de texto simple (un "hola" por ejemplo sirve). -hemos activado la ejecución cíclica de un archivo bash en el crontab con periodo 5 minutos, pueden ser 10 sin ningún problema. No lo hago cada poco tiempo para no saturar a la nas. El archivo bash está en la carpeta "/share/CACHEDEV1_DATA/Scripts" y tiene por nombre "check_backup1.sh" Para ello ejecutamos las siguientes acciones en la consola: Código: echo -e "*/5 * * * * /share/CACHEDEV1_DATA/Scripts/check_backup1.sh">> /mnt/HDA_ROOT/.config/crontab 2-el contenido del archivo "check_backup1.sh" es el siguiente: Código: #! /bin/bash Es en este script donde están las comprobaciones y acciones a realizar. Hago dos cosas principalmente:
Hay un punto a tener en cuenta en el script, no he encontrado una forma "elegante" de descubrir cual es el comando que conecta/desconecta nuestro disco duro usb. Los comandos son los de la lineas "/sys/bus/usb/devices/2-4/authorized". Ese 2-4 indica el disco y dependiendo de cada nas puede cambiar. Lo mejor es que hagáis pruebas antes para saber si el disco duro es el adecuado. Hacer un ls de la carpeta "/sys/bus/usb/devices/" para ver cuales son los vuestros y haced la prueba con ellos para identificar el de nuestro disco usb conectado. Para desconectar "echo 0 > /sys/bus/usb/devices/X-Y/authorized" y para conectar "echo 1 > /sys/bus/usb/devices/X-Y/authorized" 3-Tarea de sincronización / copia Aquí tenemos que definir la tarea que queramos hacer, pero si es importante que se inicie cuando detecte nuestro disco duro usb. Y ahora hemos de crear una nueva tarea de sincronización que sea lanzada tras la finalización de la anterior. Lo que hace es copiar un archivo de una carpeta a otra. Es un flag que desencadenará el apagado de la nas. Las propiedades de esta tarea son: Lo hago como tarea separada para que sirva tanto si la inicial es de copia o de sincronización. Nos podemos evitar esta segunda tarea si la primera es de sincronización y agregamos la carpeta del flag (ojo que ya podemos aplicar el filtro del copia ) Y con todo esto ya tendríamos la nas preparada para hacer copia y sincronización cuando la encendamos manualmente o por programación y luego apagarse. Pegas de este sistema, si la tarea de sincronización de datos no encuentra a la nas origen de datos, esta falla y no lanza tarea encadenada para apagar la nas. Otra pega es que HBS3 tiene límites en el número de carpetas a sincronizar por tarea, lo cual puede obligarnos a encadenar mas tareas intermedias. |