Crontab para copiar los snapshots de proxmox a una maquina de backups

Posted by in Redes, Seguridad, virtualización

Mediante este método vamos a automatizar la copia de los snapshots de nuestras máquinas virtuales de proxmox a un servidor de backups que puede estar en cualquier parte y que nos servirá de respaldo en caso de catástrofe.

Primero vamos a autorizar el acceso entre ambos servidores linux mendiante ssh sin claves:

1. Ejecuta el siguiente comando en server de proxmox

ssh-keygen -t dsa

Nos dará como resultado:

root@xxxx:/home/usuario# ssh-keygen -t dsa
 Generating public/private dsa key pair.
 Enter file in which to save the key (/root/.ssh/id_dsa):
 Enter passphrase (empty for no passphrase): [LA DEJAMOS EN BLANCO]
 Enter same passphrase again: [LA DEJAMOS EN BLANCO]
 Your identification has been saved in /root/.ssh/id_dsa.
 Your public key has been saved in /root/.ssh/id_dsa.pub.
 The key fingerprint is:
 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@xxxx
 The key's randomart image is:
 +---[DSA 1024]----+
 root@xxxx:/home/usuario#

2. En el servidor destino (donde vamos a volcar los snapshots) dentro del archivo authorized_keys debemos copiar contenido del archivo id_dsa.pub que está en el servidor que contiene las maquinas virtuales, el servidor de destino tiene que estar accesible mediante ssh (por defecto puerto 22)

Sobre este archivo se irán colocando dentro el contenido de las claves públicas (id_dsa.pub) de todas las máquinas que quieras que tengan acceso a tu servidor de backups, en nuestro caso el proxmox.

Es una línea por cada id_dsa.pub de cada máquina.

Puedes usar este comando para hacerlo directamente desde una terminal del proxmox.

cat /home/usuario/.ssh/id_dsa.pub | ssh usuario_remoto@servidor_remoto.org 'cat - >> ~/.ssh/authorized_keys'

obviamente te pedirá password para hacer el copiado pero solo por última vez 🙂
3. Comprobamos el acceso desde el servidor de destino:

ssh usuario_remoto@servidor_remoto.org

verás que ya NO te pedirá clave

5.- Instalamos si no tenemos el paquete sshfs que nos permitirá montar un directorio remoto en un punto de montaje local

sudo apt-get install sshfs

4. Creamos este script en el servidor proxmox, donde vamos a montar el contenido del directorio de backups en P_MONTAJE

nano /usr/sbin/mueve_snapshot

#!/bin/bash
 SSH_USER="root@8aa.bb.cc.dd" # Credenciales remotas
 DOCUMENT_ROOT="/home/backups/copao" # directorio destino en maquina de backups
 LOCAL_DIR="/var/lib/vz/dump/" # directorio donde estan los snapshots
 P_MONTAJE="/media/backup/" # Punto de montaje temporal

 mkdir -p $P_MONTAJE
 sshfs $SSH_USER:$DOCUMENT_ROOT $P_MONTAJE -o workaround=rename
 rsync -rv --delete --size-only --no-group --no-owner --no-perms --no-times --whole-file --inplace $LOCAL_DIR $P_MONTAJE
 umount $P_MONTAJE
 rm -r $P_MONTAJE

Guardamos y le damos permisos de ejecución
chmod +x /usr/sbin/mueve_snapshot

5.- Creamos la entrada en crontab en /etc/cron.d

nano /etc/cron.d/backup

PATH="/usr/sbin:/usr/bin:/sbin:/bin"
0 1 * * 6 root mueve_snapshot

De esta manera indicamos que a las 1 de la madrugada copie los snapshots de las VVMM, que previamente le hemos dicho que realice a las 00:00h desde la GUI de proxmox (Datacenter -> Backups > añadir)