Introducción
Un backup es una copia de seguridad de los datos e información que se puede realizar a baja o alta escala. La programación y realización de una copia de seguridad resulta fundamental para el mantenimiento de un equipo o sistema, debido a que previene la pérdida de datos e información importante y permite tener un plan de acción en caso de presentar problemas como virus, fallos en los discos duro, accidentes, entre otros.
Tipos de Backups
Hay cuatro tipos principales de copias de seguridad: completas, incrementales, diferenciales y de copia.
- Copia de seguridad completa: Una copia de seguridad completa es una copia de todos los datos en un sistema. Es el tipo más completo de copia de seguridad y se utiliza para proteger contra la pérdida de datos completa. Las copias de seguridad completas suelen realizarse una vez al día, una vez a la semana o una vez al mes, según las necesidades.
- Copia de seguridad incremental: Una copia de seguridad incremental es una copia de los datos que han cambiado desde la última copia de seguridad completa. Las copias de seguridad incrementales suelen realizarse varias veces al día o varias veces a la semana. Son más pequeñas que las copias de seguridad completas y requieren menos tiempo para guardarlas.
- Copia de seguridad diferencial: Una copia de seguridad diferencial es similar a una copia de seguridad incremental, pero copia todos los datos que han cambiado desde la última copia de seguridad completa o diferencial. Las copias de seguridad diferenciales son más grandes que las copias de seguridad incrementales, pero requieren menos tiempo para guardarlas que las copias de seguridad completas.
- Copia de seguridad de copia: Una copia de seguridad de copia es una copia de todos los datos en un sistema que se guarda en un lugar diferente.
También es importante tener en cuenta que no existe una sola estrategia de copia de seguridad que sea perfecta para todos. Debe desarrollar una estrategia que sea adecuada para sus necesidades.
Instalación de rclone
- Script de instalación (Linux/macOS/BSD)
sudo -v ; curl https://rclone.org/install.sh | sudo bash
- Arch:
sudo pacman -S rclone
- Fedora
sudo dnf install rclone
Configuración de rclone
Hay muchas maneras de configurar rclone
. Todas ellas se pueden encontrar en la documentacion oficial. Hoy vamos a utilizar Google drive
.
Es importante tener en cuenta que para poder configurarlo correctamente son necesarias un Client Id
y un Client Secret
. Para ello debemos configurar una nueva aplicación en la consola de desarrolladores de Google, para esto debemos seguir los siguientes pasos:
- Crear un nuevo proyecto.
- Habilitar la API de Google Drive.
- Crear credenciales.
IMPORTANTE: Se debe añadir el correo de la cuenta de Google que se desea utilizar para almacenar los backups como tester del proyecto.
Para ello vamos a seguir esta guía, es muy sencillo. Pero antes es importante tener en cuenta:
- Tenemos que añadir
local
como unremote
. - Es recomendable añadir una contraseña robusta para nuestra configuración local.
- Tenemos que añadir nuestra unidad y si queremos cifrarla tenemos que añadir otro
remote
llamadoencryp/decryp
. - Hay muchas opciones que podemos usar:
copy
,move
,sync
, etc. En este caso usaremossync
.
Para descargar archivos podemos usar:
rclone copy bipbop:enc/2023-05-16-CTF.zip arch:/home/rooyca
Donde bipbop:enc
es nuestro remoto encriptado. El truco está en usar el nombre original del fichero, en este caso 2023-05-16-CTF.zip
, en lugar del encriptado que muestra nuestra carpeta Drive. La segunda parte arch:/home/rooyca
es nuesto local
.
O tambíen podemos copiar toda la carpeta:
rclone copy bipbop:enc arch:/home/rooyca
En este ejemplo estamos copiando toda la carpeta enc
de nuestro remoto bipbop
a nuestro remoto local arch
en la ruta /home/rooyca
.
Instalación y configuración de rooykup
Como podemos ver es menianamente sencillo configurar rclone
, pero para facilitar aún más la tarea he creado un script que automatiza todo el proceso.
Instalación
- Clonamos este repositorio
- Creamos un archivo
config.toml
en~/.config/rooykup
con la siguiente estructura:
[config]
workingDirectory = "/path/to/working/directory"
shutDownAfterBackup = false
alwaysCompress = false
remote = ["remote:folder", "remote2:"]
local = "local:"
configPass = "here your super secure passphrase for rclone config"
[exclude]
directories = [".git", "node_modules"] # If none leave it empty
[[pathAndDirName]]
path = "/path/to/folder/to/backup"
zipName = "NameOfTheZipFile
[[pathAndDirName]]
path = "/path/to/folder/to/backup2"
zipName = "AnotherNameOfTheZipFile"
Puedes añadir todos los [[pathAndDirName]]
que necesites.
Uso
- Ejectua
python rooykup.py
para iniciar el proceso de respaldo.- Si deseas ejecutarlo periódicamente, puedes usar
cron
osystemd
- Si deseas ejecutarlo periódicamente, puedes usar
- También puedes crear un alias en tu archivo
.bashrc
o.zshrc
.
alias rooykup="python /path/to/rooykup.py"
-
Si desea apagar el ordenador después del backup, cambia
shutDownAfterBackup
atrue
en tu ficheroconfig.toml
o ejecútalo con la opción-s
. -
Si quieres comprimir siempre los ficheros, cambia
alwaysCompress
atrue
en tu ficheroconfig.toml
o ejecútalo con la opción-c
. Esto comprimirá incluso si el directorio ya tiene un fichero comprimido el día de hoy.
Respaldar dotfiles y demás en GitHub
Hay muchas formas de hacer esto, pero en esta ocación haremos uso del template que he creado para este propósito: tamplate-backups. Ahí encontraremos una lista de checkeo y un script que nos ayudará a automatizar el proceso.
Uso
- Clonamos este repositorio
- Exportamos las variables de entorno (Opcional)
export DONT_BACKUP="Trash,pnpm,gem"
export BACKUP_DIR="/home/user/mybackup"
- Ejecutamos los comandos:
cd template-backups
chmod +x rokup.sh
./rokup.sh
Eso es todo por hoy. Si tienes alguna inquietud no dudes en dejármela en los comentario.
¡Gracias por leer!