173 - Hice un rm -rf. Salvado por Borg.
Hace unos días hice un rm -rf, menos mal que estoy realizando mis copias de seguridad con Borg, porque de otra manera habría perdido mucho trabjao.
Si, también he cambiado mi metodología para realizar mis copias de seguridad, y hoy estoy salvado por Borg después de haber hecho un rm -rf. Y es que, si algo tenemos los que amantes de Linux, es precisamente que nos gusta probarlo todo. Es algo que es intrínseco a nuestra naturaleza. Probar está bien, incluso te diría que es necesario, muy necesario, pero hazlo con protección. Esto tiene sus ventajas y sus sus inconvenientes.
Empezando por los inconvenientes, te indico dos con los que seguro estás familiarizado, la pérdida de tiempo y la pérdida de datos. Respecto a la pérdida de tiempo, no hace falta que te explique mucho, y es que inviertes mucho tiempo probando diferente software y hardware.
Por supuesto con probarlo no tienes suficiente, tienes que dejarlo perfectamente configurado, probado y funcionando, para que luego, te des cuenta de que no es exactamente lo que andabas buscando.
Respecto a la pérdida de datos, su origen es múltiple, desde probar un software de edición de texto, que sobreescribe todos los textos que tenías guardados, a probar una nueva aplicación para formatear micro SD, y te formateas tu unidad principal.
Desde luego, no lo puedes evitar, y es realmente como aprendes y avanzas. Si quieres aprender a luchar, tienes que bajar a la arena y luchar, no vale con solo conocer la teoría. Eso si, con medidas de protección, no lo hagas a las bravas, porque vas a salir perjudicado seguro.
En este sentido, en Linux, como en la lucha, también necesitas bajar a la arena protegido. ¿Como? Utilizando copias de seguridad.
No es la primera, y seguro que no será la última vez que te hablo de copias de seguridad. Y esto demuestra el interés que le pongo a esto de las copias de seguridad. Así, ya te hablé sobre copias de seguridad en el lejano episodio 30, donde te comenté sobre copias de seguridad, y te hablé sobre diferentes herramientas, para hacer copias de seguridad. Algunas de estas con interfaz gráfico y otras para trabajar directamente en el terminal.
En el episodio 68 te hablé sobre como utilizar tu Raspberry como servidor de backup utilizando rdiff-backup. En este episodio te explico como estoy haciendo actualmente mis copias de seguridad y porque he cambiado de software.
Mis copias de seguridad con Borg
Si te preguntas cual es la razón por la que he cambiado mi software copias de seguridad, mas o menos, con mas o menos fortuna, te lo he explicado en la introducción.
La cuestión es que me gusta probarlo todo, y cuando encuentro algo que, inicialmente pienso que me va a funcionar mejor, lo instalo y lo pruebo durante un tiempo.
Esto no quiere decir que se vaya a quedar. No quiere decir, que se vaya a incorporar en mi flujo de trabajo diario. Simplemente, lo tengo un tiempo a prueba, y si no me convence, vuelvo a la situación anterior.
En el caso del software de copias de seguridad, es algo mas complejo, porque normalmente no lo utilizas. Quiero decir, que el software de gestión de copias de seguridad va haciendo su trabajo, y tu no te preocupas de él, hasta que realmente lo necesitas.
¿Que tengo en mi copia de seguridad?
Básicamente, los dotfiles así como todo aquello relativo a lo que voy produciendo, ya sea de la página web, como de otras aspectos. Por supuesto, también todo el código fuente de las aplicaciones que implemento.
¿Con una copia de seguridad basta?
Si no tienes ninguna copia de seguridad, entonces decirte, que con una sola copia de seguridad ya estás mucho mejor de como estás ahora. Sin embargo, existe una regla conocida como 3-2-1, que establece los siguiente,
- Tienes que tener al menos 3 copias de seguridad
- Al menos deben estar en dos ubicaciones distintas
- Una de las copias debe estar en una ubicación externa
En mi caso, tengo, una copia de seguridad en mi equipo, otra en un VPS y la tercera, está en internet disponible para todos.
¿Como es esto de tener mi información disponible para todos? Bueno, toda la información no está, la información mas sensible está cifrada utilizando Cryfs. Sin embargo, el resto de documentación la conoces perfectamente. Todo lo que publico en internet, ya sean artículos, podcasts o vídeos. Y por supuesto los dotfiles, ¿que sentido tiene tenerlos ocultos?.
¿Porque Borg backup?
A un buen sistema de gestión de copias de seguridad, le tienes que exigir una serie de requisitos,
- Compresión, con el objeto de disminuir el espacio de almacenamiento necesario. Al fin y al cabo, los costes de almacenamiento cada vez son menores, pero cualquier reducción del coste siempre es positiva.
- Redundancia, esto ya lo he comentado anteriormente en lo que se refiere a la regla del 3-2-1. Si todas tus copias de seguridad las tienes en la misma unidad, y esta se estropea, lo has perdido todo.
- Deduplicación. Este requisito es similar al de la compresión, porque el objetivo del mismo es que no existan copias duplicadas de datos repetidos. Básicamente, el objetivo es optimizar el almacenamiento de datos en dicos.
- Cifrado. Si tienes datos sensibles, es imprescindible cifrar los datos para que no caigan en manos de terceros.
Y ¿porque te cuento todo esto?. Básicamente, porque el software que estoy utilizando actualmente para gestionar mis copias de seguridad cumple con estas características. Y es que básicamente lo definen sus desarrolladores como una aplicación de copias de seguridad deduplicada.
El objetivo de este Borg, este gestor de copias de seguridad es el de proporcionar una manera segura y eficiente de hacer copias de seguridad de tu información.
La técnica de deduplicado utilizada por Borg la hace especialmente ideal para copias de seguridad diarias, dado que solo se guardan los cambios.
El cifrado, lo hace especialmente interesante para aquellos casos, donde el repositorio en el que vamos a guardar nuestra copia de seguridad. Lo cierto es que el cifrado tiene un importante coste. Por un lado el elevado consumo de recursos a la hora de realizar el cifrado, y por otro lado el tiempo que se invierte en cifrar toda al información.
Aquí discrepo de lo que dicen los desarrolladores, porque cualquier repositorio es seguro, hasta que deja de serlo. Sin embargo, lo entiendo al fin y al cabo, el proceso de cifrado es un proceso costoso. Sin embargo, atendiendo al hecho de que normalmente no vamos a introducir tantas variaciones al día, y que se trata de una copia de seguridad incremental, creo que vale la pena, hacerlo de esta forma.
Instalando Borg backup
Borg backup se encuentra disponible en las principales distribuciones, etnre ellas, por supuesto, Ubuntu y Raspbian. Comento Raspbian, por el hecho de que lo puedes utilizar como servidor de backups como te comentaba en el capítulo 68 del podcast.
A pesar de esto, existe un PPA oficial de Borg, aunque, en el momento de documentar este episodio del podcast, no tiene una versión actualizada para Focal Fossa, con lo que debes instalarlo desde los repositorios oficiales de Ubuntu.
Para instalarlo en Ubuntu, tan solo abre un terminal y ejecuta la siguiente instrucción,
sudo apt install borgbackup
Uso y funcionamiento
Una vez instalado lo primero es crear un repositorio. En realidad y atendiendo a la regla del 3-2-1, deberías hacer 3 repositorios. Estos podrían ser, uno en tu equipo principal, otro en un NAS o una Raspberry, y para poner la guinda del pastel, el tercero debería estar en un equipo externo, por ejemplo en un VPS.
En cualquiera de los casos, para crear el repositorio tienes que ejcutar la siguiente instrucción, que sería la misma para los tres,
borg init --encryption=repokey /donde-quiera-el-repositorio
En mi caso lo tengo en el directorio /datos/backup/ubuntu
. Esto es así, porque tengo otro repositorio para Linux Mint /datos/backup/linux_mint
.
De la misma manera, lo tendrías que hacer en tu NAS y posteriormente, en el VPS. Yo como he comentado solo lo tengo dos, porque el tercero está a disposición de todo el que lo quiera consultar… eso si, por piezas, en tanto en cuanto, no está todo alojado en em mismo sitio.
Un script para realizar las copias de seguridad
Lo siguiente es crear un script para las copias de seguridad. En mi caso el script es el siguiete,
#!/bin/sh
REPO_A=co1:/home/lorenzo/backup/repo_ubuntu
REPO_B=/datos/backup/ubuntu
#Bail if borg is already running, maybe previous run didn't finish
if pidof -x borg >/dev/null; then
echo "Backup already running"
exit
fi
export BORG_PASSCOMMAND='gkeyring -g -k borgbackup' for REPOSITORY in $REPO_A $REPO_B
do
borg create -v --stats \
$REPOSITORY::'{hostname}-{now:%Y-%m-%d}' \
/datos/dotfiles
/datos/Sync \
--exclude '/datos/Sync/Ansible' \
--exclude '*.aup' \
--exclude '*.au' \
--info 2>>/datos/logs/borg.log
# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
borg prune -v --list $REPOSITORY --prefix '{hostname}-' \
--keep-daily=7 --keep-weekly=4 --keep-monthly=6
done
Quiero comentarte, algunas cosas que te pueden resultar interesantes de este script,
- Realizo la copia de seguridad en dos repositorios, tal y como puedes ver en las primeras líneas.
- El
REPO_A
es el que tengo en un VPS. En el archivo~/.ssh/config
es donde tengo definido el acceso al VPS y la clave público privada que tengo que utilizar. - La contraseña la tengo en el anillo de claves de GNOME, y utilizo una aplicación de desarrollo propio que me permite extraer la contraseña. Esta es la razón, por la que no me preocupa compartir.
- A continuación indico los directorios que quiero que se sincronicen, y aquellos archivos que no quiero que se mantengan.
- Por último se limpian aquellos archivos que no cumplan las condiciones indicadas.
Cron
Por supuesto que este script lo tengo en automatizado en el cron. De la siguiente forma,
0 6 * * * export DISPLAY=:0;export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus;export GSETTINGS_BACKEND=dconf;/bin/bash /home/lorenzo/.bash_it/lib/backup.sh
Esto lo que hace es realizar la copia de seguridad todos los días a las 6 de la mañana. El resto, de la línea es porque gkeyring
, que a su vez utiliza dbus
. Se puede simplificar utilizando gpg
, sin embargo, prefiero utilizar el anillo de claves de GNOME, que para eso lo tengo y para esto he implementado esta aplicación.
Indicar que el resultado se guarda en un log, tal y como puedes ver en el script. Me queda añadir un último paso para que me envíe el resultado también a Telegram, pero esto lo dejo para mas adelante.
¿Como ver lo que tengo en el repositorio?
Si quieres ver las copias de seguridad que tienes, tan solo tienes que ejecutar la siguiente instrucción,
borg list /datos/backup/ubuntu
Y si quieres ver el contenido concreto de una de las copias de seguridad, entonces, tienes que ejecutar la instrucción,
borg list /datos/backup/ubuntu::xps13-2020-05-03
Lo de xps13
, es porque el hostname de mi equipo es xps13
.
Por último quedaría restaurar una de las copias de seguridad, por ejemplo,
borg extract /datos/backup/ubuntu::xps13-2020-05-03
Indicarte que esta no es la única posibilidad que tienes para restaurar copias de seguridad. También tienes la posibilidad de montar el repositorio. Si como lo has oído. Puedes montar tu copia de seguridad, y buscar exactamente el archivo que necesitas y restaurar solo el que necesitas.
Esto es algo realmente interesante cuando por error has borrado un archivo o un directorio. Montas tu copia de seguridad y recuperas exactamente lo que te hace falta.
Esto no es mas que la punta del iceberg
Esto no es mas que una pincelada de las posibilidades que te ofrece Borg backup para realizar y gestionar copias de seguridad. Te recomiendo que le des un vistazo a la extensa documentación.
Por otro lado, te recomiendo que antes de lanzarte a utilizar este magnífico gestor de copias de seguridad, te crees un repositorio, y hagas pruebas con él. Pruebas de todo tipo. Crear copias, restaurar, montar el repositorio y restaurar. Y si puedes deberías documentarlo, para que cuando lo necesites, tengas tus apuntes para hacerlo con total seguridad.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Más información,