Hola nuevamente, tras un periodo de relax, volvemos a la carga. Hoy vamos con un workarround a un serio problema de algunos NAS de ciertas marcas como Synology y Qnap.
El problema de estos aparatos es que por cada usb que pinchas, crea un share, ID, nombre, … o lo que sea diferente.
Cuando quieres pasar el contenido del NAS a un USB por motivos de seguridad, configuras un trabajo backup con la aplicación que trae el nas. Puedes darle un origen y un destino. Como cada USB tiene una identificación distinta, tienes que crear una tarea por cada USB que tengas.
Eso hace que tengas que lanzar las tareas a mano, tocar las tripas del NAS o tener siempre tareas fallando porque el destino no está conectado.
Es increíble que productos de esta calidad no permitan hacer algo tan sencillo como copiar parte de su contenido a discos USB que se rotan. Algo que, por ejemplo, los NAS Netgear hacen desde hace años (aunque fallan en muchas otras cosas)
Lo que vamos a hacer es que el servidor de Veeam haga un backup directamente al USB pinchado al NAS, que sea capaz de determinar que USB esta pinchado y que automáticamente lance la tarea que corresponde
Para esto, lo primero que tenemos que hacer es crear un repositorio por cada usb que tengamos
Por cada usb creará un share, que generalmente necesita credenciales de acceso. Es importante tener esto controlado, ya luego vamos a necesitar poder acceder
En las opciones avanzadas indicamos que los discos van a rotar
Una vez tenemos los repositorios, creamos una tarea de backup por cada USB. En cada tarea ponemos como destino repositorio USB que le toca
Vale, pues ya solo nos queda que se lance la tarea que toque cada vez
Para esto nos toca tirar de powershell
Creamos un script similar al siguiente:
Add-PSSnapin VeeamPSSnapIn
Get-VBRBackupRepository -Name USBDISK1-EXT | Sync-VBRBackupRepository
Start-Sleep -s 30
start-vbrjob BackupUSB1 -FullBackup
exit
Lo que estamos haciendo es cargar el snapin de Veeam al powershell de Windows
La siguiente línea escanea el repositorio, para que Veeam lo vea online
Una pausa de 30 segundos
Lanzamos la tarea
Lo guardamos como USB1.ps1, y creamos un script similar por cada USB, cambiando el nombre del repositorio y de la tarea. Guardamos cada script con un nombre identificativo
Ahora vamos a hacer que detecte que usb esta pinchado.
Para eso creamos el siguiente script:
if exist \\128.1.1.27\USBDisk2 goto:20
if exist \\128.1.1.27\USBDisk1 goto:10
:20
Powershell.exe -executionpolicy remotesigned -File C:\script\USB2.ps1
exit
:10
Powershell.exe -executionpolicy remotesigned -File C:\script\USB1.ps1
exit
Esto lo que hace es chequear si la ruta existe, y si es así, lanza el script de powershell correspondiente
Para automatizar el proceso, creamos una tarea programada de Windows
Es importante que el usuario que ejecuta la tarea programada pueda acceder al share del nas, ya que de lo contrario no funcionará
Y eso es todo
Podría automatizarse aún más, de modo que solo hubiese una tarea y que los repositorios se crease automáticamente, pero eso provocaría que en caso de fallo, quedasen tareas o repositorios huérfanos, así que mejor mantenerlo simple
Esperemos que los nas permitan hacer algo similar en breve, y no tengamos que recurrir a estas historias.
Quique