11-11-2021, 07:48 PM
Hola
La semana pasada un usuario me comentó que tenía una vieja nas que usaba como respaldo o copia de seguridad de la principal.
Pero si lo quería automático por programaciones horarias, ambas nas debían estar activas de forma continuada.
Si quería que la nas de respaldo estuviese apagada, debía hacer el proceso manualmente, iniciar la nas vieja, lanzar la sincronización y apagarla manualmente.
Así evitaba una conexión constante con el riesgo del ransomware, un gasto energético inútil y alargaba la vida de los discos duros de la secundaria.
Estuve pensando como hacerlo de forma desatendida y el guion sería el siguiente:
Bueno vamos con la preparación de rutas y de los archivos.
Lo voy a hacer en una carpeta compartida de nueva creación que nombro como "scripts". Podéis dar otros nombres, pero lo importante es saber la ruta.
En su interior creo otras dos carpetas :
-flags, que es la que será monitorizada desde el archivo bash escrito en el crontab
-flags_ini , donde en su interior creo un archivo llamado "apagar.txt" El contenido del archivo, es lo de menos.
Luego en la carpeta "scripts", creo un archivo script de bash llamado "comprobador_flag.sh" con el siguiente contenido:
La explicación breve del script es:
-defino un par de variables, una de ellas es la ruta de la carpeta compartida.
-compruebo si existe el archivo apagar.txt
-Si existe:
elimino el archivo apagar.txt
lo anoto en un archivo de registro log.log junto con la fecha y hora
apago la nas
Ahora hemos de agregar en el crontab una línea mas al final para que se ejecute cíclicamente un script bash (el de comprobación y apagado).
Esto lo podemos hacer con los comandos siguientes:
Para nuestra "buena" suerte el editor vi es bastante espartano y arisco para los que no amigos de la consola.
Por ello recomiendo que se use WinSCP que es mas visual, aunque deberíamos saber unos mínimos del editor vi.
La línea que debemos agregar en el crontab es
Es decir cada 10 minutos ejecuta el script de bash. Evidentemente podemos modificar ese valor de 10.
Si queremos comprobar que funciona, sólo hemos de crear un archivo llamado "apagar.txt" en la carpeta "/share/scripts/flags/".
Y en el máximo de 10 minutos, la nas comenzará a apagarse.
Ahora vamos a preparar las sincronizaciones.
Una de ellas va a ser la que nos va a traer los datos desde la nas principal.
Abrimos HBS3, en mi caso es una máquina vieja con QTS 4.3.4 (es los nuevo es similar, pero otra entorno gráfico) y la definición de la primera tarea sería como las de las capturas siguientes:
Usamos RTRR (sincronización activa) para poder elegir traer datos.
Si no lo hemos hecho, en la otra nas principal hemos de activar RTRR tal como se ve en la siguiente captura
Volvemos a nuestra tarea en la nas vieja y seleccionamos como origen la nas remota.
si no está definida en la lista inferior, la agregamos tal como se ven en las siguiente captura
Una vez definida continuamos con el asistente
seleccionamos las carpetas a sincronizar. A la derecha estará la del origen (remota) y a la izquierda el destino (local)
En la programación horaria he puesto que se inicie a las 22:00. Esta hora debe ser posterior al encendido automático de la nas.
Si es muy lenta podemos dar un margen de 15 desde el encendido programado al lanzamiento de la tarea de sincronización.
En las opciones activos algunas interesantes como ignorar enlaces simbólicos, archivos duplicados,...pero la mas importante es la primera de "Eliminar archivos adicionales en la carpeta de destino".
Es decir que si en posteriores sincronizaciones, hay un archivo en la local (de destino) que no existe en la remota (de origen), éste será borrado para dejar el mismo contenido de la remota en la local.
Y llegamos a la creación final de la tarea de sincronización. Recordad que la hemos llamado "Sincronizacion de datos"
Ahora vamos con una pequeña tarea de sincronización que va a copiar el archivo "apagar.txt" de una carpeta local a otra carpeta local. Que "casualmente" es la que es monitorizada por el script programado.
El truco extra de esta tarea es que sólo la tarea se inicia tras la finalización de la anterior "Sincronizacion de datos"
Antiguamente se podían lanzar las tareas por comandos de consola, lo cual nos habría facilitado las cosa incluyendo un comando en el script de bash.
La definición de la tarea es sencilla y el del tipo "de una dirección", pongo capturas
Seleccionamos las carpetas a sincronizar, en nuestro caso el origen es "scripts/flags_ini" y la de destino es "scripts/flags"
Para la programación activamos la opción de inicio tras la finalización de otra tarea de sincronización (que será nuestra trabajo real de sincronización).
ajustamos los ajustes de los filtros para que únicamente lo haga con un archivo, el de nombre "apagar.txt"
Y como guinda sólo nos queda hacer la programación de encendido automático de la nas.
Como la tarea principal de sincronización la hemos puesto a las 22:00, activamos una de inicio de la nas a las 21:45.
Para ello vamos al panel de control, energía y la sección de "Programar Energía" agregamos una actividad.
Con esto, ya hemos finalizado, ahora sólo nos queda apagar la nas, esperar a que se encienda, haga la copia y se apague.
P.D. Como siempre si veis alguna errata o error, indicármelo por privado y lo corrijo.
La semana pasada un usuario me comentó que tenía una vieja nas que usaba como respaldo o copia de seguridad de la principal.
Pero si lo quería automático por programaciones horarias, ambas nas debían estar activas de forma continuada.
Si quería que la nas de respaldo estuviese apagada, debía hacer el proceso manualmente, iniciar la nas vieja, lanzar la sincronización y apagarla manualmente.
Así evitaba una conexión constante con el riesgo del ransomware, un gasto energético inútil y alargaba la vida de los discos duros de la secundaria.
Estuve pensando como hacerlo de forma desatendida y el guion sería el siguiente:
- inicio programado de la nas secundaria (por ejemplo a las 21:45)
- ejecución de la tarea de sincronización en un sentido (de la principal a la secundaria). Es decir, se piden datos. Se inicia el proceso a las 22:00
- encadeno una segunda tarea de sincronización local en la nas secundaria que deja un archivo FLAG en una carpeta conocida.
- en la nas existe una tarea programada que comprueba cíclicamente la existencia de ese archivo FLAG en la carpeta conocida. Si existe el archivo, lo borro y lanzo un apagado de la nas secundaria.
Bueno vamos con la preparación de rutas y de los archivos.
Lo voy a hacer en una carpeta compartida de nueva creación que nombro como "scripts". Podéis dar otros nombres, pero lo importante es saber la ruta.
En su interior creo otras dos carpetas :
-flags, que es la que será monitorizada desde el archivo bash escrito en el crontab
-flags_ini , donde en su interior creo un archivo llamado "apagar.txt" El contenido del archivo, es lo de menos.
Luego en la carpeta "scripts", creo un archivo script de bash llamado "comprobador_flag.sh" con el siguiente contenido:
Code:
#! /bin/bash
ruta="/share/scripts"
fecha=`date +%y-%m-%d`
hora=`date +"%H:%M"`
if [ -f $ruta/flags/apagar.txt ] ; then
#existe el archivo de flag
echo "elimino /share/scripts/flags/apagar.txt"
#lo elimino para que no vuelva a apagarse tras el próximo inicio
echo "elimino /share/scripts/flags/apagar.txt" >> $ruta/log.log
rm $ruta/flags/apagar.txt
echo "apago la nas el $fecha a las $hora" >> $ruta/log.log
#doy orden de apagado
poweroff
fi
La explicación breve del script es:
-defino un par de variables, una de ellas es la ruta de la carpeta compartida.
-compruebo si existe el archivo apagar.txt
-Si existe:
elimino el archivo apagar.txt
lo anoto en un archivo de registro log.log junto con la fecha y hora
apago la nas
Ahora hemos de agregar en el crontab una línea mas al final para que se ejecute cíclicamente un script bash (el de comprobación y apagado).
Esto lo podemos hacer con los comandos siguientes:
Code:
vi /etc/config/crontab
crontab /etc/config/crontab
/etc/init.d/crond.sh restart
Por ello recomiendo que se use WinSCP que es mas visual, aunque deberíamos saber unos mínimos del editor vi.
La línea que debemos agregar en el crontab es
Code:
*/10 * * * * /share/scripts/comprobador_flag.sh
Es decir cada 10 minutos ejecuta el script de bash. Evidentemente podemos modificar ese valor de 10.
Si queremos comprobar que funciona, sólo hemos de crear un archivo llamado "apagar.txt" en la carpeta "/share/scripts/flags/".
Y en el máximo de 10 minutos, la nas comenzará a apagarse.
Ahora vamos a preparar las sincronizaciones.
Una de ellas va a ser la que nos va a traer los datos desde la nas principal.
Abrimos HBS3, en mi caso es una máquina vieja con QTS 4.3.4 (es los nuevo es similar, pero otra entorno gráfico) y la definición de la primera tarea sería como las de las capturas siguientes:
Usamos RTRR (sincronización activa) para poder elegir traer datos.
Si no lo hemos hecho, en la otra nas principal hemos de activar RTRR tal como se ve en la siguiente captura
Volvemos a nuestra tarea en la nas vieja y seleccionamos como origen la nas remota.
si no está definida en la lista inferior, la agregamos tal como se ven en las siguiente captura
Una vez definida continuamos con el asistente
seleccionamos las carpetas a sincronizar. A la derecha estará la del origen (remota) y a la izquierda el destino (local)
En la programación horaria he puesto que se inicie a las 22:00. Esta hora debe ser posterior al encendido automático de la nas.
Si es muy lenta podemos dar un margen de 15 desde el encendido programado al lanzamiento de la tarea de sincronización.
En las opciones activos algunas interesantes como ignorar enlaces simbólicos, archivos duplicados,...pero la mas importante es la primera de "Eliminar archivos adicionales en la carpeta de destino".
Es decir que si en posteriores sincronizaciones, hay un archivo en la local (de destino) que no existe en la remota (de origen), éste será borrado para dejar el mismo contenido de la remota en la local.
Y llegamos a la creación final de la tarea de sincronización. Recordad que la hemos llamado "Sincronizacion de datos"
Ahora vamos con una pequeña tarea de sincronización que va a copiar el archivo "apagar.txt" de una carpeta local a otra carpeta local. Que "casualmente" es la que es monitorizada por el script programado.
El truco extra de esta tarea es que sólo la tarea se inicia tras la finalización de la anterior "Sincronizacion de datos"
Antiguamente se podían lanzar las tareas por comandos de consola, lo cual nos habría facilitado las cosa incluyendo un comando en el script de bash.
La definición de la tarea es sencilla y el del tipo "de una dirección", pongo capturas
Seleccionamos las carpetas a sincronizar, en nuestro caso el origen es "scripts/flags_ini" y la de destino es "scripts/flags"
Para la programación activamos la opción de inicio tras la finalización de otra tarea de sincronización (que será nuestra trabajo real de sincronización).
ajustamos los ajustes de los filtros para que únicamente lo haga con un archivo, el de nombre "apagar.txt"
Y como guinda sólo nos queda hacer la programación de encendido automático de la nas.
Como la tarea principal de sincronización la hemos puesto a las 22:00, activamos una de inicio de la nas a las 21:45.
Para ello vamos al panel de control, energía y la sección de "Programar Energía" agregamos una actividad.
Con esto, ya hemos finalizado, ahora sólo nos queda apagar la nas, esperar a que se encienda, haga la copia y se apague.
P.D. Como siempre si veis alguna errata o error, indicármelo por privado y lo corrijo.
Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η