Btrfs puede crear snapshots de subvolúmenes y transmitirlos a otro sistema de archivos con btrfs send y btrfs receive. Un envío completo transfiere un snapshot; los envíos incrementales transmiten los cambios desde un snapshot anterior que debe estar disponible tanto en el origen como en el destino [1].
Importante: esto no sustituye una estrategia de copias con retención y recuperación comprobada. Protege el destino y conserva los snapshots padre que necesites para futuras transferencias incrementales.
Requisitos
- El origen de cada snapshot debe ser un subvolumen Btrfs.
- El directorio donde guardes snapshots debe estar en el mismo sistema de archivos Btrfs que el subvolumen de origen.
- El destino de
btrfs receivedebe estar en un sistema de archivos Btrfs montado. - Todos los snapshots que intervienen en
btrfs senddeben ser de solo lectura [1]. - En un envío incremental, la copia padre debe existir en ambos extremos y mantenerse sin cambios [1].
Comprueba que el origen es un subvolumen y revisa su ubicación:
sudo btrfs subvolume show /mnt/btrfs/home
sudo btrfs filesystem show /mnt/btrfs/home
Los snapshots no atraviesan recursivamente otros subvolúmenes. Si /home contiene subvolúmenes anidados, planifica snapshots y envíos para cada uno que necesites proteger [2].
Crear el snapshot inicial
En este ejemplo, /mnt/btrfs es la raíz montada del sistema de archivos Btrfs y home es un subvolumen dentro de él. Crea la carpeta de snapshots en ese mismo sistema de archivos, pero fuera del subvolumen de origen:
sudo mkdir -p /mnt/btrfs/.snapshots
Crea un snapshot de solo lectura:
sudo btrfs subvolume snapshot -r \
/mnt/btrfs/home \
/mnt/btrfs/.snapshots/home-2016-01-08
El nombre con fecha es un ejemplo; usa un esquema que te permita identificar y ordenar tus copias. No cambies a lectura y escritura los snapshots que usarás como base de envíos incrementales [2].
Enviar la primera copia
Monta el sistema de archivos Btrfs de destino, crea un directorio receptor y envía el snapshot completo:
sudo mkdir -p /mnt/backup
sudo btrfs send /mnt/btrfs/.snapshots/home-2016-01-08 \
| sudo btrfs receive /mnt/backup
btrfs send genera un flujo que btrfs receive reconstruye como un subvolumen en el destino. La copia recibida queda en solo lectura [1].
Enviar una copia incremental
Tras cambiar el contenido del subvolumen original, crea otro snapshot de solo lectura en el mismo sistema de archivos:
sudo btrfs subvolume snapshot -r \
/mnt/btrfs/home \
/mnt/btrfs/.snapshots/home-2016-01-09
Usa el snapshot anterior como padre del nuevo envío:
sudo btrfs send \
-p /mnt/btrfs/.snapshots/home-2016-01-08 \
/mnt/btrfs/.snapshots/home-2016-01-09 \
| sudo btrfs receive /mnt/backup
El snapshot padre correspondiente debe seguir presente en el destino. Conserva tanto la copia base como los snapshots posteriores que formen parte de la cadena incremental; si falta el padre o se altera uno de los snapshots, el envío incremental puede fallar o dejar de corresponder al estado esperado [1][2].
Enviar a otro servidor por SSH
Si el servidor remoto tiene montado un destino Btrfs y la cuenta puede ejecutar btrfs receive, se puede canalizar el flujo por SSH:
sudo btrfs send /mnt/btrfs/.snapshots/home-2016-01-08 \
| ssh backup@servidor 'sudo btrfs receive /mnt/backup'
Para el envío incremental, conserva la misma ruta para el padre en el origen y el directorio receptor que contiene la copia anterior en el servidor:
sudo btrfs send \
-p /mnt/btrfs/.snapshots/home-2016-01-08 \
/mnt/btrfs/.snapshots/home-2016-01-09 \
| ssh backup@servidor 'sudo btrfs receive /mnt/backup'
Sustituye backup@servidor y las rutas por valores de tu entorno. Confirma que /mnt/btrfs/home es un subvolumen y que /mnt/btrfs/.snapshots queda fuera de él, pero en el mismo sistema de archivos. La cuenta remota necesita permisos adecuados para recibir subvolúmenes; no habilites privilegios amplios solo para facilitar la transferencia.
Verificar los snapshots recibidos
Lista los subvolúmenes del sistema de archivos receptor:
sudo btrfs subvolume list /mnt/backup
Puedes examinar un subvolumen recibido con:
sudo btrfs subvolume show /mnt/backup/home-2016-01-08
Comprueba que las copias esperadas existen y que el snapshot recibido permanece en solo lectura antes de depender de él para otro envío incremental [2].
En resumen
btrfs sendybtrfs receivetransfieren subvolúmenes entre sistemas de archivos Btrfs.- Los snapshots usados en el envío deben ser de solo lectura.
- Cada envío incremental necesita su snapshot padre intacto en origen y destino.
- Los subvolúmenes anidados requieren planificación aparte porque un snapshot no los incluye recursivamente.
- Mantén el destino protegido y comprueba periódicamente que las copias recibidas pueden leerse.
Fuentes consultadas
- Documentación oficial de Btrfs:
btrfs sendy modo incremental - Documentación oficial de Btrfs: snapshots y propiedades de subvolúmenes