2020-03-19 RG350 Backup

Backup logo

Vamos a hablar de algo de lo que nunca se habla lo suficiente, de backups.

Algunas de las acciones que hacemos con la RG350 tienen su contrapartida en forma de ficheros que suelen quedar almacenados en el directorio Home del sistema que se encuentra en la tarjeta interna, concretamente en /media/data/local/home.

Nota

también sirven /media/home y /usr/local/home ya que son enlaces simbólicos, una especie de alias o accesos directos, pero la ruta física es la que se ha indicado antes.

En el directorio Home se almacenan cosas como:

  • Settings de los emuladores.
  • BIOS de algunos emuladores como PCSX4All.
  • Previews de algunos emuladores como FBA.
  • Y seguramente lo más importante, los savestates o los ficheros que aparecen al utilizar el sistema de almacenamiento de la consola emulada como los memorycards de PlayStation.

Si en algún momento perdemos el contenido de la tarjeta interna (ya sea por descuido o por fallo de la misma), perderemos todo lo anterior. Por tanto es conveniente resguardar al menos los ficheros más valiosos como los savestates para evitar disgustos futuros. Una manera es copiar manualmente los ficheros que más nos importen. Podemos hacerlo copiándolos a la tarjeta externa con DinguxCmdr o conectando con la consola por cable y abriendo una sesión SSH o FTP. Aquí vamos a ver una alternativa más fácil y que respaldará el contenido completo del directorio Home.

Comando de backup

Vamos a empezar conociendo el comando que vamos a utilizar. OpenDingux como sabemos es un sistema Linux. En estos sistemas hay una utilidad y formato de archivo muy popular pensado para realizar backups llamado tar. Proviene de cuando los backups se hacían en cintas y de ahí el nombre (Tape ARchive). Está instalado prácticamente en todos los sitemas Linux existentes, por lo que está muy disponible. La forma habitual de utilizarlo es por línea de comando, pero que nadie se asuste. Vamos a empezar viéndolo de esta forma pero más adelante veremos cómo ejecutar este comando desde una aplicación gráfica disponible en ROGUE.

Un comando adecuado para "entarar" el directorio Home sería el siguiente ("entarar" es como se dice en la jerga a la acción de respaldar algo con tar):

tar -cf /media/sdcard/home_backup.tar -C /media/data/local home

Ejecutando esto nos aparecería en la raíz de la tarjeta externa un fichero de nombre home_backup.tar con el contenido del directorio /media/data/local/home. En una consola recién comprada o instalada el comando anterior se ejecuta muy rápidamente y el fichero resultante será pequeño. Si hemos colocado ficheros muy grandes o numerosos en el Home, cosa que es necesario para algunos emuladores, el fichero resultante puede llegar a ser muy grande y el proceso tardar mucho tiempo. En este caso tendremos que recordar o averiguar qué ficheros merece la pena excluir del backup como veremos a continuación.

Excluyendo ficheros del backup

Una vez que sepamos qué directorios o ficheros del Home se pueden excluir del backup las incorporaremos al comando tar. Como ejemplo vamos a utilizar el directorio de previews de FBA que este emulador obliga a que se encuentre en el Home, concretamente en /media/data/local/home/.fba/previews. El comando de backup quedará como sigue:

tar -cf /media/sdcard/home_backup.tar -C /media/data/local --exclude=home/.fba/previews home

Como vemos lo que tenemos que hacer es añadir el parámetro --exclude con el valor de la ruta a excluir a partir de home. Es decir no hay que poner delante /media/data/local ya que la opción -C que está poco antes en el comando establece ese directorio como la raíz. Por cada directorio o archivo que queramos excluir añadiremos un parámetro --exclude como el anterior. Por ejemplo vamos a ver cómo se excluiría la BIOS de PlayStation además de las previews de FBA que hemos indicado antes. No es el mejor ejemplo, porque ganamos poco excluyéndola, ya que sólo ocupa unos 500KB, pero ciertamente ese fichero se puede encontrar fácilmente si lo perdemos:

tar -cf /media/sdcard/home_backup.tar -C /media/data/local --exclude=home/.fba/previews --exclude=home/.pcsx4all/bios/SCPH1001.BIN home

Una vez que tengamos identificado lo que merece la pena excluir de nuestro backup para aligerarlo, vamos a ver cómo lanzarlo más cómodamente.

Ejecución desde Scriptrunner

Desde hace unas versiones, ROGUE incluye una utilidad muy práctica de Rafa Vico llamada Scriptrunner que permite ejecutar scripts de comandos desde un listado. De serie trae un script para hacer backup del Home con el comando indicado en un principio (sin los excludes). Los scripts que vienen de serie no se pueden modificar, pero se pueden añadir nuevos sin más que incorporarlos al directorio /media/data/local/home/.scriptrunner. Por ejemplo, vamos a ver cómo incorporaríamos un nuevo script de backup con el exclude del directorio de imágenes de previews de FBA que hemos comentado antes.

Empezamos creando un fichero de texto con el siguiente contenido y de nombre home_backup_partial.sh (por ejemplo):

#!/bin/sh
# title=Backup partial home folder
# desc=Backup home folder to SD card, save all your settings except FBA previews
# author=eduardofilo

echo "Backup home folder."
tar -cf /media/sdcard/home_backup.tar -C /media/data/local --exclude=home/.fba/previews home
echo ""
echo "Backup done."

Lo que pongamos en las lineaas 2 y 3 serán el título y la descripción del script que luego se mostrará en el listado de Scriptrunner, por lo que podemos adaptarlo a nuestra conveniencia.

Advertencia

Si creamos el fichero desde Windows es recomendable que sea con un editor potente como Notepad++ y guardarlo con retornos de carro UNIX y codificación UTF8.

Lo siguiente será transferirlo al directorio /media/data/local/home/.scriptrunner por algún medio como copiándolo desde la tarjeta externa con DinguxCmdr o por cable por FTP o SCP.

Una vez copiado lo veremos en el listado que muestra Scriptrunner al abrirlo:

Scriptrunner

Desde allí podremos ejecutarlo seleccionándolo como se ve en el pantallazo anterior y pulsando A, lo que habrá que confirmar de nuevo con A:

Scriptrunner

Veremos el progreso mediante un icono giratorio que aparece arriba a la derecha:

Scriptrunner

Hasta que el backup finalmente se complete:

Scriptrunner

Podemos comprobar con DinguxCmdr que se ha creado el fichero de backup:

Comprobación

Restauración

La forma más cómoda de restaurar el backup en caso de ser necesario es utilizar el script Restore home folder precargado en Scriptrunner. Esta vez no es necesario modificarlo, funcionará tal cual. El único inconveniente es que restaurará el backup completo, y puede ser que nos interese recuperar un sólo fichero (un savestate de un emulador concreto por ejemplo). En ese caso se recomienda pinchar en el PC la tarjeta externa para tener acceso al fichero home_backup.tar y abrirlo con un gestor de compresión multiformato como WinRAR. Localizar el fichero que nos interesa y transferirlo a la consola por los medios habituales (DinguxCmdr, FTP o SCP).