Tenemos un segundo SSD interno en el equipo formateado con btrfs y cifrado con LUKS para guardar datos y queremos hacer un backup incremental del directorio home digamos todos los días. Para automatizar el proceso tenemos que :
- Montar automáticamente el SSD al inicio
- Programar el backup de /home minimizando los errores por cambios realizados en las aplicaciones activas.
-
Instalar cryptsetup
sudo zypper in cryptsetup -
Crear un archivo con la clave de cifrado
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1sudo chmod 600 /root/luks-keyfileSi la partición cifrada del SSD aparece como /dev/sdb1sudo cryptsetup luksAddKey /dev/sdb1 /root/luks-keyfileDespués de este último comando, nos saltará el promt para introducir la clave de cifrado. -
Editamos el archivo crypttab
sudo nano /etc/crypttaby añadimos la línea ssd2 /dev/sdb1 /root/luks-keyfile luks ssd2 es el nombre arbitrario que queramos poner al dispositivo mapeado -
Configurar fstab para montar automáticamente el dispositivo Editamos el archivo fstab
sudo nano /etc/fstaby añadimos al final la línea /dev/mapper/ssd2 /mnt/ssd2 btrfs defaults 0 2 siguiendo el formato de espacios de las líneas precedentes. Para ver la ruta de la partición a montar en /mnt/ssd2, puede utilizarsesudo fdisk -l -
IMPORTANTE. Para evitar que no arranque el sistema al no encontrar la carpeta indicada para montar el dispostivo, debemos crear una carpeta persistente Editamos el archivo
sudo nano /etc/tmpfiles.d/ssd2Y añadimos la línea d /mnt/ss2 0755 user user - donde user es el nombre del usuario. Con el comandosudo systemd-tmpfiles --createse creará la carpeta al inicio del sistema donde se monta el dispositivo -
Momento de reiniciar el sistema y ver que se descifra y monta el dispostivo en /mnt/ssd2. En caso de que no iniciase, entraríamos en modo rescate, editaríamos fstab y eliminamos o comentamos la última línea.
Se pueden utilizar cualquiera de las aplicaciones de backup más conocidad, pero resulta interesante aprovechar las propiedades del sistema de btrfs para crear subvolúmenes y snapshots con Btrbk y no tener que preocuparse de todos los detalles.
- Instalar Btrbk
sudo zypper in btrbk - Como vamos a crear un backup de /home podemos crear una carpeta oculta para las snapshots /home/.snapshots y una carpeta en la unidad ssd2 para guardar los backups, en mi caso, /mnt/ssd2/HomeBackup
- Editamos el archivo de configuración
sudo nano /etc/btrbk/btrbk.confy utilizamos el siguiente ejemplo adaptándolo a nuestro caso
# snapshot directory on backed up partition
snapshot_dir .snapshots
# snapshot name format <name>.YYYYmmddTHHMM
timestamp_format long
# zstd compression for backup transfer
stream_compress zstd
# path to log
transaction_log /var/log/btrbk.log
# stream buffer size
stream_buffer 256m
# the daily backup is the first one after midnight
preserve_hour_of_day 0
# Monday is the first day of week
preserve_day_of_week monday
# preserve all temporary snapshots for at least one day
snapshot_preserve_min 1d
# preserve 14 latest daily, 8 weekly, 6 monthly, 1 annual snapshots
snapshot_preserve 14d 8w 6m 1y
# do not preserve temporary snapshots
target_preserve_min no
# preserve 6 latest daily, 4 weekly, 6 monthly, 1 annual snapshots
target_preserve 6d 4w 6m 1y
# preserve all snapshot archive
archive_preserve_min all
# home partition
volume /home/
# backup at /mnt/ssd2/HomeBackup
target /mnt/ssd2/HomeBackup
# backup main partition
subvolume .
# partition name in snapshot home
snapshot_name home
-
Ejecutamos btrbk en modo simulación para comprobar que no haya errores. Esto no realiza ningún cambio real.
sudo btrbk run -n -
Creamos nuestro primer backup
sudo btrbk runque creará un snapshot que veremos con un nombre del tipo home.20250708T2115 tanto en /home/.snapshots como en /mnt/ssd2/HomeBackup -
Si todo ha ido bien, programamos su ejecución diaria (o con la temporalización más conveniente) con crontab
sudo crontab -eañadiendo una línea análoga a la siguiente15 21 * * * /usr/bin/btrbk runque ejecutaría btrbk todos los días a las 21:15 -
En el caso de que queramos eliminar backups ya creados por error o para hacer limpieza, recordemos que se trata de un subvolumen. Podemos hacer un listado de subvolúmenes en la unidad de backups como
sudo btrfs subvolume list /mnt/ssd2/y borrar el que queramos como (por ej.)sudo btrfs subvolume delete /mnt/ssd2/HomeBackup/home.20250708T2115- Auto-mounting an Encrypted LUKS Drive at Startup. Chuck Carrol
- Backup of Btrfs subvolumes with Btrbk.Calculate Linux Wiki