copias seguridad Archive

Backup de Plesk a Amazon Glacier

Con la intención de mejorar la seguridad y la posibilidad de restaurar el servicio ante un posible ataque que pudiera eliminar ficheros de mi servidor, además de realizar un backup diario que se almacena en el propio servidor, he implementado un sistema para exportar el backup que realiza Plesk a Amazon Glacier.

¿Por qué a Amazon Glacier?

En su momento estuve viendo Amazon, pero lo dejé aparcado por pereza. Finalmente esta semana pasada retomé el tema por recomendación de Alberto Larripa.  Es un servicio tremendamente económico, que está pensado para subir ficheros que rara vez van a ser recuperados. Es por eso, que mi política de backups consistirá en dejar en el propio servidor el backup de los últimos 7 días, y el resto ya estarán en Amazon Glacier.

Instalación del cliente AWS

La instalación del cliente es tremendamente sencilla. Una vez más mis agradecimientos a Alberto Larripa que ya lo había instalado y me recomendó este cliente que realmente funciona, y no como otros que había estado probando.

# pip install awscli
# aws configure

Y metemos los parámetros de configuración de nuestra cuenta de Amazon Glacier.

Exportar backup de Plesk

Para exportar un backup de Plesk a un único fichero .tar.gz , a partir del xml generado, podréis encontrar muchísimas páginas que hablan de ello, pero casi ninguna funciona. En unos casos, porque están usando un Plesk bastante viejo. En otros porque lo hacen únicamente para un dominio, y no para todo el backup completo. En cualquier caso, tras varias pruebas, este es el que me funciona a mi:

/usr/local/psa/admin/bin/plesk_agent_manager export-dump-as-file --dump-file-name bck_info_1504110411.xml -v --output-file bck_info_1504110411.xml.tar.gz

Script final que exporta de Plesk y sube a Amazon Glacier

Uniendo todo lo anterior, y obviamente dependiendo de las rutas en las que tengamos Plesk, cómo se llame nuestro Vault en Amazon, etc etc, el script que uso es el siguiente:

#!/bin/bash

# Script para hacer copia del backup de plesk a Amazon Glacier

LOG=/var/lib/psa/dumps/log_backups_amazon_glacier.txt

PLESK_BACKUP_PATH=/var/lib/psa/dumps
cd $PLESK_BACKUP_PATH
LATEST_XML_FILE=$(ls -1tr *.xml | tail -1)
BACKUP_FILE=$PLESK_BACKUP_PATH/$LATEST_XML_FILE.tar.gz

echo "### Construyo fichero de backup ###" >> $LOG
date >> $LOG
/usr/local/psa/admin/bin/plesk_agent_manager export-dump-as-file --dump-file-name $PLESK_BACKUP_PATH/$LATEST_XML_FILE -v --output-file $BACKUP_FILE

echo "### Fichero de backup construido, comenzamos subida a Glacier ###" >> $LOG
date >> $LOG
aws glacier upload-archive --vault-name Backup-Server --account-id - --archive-description $BACKUP_FILE --body $BACKUP_FILE

echo "Archive subido: "$BACKUP_FILE >> $LOG
date >> $LOG

cat $LOG | mail -s "Backup to Amazon Glacier" echebejo@gmail.com

# Elimino ficheros auxiliares
rm $BACKUP_FILE
rm $MAILMSG
echo "" > $LOG

Copias de seguridad con rsync

Es una práctica totalmente recomendada la realización de copias de seguridad o backups de nuestros archivos periódicamente, para evitar pérdidas de información, o mejor dicho, para que en el caso de que perdamos información, sea lo menos posible.

Para ello existen en el mercado múltiples herramientas de backup, que en algunos casos tienen una complejidad exagerada y en otros un precio que pagar. Pero en determinadas ocasiones, por ejemplo para hacer una copia de seguridad de la carpeta de mis documentos, o de la home, existen otras formas de hacerlo.

Si lo que deseamos es hacer una copia incremental (solo se copian los archivos que no han sido modificados, si no existen se crean, y si han sido borrados se dejan) en ese momento, basta con teclear en un terminal lo siguiente:

rsync -av directorio_origen directorio_destino

Donde el directorio de destino puede ser cualquier disco duro externo que hayamos montado previamente, u otra partición, o donde queramos. Preferentemente se debe copiar a un disco externo por eso de si se rompe nuestro disco duro.

Pero si queremos automatizar el proceso a una determinada hora (por ejemplo todos los dias, al mediodia que estamos comiendo), podemos meter el comando rsync dentro del cron en UNIX. Para ello vamos a un terminal y tecleamos:

crontab -e

De esta forma vemos las tareas que hay programadas para dicho usuario y añadimos la siguiente linea:

25 14 * * * rsync -av directorio_origen directorio_destino

Así todos los días a las 14:25 se realizará una copia incremental.