2. Labores administrativas desde el interprete de comandos

2.1. Copias de respaldo y restauración

Hay varias herramientas relacionadas con copias de respaldo:

bin/pgdump.sh

Saca volcado de la base (i.e un volcado es un archivo con instrucciones SQL para reconstruir la base completa), lo almacena junto con los del último mes en el directorio de respaldo configurado --por defecto es /var/www/resbase que en adJ está encriptado.

[Aviso]Aviso

Los volcados generados con bin/pgdump.sh incluyen las fuentes de información. Debe mantenerlos encriptados y con permisos que no permitan lectura por parte de usuarios que no administren.

bin/respaldo.sh

Almacena volcado junto con los de última semana y opcionalmente lo copia de forma segura (con ssh) a otro(s) computador(es).

[Aviso]Aviso

Las copias de envíe manténgalas en directorios encriptados en los computadores donde lleguen.

Especifique cada computador destino y usuario en la variable $rremotos separandolos con espacio, por ejemplo un sólo destino sería jaime@miservidor.cc.cc:copiasencriptadas/. Para que pueda hacer automático el copiado, genere un par de llaves RSA sin clave con ssh-keygen, configure la llave privada en la variable $llave y agregue la llave pública en el archivo ~/.ssh/authorized_keys de la cuenta a la que enviará las copias.

bin/copiacd.sh

Que quema un CD con el contenedor encriptado (por defecto /var/resbase.img) del directorio de respaldos.

bin/restaura.sh

Que permite restaurar un volcado SQL de la base de datos. Por ejemplo si el volcado está ubicado en /mnt/usb/volcado.sql para incluirlo en la base basta:

cd /var/www/users/sivel
bin/restaura.sh /mnt/usb/volcado.sql

El volcado puede estar comprimido con gzip.

[Aviso]Aviso

Los volcados generados con bin/pgdump.sh incluyen instrucciones para borrar las tablas existentes antes de insertar los registros volcados. Es decir al restaurarlos borran la información que hubiera en la base.

Es posible editar los volcados antes de restaurarlos, para eso deben descomprimirse antes, por ejemplo:

cp /var/www/resbase/sivel-dump-22.sql.gz /tmp/volcado.sql.gz
gzip -d /tmp/volcado.sql.gz

Si requiere editar un volcado para eliminar las líneas que borran las tablas (i.e las de la forma DROP TABLE) puede emplear:

grep -v "DROP TABLE" /tmp/volcado.sql > /tmp/volcadosindrops.sql
		

Para ver brevemente las diferencias entre 2 volcados puede emplear:

diff /tmp/volcado.sql /tmp/volcadosindrops.sql | less
		

bin/importacd.sh

Que intenta restaurar la base de datos de un volcado posiblemente incluido en un CD quemado con bin/copiacd.sh. Antes de efectuar este procedimiento saque un volcado de la base que tenga.

bin/mueve.sh

Permite respaldar y mover sistema de información a nueva nueva ubicación en un sistema OpenBSD adJ (copia de base de datos, copia de fuentes y nuevo URL). Las operaciones que realiza son:

  • Saca un volcado de la base que deja en /var/www/resbase (o el directorio configurado para copias de respaldo en su archivo aut/conf.php) con un nombre de la forma movido-sivel-dump-26.sql.gz y saca una copia de las fuentes en PHP que deja en /var/www/resbase/fuentes10-sivel.tar.gz

  • Copia la base de PostgreSQL (por defecto sivel) en una nueva base de nombre sivel10 con el mismo usuario ante PostgreSQL.

  • Copia las fuentes en PHP al directorio /var/www/htdocs/sivel10

  • Crea un Alias para el servidor web que le permite ingresar a la base movida en el URL /sivel10/; por ejemplo desde el mismo servidor en https://127.0.0.1/sivel10/ y después reiniciar Apache.

  • Prueba el nuevo URL con el navegador lynx.

  • Si usted acepta elimina las fuentes del directorio donde estaban haga esto sólo después de verificar que sus datos están completos en la nueva ubicación

