Crontab para copiar los snapshots de proxmox a una maquina de backups
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)