¿Otra vez contándome lo mismo de copias de seguridad? -No.
Ya se ha hablado sobre la creación de copias de seguridad y su automatización. En mi caso las copias de seguridad de proyectos, están separadas unas de otras, porque no todas requieren la misma frecuencia ni tienen la misma importancia.
Ahora supongamos, que el servidor donde tenemos todo en marcha se destruye, y perdemos todo(OVH Style). Podremos recuperar los proyectos, pero ¿qué pasa con la configuración del servidor? sino tenemos una copia de seguridad completa, o scripts de creación del tipo de Docker….
Los ficheros de configuración del servidor de los que hablo, son donde se encuentra la configuración de Apache y sitios, también de PHP, seguridad, etc…. En fin, todo eso que empleamos bastante tiempo afinando hasta que al final queda perfecto. Pues la copia de seguridad de estos ficheros no viene a ocupar más de 1MB, creo que vale la pena.
Habrán cosas que no guardo, como los módulos instalados de Apache o PHP, esto sería más de conservar un script de configuración inicial del servidor en el que instalamos todos los requisitos.
Los comandos, Rsync y zip -Sí. ¿Pero cuándo?
Rsync es uno de mis favoritos, pero lo que ando buscando para esta situación, es que el fichero de configuración se guarde con la ubicación, /etc/hosts…. De modo que pueda descomprimirlo en la raíz y tras darle permisos si hace falta, quede ya configurado. La solución más sencilla que he encontrado es .zip
Teniendo esto en cuenta, hay que guardarse fichero generados por el administrador/moi exclusivamente, ya que hay otros de configuración de la aplicación, que cuando queramos desplegar, sobrescribiremos y esto hay que valorarlo para cada fichero.
ZIP, sí, leíste bien, además en lugar de generar un zip a partir de un fichero shell en el servidor que se ejecute remotamente, encuentro más práctico tenerlo todo fuera del servidor, de modo que pueda realizar esta ejecución de modo sencillo atacando a varios servidores.
Ya se que lo siguiente se puede abreviar utilizando variables, pero la idea siguiente creo que quedará clara al verse.
Para que funcione del modo siguiente hay que tener instaladas las claves para conectarse de forma segura y rápida a la máquinas remotas:
ssh [email protected] 'zip -r configuracion_bk date +%Y%m%d.zip /etc/apache2/apache2.conf /etc/hosts'
Primero se lanza la conexión con ssh y el usuario, después entrecomillado sencillo para el comando que ejecutamos remotamente, en este caso .zip, le sigue el nombre del fichero comprimido, finalmente, separado por un espacio los documentos o directorios a ser insertados en el fichero zip.(se guarda en la carpeta del usuario con el que nos conectamos)
2-Una vez formado el fichero podremos descargarlo usando rsync a la ubicación local
rsync -rave ssh [email protected]:/root/configuracion_bk date +%Y%m%d.zip /media/user/DATOS_bk
3-Una vez descargado el fichero zip, podemos eliminarlo con la misma técnica de ejecución de comando remota, en este caso rm:
ssh [email protected] 'rm configuracion_bk date +%Y%m%d.zip'
Cuando queramos recuperar la configuración, extraemos el contenido en al raíz del servidor y se crearán las configuraciones que guardamos.
1-Un ejemplo del primer paso con varias carpetas frecuentes, para un servidor web Lamp con Ubuntu Server:
ssh [email protected] 'zip -r configuracion_bk date +%Y%m%d.zip /etc/apache2/apache2.conf /etc/hosts /etc/apache2/sites-available /etc/php/7.4/cli/php.ini /etc/fail2ban/fail2ban.conf /etc/fail2ban/jail.conf /var/spool/cron/crontabs /etc/letsencrypt/live/'
Y estos tres comandos dentro de un fichero .sh que podemos lanzar de forma automática o manual para más comodidad.
0 comentarios