Si desea emplear otro nombre de base de datos y Alias especifíquelo como primer parámetro y si prefiere copiar a otro directorio especifíquelo como segundo parámetro; por ejemplo para copiar a la base sivelcopia, al directorio /var/www/users/sivelc y usar el Alias sivelcopia desde el directorio con fuentes de SIVeL ejecute:

bin/mueve.sh sivelcopia /var/www/users/sivelc

Se recomienda que configure ejecución diaria de bin/respaldo.sh. En adJ esto se hace con una tarea cron diaría a las 12:00M

2.1.1. Procedimiento de volcado en detalle

Si no tiene una instalación de adJ estándar ajuste variables relacionadas con volcados en aut/conf.php, en particular la variable rlocal que debe tener el directorio en el que quedarán los volcados generados con bin/pgdump.sh.

Para sacar un volcado comprimido de la base, desde un interprete de comandos:

$ cd /var/www/users/sivel
$ bin/pgdump.sh

Al ejecutarlo se generará un archivo de la forma /var/www/resbase/sivel-dump-08.sql.gz, en lugar de /var/www/resbase/ el directorio que haya configurado y en lugar de 08 el día del mes.

2.2. Publicación web

Suponemos que tiene una segunda instalación de SIVeL --preferiblemente en un computador diferente al de la base principal-- para consulta pública por el web de los datos públicos (i.e sin fuentes). Para actualizar esa segunda instalación debe:

  1. En la instalación fuente asegúrese de configurar computador destino en la variable $maquinaweb, por ejemplo miservidor.cc.cc. El usuario destino en $usuarioact y el directorio donde quedará un volcado en el destino (la información que llegará a este directorio no incluye fuentes por lo que no requiere estar encriptado), por ejemplo /var/www/resbase.

  2. En la instalación fuente como usuario administrador de SIVeL ejecute:

    cd /var/www/users/sivel
    bin/actweb.sh
    						

    Este script generará un volcado, del cual eliminará las fuentes y enviará el volcado resultante con scp al destino configurado con un nombre de la forma web-sf-sinf-22.sql.gz.

  3. Ingrese al servidor destino y ejecute:

    cd /var/www/users/sivel	
    bin/pgdump.sh
    bin/pubweb.sh
    						

2.3. Retroalimentación por correo desde Consulta Web

La información complementada por un usuario en el formulario que se ve tras oprimir el botón 'Comente Caso', será encriptada y enviada a una cuenta de correo.

Hay 3 aspectos por configurar:

  • Ubicación del programa openssl. Que típicamente será ubicado por el script bin/prep-chroot.sh en el directorio /var/www/usr/sbin/ y autodetectado o especificado en el momento de la configuración con conf.sh

  • Llave de encripción. Especificada en el archivo aut/conf.sh como PALABRA_SITIO.

    [Aviso]Aviso

    Cambie la llave de encripción que se distribuye con SIVeL.

  • Cuenta de correo que recibirá la información encriptada. Especificada en el archivo aut/conf.sh variable receptor_correo.

En la cuenta configurada se recibirán dos correos por cada retroalimentación, ambos con el mismo mensaje pero el primero lo incluye en el cuerpo del mensaje en hexadecimal, mientras que el segundo lo incluye en binario como adjunto.

El adjunto puede guardarse en un archivo, digamos /tmp/encriptado, y si la llave de encripción fuera la cadena La llave, podría desencriptarse y guardarse en el archivo /tmp/desenc con:

openssl bf -nosalt -d -in /tmp/encri -out /tmp/desenc -k "La llave"
		

El mensaje en hexadecimal primero tendría que salvarse en un archivo, digamos /tmp/hex, pasarse a binario, digamos al archivo /tmp/encriptado y después desencriptarse como se explicó en el párrafo anterior. Para convertir de hexadecimal a binario podría emplear el script herram/hex2bin.php distribuido con las fuentes de SIVeL, que de estar ubicadas en /var/www/users/sivel, se emplearía así:

cd /var/www/users/sivel
php herram/hex2bin.php < /tmp/hex > /tmp/encriptado