Una característica que trajo Davinci Resolve 18 fue el servicio de almacenamiento en los servidores de Blackmagic, conocido como Blackmagic Cloud.

Como ya vimos en el artículo Postgresql con Raspberry Pi, este servicio podemos implementarlo nosotros mismos a través de un servidor propio. Ya sea en un servidor local, virtual (VPS) o dedicado, podemos almacenar la base de datos de proyectos mediante Postgresl para acceder remotamente y hacer trabajo colaborativo.

En esta serie de dos artículos vamos a ver cómo automatizar un backup de la base de datos remota en Davinci Resolve.

Davinci backup cloud
Acceso al servicio Blackmagic Cloud

Si bien es cierto que muchos estudios prefieren no gestionar proyectos desde servidores conectados a internet por seguridad, las posibilidades que nos ofrece el trabajo remoto son muchas. Es especialmente útil cuando nos desplazamos, compartimos proyectos o accedemos desde diferentes máquinas.

Por ello, junto con las medidas de seguridad del servidor, también es importante implementar técnicas para evitar una posible pérdida de datos.

A través de Davinci Resolve o el gestor de BBDD pgAdmin podremos generar backups. Sin embargo, automatizar el proceso nos evitará posibles fallos humanos y despreocuparnos de esta tarea.

Por ello, en este artículo trataremos de plantear algunas soluciones para respaldar nuestros proyectos, automatizando este proceso en un servidor Linux.

Suponiendo que ya disponemos de una base de datos remota en nuestro servidor, crearemos un shell script muy sencillo para automatizar y programar la copia. Adicionalmente, en la segunda parte se muestra cómo realizar una segunda copia en otro servidor o servicio externo. Lo haremos mediante un servicio FTP, pero es posible realizarlo con otros servicios como Google Drive, Dropbrox, WebDav….

De esta manera, reducimos considerablemente las posibilidades de una posible pérdida, en el caso de que hubiera cualquier problema en el servidor que gestiona la base de datos.

Creación del Script

Lo primero que incluiremos en el script son las variables para que cualquier cambio de configuración sea más sencillo:

#!/bin/bash
DATE=$(date)
DATABASE_NAME=davinci
BACKUP_LOCAL_DIR=$HOME/BACKUPS
BACKUP_FILE=date --iso -d 'now'_$DATABASE_NAME.sql.gz
DAYS_BACKUP=10
  • DATE es la fecha actual, no es necesario modificarla.
  • DATABASE_NAME es el nombre de nuestra base de datos a la que nos conectamos desde Davinci Resolve.
  • BACKUP_LOCAL_DIR es el directorio dónde se almacenan las copias de seguridad. En el ejemplo, la carpeta BACKUPS dentro de la carpeta de usuario pero puede ser cualquier carpeta como un medio externo.
  • BACKUP_FILE es el nombre del archivo de la copia, no es necesario modificar, quedará algo así como 2022-10-25_davinci.sql.gz
  • DAYS_BACKUP indica los días que se mantienen las copias de seguridad. En el ejemplo 10 días.

A continuación, en esta primera parte del script nos situamos en el directorio que hemos indicado y si no existe la creará:

if [ -d $BACKUP_LOCAL_DIR ]; then
  cd $BACKUP_LOCAL_DIR
else
  mkdir $BACKUP_LOCAL_DIR
  cd $BACKUP_LOCAL_DIR
fi

En la siguiente parte lanzamos la orden esencial del script para la generación del backup de la base de datos con pg_dump. Con este mismo comando la comprime con gzip, ya que las bases de datos en davinci pueden ser muy pesadas. Después, eliminamos las copias anteriores a X días en caso de haberlas. Por ultimo, se lanza un mensaje de error en caso de no haber creado el directorio correctamente.

if [ -d $BACKUP_LOCAL_DIR ]; then
sudo -u postgres pg_dump $DATABASE_NAME | gzip > $BACKUP_FILE
find . -name "*.sql.gz" -type f -mtime +$DAYS_BACKUP -delete
else
echo "Error al crear el directorio"
exit 0
fi
exit 0

Prueba del script

Una vez finalizado, guardamos el archivo con extensión sh en la ubicación que deseemos (en el ejemplo /usr/local/bin/scripts/). Es importante probar el script una vez que hayamos finalizado para depurar posibles fallos. Para ello daremos permisos de ejecución y ejecutaremos. Por ejemplo:

chmod +x backup_davinci.sh
./backup_davinci.sh

Automatización del script

Si no hay errores y los resultados son correctos, solo falta automatizar el script. Tenemos varias formas de hacer esto en Linux pero por su sencillez utilizaremos el clásico Cron que nos permite programar tareas con la frecuencia que deseemos.

En este caso lanzamos el proceso todos los días a las 01. Para ello incluiremos la siguiente línea al final del crontab.

crontab -e
0 1 * * *  sh /usr/local/bin/scripts/backup_davinci.sh

Para diferentes opciones a la hora de seleccionar la frecuencia en crontab recomiendo utilizar la herramienta Crontab.guru.

Restaurar la copia de seguridad

Si necesitamos restaurar la copia simplemente con el archivo y el siguiente comando podremos restaurarla:

psql -U (usuario) -W -h (dirección) (db davinci) < (archivo backup).sql

Descarga del script

Dejo el script en descarga para adaptarlo a las necesidades de cada caso. Es un poco más completo respecto a la explicación anterior, ya que se añade la generación de un archivo log con los mensajes de salida y la función de la segunda copia a un servidor FTP descrita en la segunda parte de esta serie.

Dejar comentaio

Tu dirección de correo electrónico no será publicada.