Fotografías de archivos usando btrfs

Es bueno tener un historial del trabajo que hacemos y las múltiples etapas en que cambiamos cosas. Este control de versiones nos permite volver a cuando todo estaba bien, hacer experimentos, comparar lo que funciona y no, etcétera.

Para archivos de texto GIT es fantástico. Sin embargo GIT no funciona bien para archivos binarios, que es donde entra BTRFS que puede guardar “fotografías” de los archivos utilizando sólo el espacio necesario para la información original y los cambios entre ellos.

Btrfs

Este sistema de archivos tiene una clase de “directorios” especiales llamados subvolúmenes que apuntan al contenido en disco (dividido en pedacitos) para cada archivo.

Se pueden generar varios subvolúmenes apuntando a la misma información, pero configurados para que al modificar algo en los archivos sólo se escriban los pedazos modificados.

Así se implementan las fotografías, utilizando subvolúmenes que apuntan a casi la misma información.

Generar el sistema de archivos

Si tenemos algún disco o partición vacíos, podemos generar el fs sobre uno de ellos o sobre todos:

 mkfs.btrfs [ -L <nombre-fs> ]  /dev/<disco-o-partición-1> [ ... /dev/<disco_n>]

NOTAS:

  • Lo que está entre [] es opcional.
  • Lo que está entre <> debe cambiarse.

Tener varios discos es conveniente para usar balanceo de carga y respaldo de información. Para una computadora personal generalmente no es una opción.

Generar fotografías de proyectos

Lo primero que hay que hacer es generar un subvolúmen para el proyecto que para nuestros fines puede entenderse como un directorio especial que está aislado de los otros subvolúmenes:

btrfs subvolume create <proyecto>

Podemos hacer un archivo donde poner las fotos:

mkdir <archivado> # Así o con tu administrador de archivos

Para sacar una fotografía:

btrfs subvolume snapshot -r <proyecto> <archivado>/<nombre-de-la-foto-(versión)>

NOTAS:

  • En realidad podrían generarse dentro del mismo subvolumen, pero prefiero generar el archivado para mantener el orden.

  • La opción -r es opcional y para hacer las versiones de sólo lectura. Si el objetivo es guardar una version que funciona yo activaría esta opción, si el objetivo es un experimento, la dejaría desactivada.