Ir al contenido
Esta página está desactualizada. Consulte la documentación más reciente en /configuration/btrfs_snapshots/

Instantáneas de Btrfs

Empecemos por lo básico:

Las instantáneas de Btrfs provienen de la característica de los subvolúmenes. ¿Qué es un subvolumen? te preguntarás. Piensa en un subvolumen como un sistema de archivos separado dentro del sistema de archivos Btrfs, lo que te permite segmentar tus datos en diferentes partes. Es por eso que, por ejemplo, en CachyOS tenemos diferentes subvolúmenes para:

  • Sistema de archivos raíz: (/)
  • Directorio raíz: (/root)
  • Directorio personal: (/home)
  • Directorios de var: (/var/cache, /var/tmp, /var/log)
  • Directorio srv: (/srv)

Al tener diferentes subvolúmenes para estos directorios, podemos gestionarlos de forma independiente, aplicar diferentes configuraciones y, lo más importante, crear instantáneas de ellos.

Aquí es donde nace una instantánea. Una instantánea es esencialmente una copia de solo lectura o de lectura-escritura (por defecto) de un subvolumen en un momento específico. Esto significa que puedes capturar el estado de tu sistema de archivos, incluyendo todos los archivos y directorios, en ese instante.

Por lo tanto, las instantáneas se convierten en una referencia en un punto en el tiempo, lo que significa que cuando el archivo de destino diverge de los datos de la instantánea, esta mantendrá el archivo original y el destino creará un nuevo archivo con los cambios, mientras que la instantánea permanecerá igual para siempre. Por eso, algunos usuarios se refieren a una instantánea como “datos congelados en el tiempo”.

Imagina que tomas una fotografía de tu sistema de archivos en un momento específico, y siempre puedes volver a esa fotografía cuando lo necesites.

Una de las ventajas clave de las instantáneas es que son muy eficientes en cuanto a espacio, ya que son solo una referencia a los datos originales hasta que se realizan cambios.

Pero aquí es donde una instantánea se diferencia de una copia de seguridad tradicional. Digamos que tu disco falla. Si tuvieras una copia de seguridad tradicional, podrías restaurar tus datos desde esa copia. Sin embargo, si solo tuvieras instantáneas en el disco dañado, perderías el acceso a esas instantáneas, ya que se almacenan en el mismo disco.

Casos de recuperación donde las instantáneas son útiles y no útiles

Sección titulada «Casos de recuperación donde las instantáneas son útiles y no útiles»

Son útiles para recuperarse de:

  • Rupturas o corrupción después de actualizaciones del sistema.
  • Malas configuraciones que impiden que el sistema arranque.
  • Eliminaciones o modificaciones accidentales de archivos.

No son útiles para recuperarse de:

  • Problemas con el gestor de arranque.
  • Fallos de hardware (por ejemplo, discos duros que fallan).

Algunas cosas a considerar antes de gestionar las instantáneas. Se aplica tanto a los métodos de CLI como de GUI.

  • Se recomienda mantener un máximo de 10 instantáneas. Más allá de eso, las instantáneas se vuelven demasiado antiguas y menos útiles. En el peor de los casos, revertir a una instantánea antigua puede introducir problemas de compatibilidad con versiones más nuevas del software.
  • Las instantáneas idealmente están destinadas a ser utilizadas con fines de recuperación. Aunque puedes usarlas para deshacer cambios en archivos sin restaurar la instantánea completa.
  • Añade una descripción significativa al crear instantáneas. Esto te ayudará a identificar el propósito de cada instantánea más tarde.

Antes de continuar, asegúrate de tener btrfsmaintenance instalado para aprovechar las funciones de gestión automática de instantáneas.

Para aquellos que prefieren gestionar Btrfs, instantáneas y más a través de una GUI. Btrfs Assistant es un proyecto increíble para principiantes.

Configuración de Limpieza Automática de Instantáneas

Sección titulada «Configuración de Limpieza Automática de Instantáneas»

Vamos a configurar la limpieza automática de instantáneas usando Btrfs Assistant. Esto ayudará a gestionar tus instantáneas de manera efectiva sin intervención manual.

Sigue estos pasos:

  1. Inicia Btrfs Assistant abriendo una terminal y ejecutando:

    Ventana de terminal
    btrfs-assistant-launcher

    Alternativamente:

    Ventana de terminal
    sudo -E btrfs-assistant
  2. Navega a la pestaña Snapper Settings:

    Modifica los ajustes de Retención de Instantáneas de la siguiente manera:

    • Asegúrate de que la configuración root esté seleccionada
    • Introduce un valor de 0 para Horaria, Diaria, Semanal, Mensual y Anual.
    • Desmarca Habilitar instantáneas de línea de tiempo.
    • Introduce un valor de 10 en Número.
    • Añade un ✅ a Limpieza de Snapper habilitada.
    • Haz clic en el botón Guardar en la parte superior derecha y en Aplicar cambios de systemd en la parte inferior derecha. snapper-cleanup.timer ahora estará habilitado para limpiar automáticamente las instantáneas antiguas según tu configuración.

Eliminando Instantáneas usando Btrfs Assistant

Sección titulada «Eliminando Instantáneas usando Btrfs Assistant»
  1. Abre Btrfs Assistant:

    Ventana de terminal
    btrfs-assistant-launcher

    Alternativamente:

    Ventana de terminal
    sudo -E btrfs-assistant
  2. Ve a la pestaña Snapper Settings:

  3. Selecciona la(s) instantánea(s) que quieres eliminar de la lista.

  4. Haz clic en el botón Eliminar situado en la parte superior de la ventana.

  5. Regenera las entradas de tu gestor de arranque para reflejar los cambios:

    systemd-boot
    Ventana de terminal
    sudo sdboot-manage gen
    GRUB
    Ventana de terminal
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    Limine
    Ventana de terminal
    sudo limine-mkinitcpio

Echa un vistazo a su Wiki Oficial para una visión más profunda sobre lo que se puede hacer.

Ahora que hemos cubierto qué es una instantánea de Btrfs y sus casos de uso, hablemos de cómo gestionarlas usando una herramienta llamada Snapper creada por Arvin Schnell de openSUSE.

CachyOS usa la siguiente configuración de Snapper por defecto:
# subvolume to snapshot
SUBVOLUME="/"
# filesystem type
FSTYPE="btrfs"
# btrfs qgroup for space aware cleanup algorithms
QGROUP=""
# fraction or absolute size of the filesystems space the snapshots may use
SPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be free
FREE_LIMIT="0.2"
# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"
# run daily number cleanup
NUMBER_CLEANUP="yes"
# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="50"
NUMBER_LIMIT_IMPORTANT="15"
# create hourly snapshots
TIMELINE_CREATE="no"
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="5"
TIMELINE_LIMIT_DAILY="7"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"
# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP="yes"
# limits for empty pre-post-pair cleanup
EMPTY_PRE_POST_MIN_AGE="1800"

Aquí hay una lista de los comandos más comunes de Snapper.

Obtener configuración actual:
Ventana de terminal
sudo snapper get-config
Ejemplo de Salida:
Ventana de terminal
snapper list-configs
Config Subvolume
───────┼──────────
root /
Listar instantáneas disponibles + detalles:
Ventana de terminal
sudo snapper list
Ejemplo de Salida:
Ventana de terminal
# │ Type │ Pre # │ Date │ User │ Cleanup │ Description │ Userdata
────┼────────┼───────┼──────────────────────────┼──────┼─────────┼──────────────────────────────────────────────────────────────────────────┼─────────
0 single root current
715 pre Thu 22 Jan 2026 16:14:07 root number pacman -S -y -u --config /etc/pacman.conf --
716 post 715 Thu 22 Jan 2026 16:14:25 root number docker-buildx lilv sof-firmware zed
717 pre Sat 24 Jan 2026 11:19:48 root number pacman -S -y -u --config /etc/pacman.conf --
718 post 717 Sat 24 Jan 2026 11:20:19 root number bpf cachyos-hello cachyos-wallpapers cpupower jdk-openjdk ldb less libev
719 pre Sat 24 Jan 2026 11:20:31 root number pacman -U --config /etc/pacman.conf -- /home/mario/.cache/yay/visual-s
720 post 719 Sat 24 Jan 2026 11:20:36 root number visual-studio-code-bin
721 pre Sat 24 Jan 2026 20:46:40 root number pacman -Syu plasma-login-manager
722 post 721 Sat 24 Jan 2026 20:46:48 root number cmake fastfetch harfbuzz harfbuzz-icu jdk21-openjdk lib32-harfbuzz lib32
723 pre Sat 24 Jan 2026 20:46:53 root number pacman -R sddm-kcm cachyos-themes-sddm sddm
724 post 723 Sat 24 Jan 2026 20:46:56 root number cachyos-themes-sddm sddm sddm-kcm
725 pre Sun 25 Jan 2026 08:05:05 root number pacman -S -y -u --config /etc/pacman.conf --
726 post 725 Sun 25 Jan 2026 08:05:11 root number plasma-login-manager
727 pre Sun 25 Jan 2026 15:55:28 root number pacman -S --config /etc/pacman.conf -- cachyos-extra-znver4/caligula
728 post 727 Sun 25 Jan 2026 15:55:30 root number caligula
  • Aquí hay un resumen de las columnas:
    • #: Indica el número de la instantánea que se usa en otros comandos.
    • Type: Indica si la instantánea es una instantánea única o parte de un par pre/post.
      • single: Estas instantáneas no tienen una relación especial con otras instantáneas.
      • pre: Estas instantáneas están destinadas a ser tomadas antes de cualquier tipo de cambio en el sistema (como editar un archivo o instalar un paquete).
      • post: Como su nombre lo indica, estas instantáneas se refieren a las tomadas después de que ha ocurrido un cambio en el sistema. Están vinculadas a su correspondiente instantánea pre.
    • Pre #: Para instantáneas post, esta columna indica el número de la instantánea pre correspondiente.
    • Date: La fecha y hora en que se creó la instantánea.
    • User: El usuario que creó la instantánea.
    • Cleanup: Indica el algoritmo de limpieza aplicado a la instantánea.
      • Hay varios algoritmos de limpieza disponibles en Snapper, como number, timeline y empty-pre-post. En este ejemplo, se utiliza el algoritmo number, lo que significa que las instantáneas más antiguas se eliminarán según un límite predefinido.
      • timeline: Las instantáneas se limpian según su antigüedad y frecuencia.
      • empty-pre-post: Elimina pares de instantáneas pre/post con diferencias vacías.
    • Description: Una breve descripción de la instantánea, que a menudo indica el motivo de su creación.
    • Userdata: Datos adicionales definidos por el usuario asociados con la instantánea. Para más detalles sobre las columnas de salida
Crear una nueva instantánea:
Ventana de terminal
sudo snapper create --type single --description "Descripción de Mi Instantánea"
Modificar una instantánea:
Ventana de terminal
sudo snapper modify <opción> <número_de_instantánea>
Opciones disponibles:
Ventana de terminal
Options for 'modify' command:
--description, -d <description> Description for snapshot.
--cleanup-algorithm, -c <algo> Cleanup algorithm for snapshot.
--userdata, -u <userdata> Userdata for snapshot.
--read-only Set snapshot read-only.
--read-write Set snapshot read-write.
--default Set snapshot as default snapshot.
Ejemplo: Modificando la descripción de la instantánea 729:
Ventana de terminal
sudo snapper modify 729 --description 'Mi Nueva Descripción de Instantánea'
Eliminación de instantáneas:
Eliminar una sola instantánea:
Ventana de terminal
sudo snapper delete <número_de_instantánea>
Eliminar un rango de instantáneas:
Ventana de terminal
sudo snapper delete 718-721

Las instantáneas 718, 719, 720 y 721 serán eliminadas.

Página man del comando oficial de Snapper:

Guía del archivo de configuración de Snapper:

Guía de la Wiki de Arch:

Ajustar la configuración de visualización de instantáneas del gestor de arranque Limine

Sección titulada «Ajustar la configuración de visualización de instantáneas del gestor de arranque Limine»
  • Limita el número de instantáneas que se muestran en el menú del gestor de arranque de Limine para evitar el desorden:
  1. Crea una copia de seguridad del archivo de configuración de limine-snapper-sync:
    Ventana de terminal
    sudo cp /etc/limine-snapper-sync.conf /etc/limine-snapper-sync.conf.orig
  2. Edita el archivo de configuración de limine-snapper-sync:
    Ventana de terminal
    sudo nano /etc/limine-snapper-sync.conf
    Fragmento de salida esperado:
    Ventana de terminal
    ### Max Snapshot Entries
    ### Sets the limit for how many snapshot entries show up in the boot menu.
    ### This depends on the size of your FAT32 boot partition and how many different kernel and module versions you want to keep.
    ### A larger FAT32 boot partition allows more snapshot entries.
    MAX_SNAPSHOT_ENTRIES=10
    Opcionalmente, ajusta el formato del nombre de la instantánea:
    Ventana de terminal
    ### Snapshot Name Format
    ### Choose a format for how snapshot entries look in the Limine bootloader:
    ### 0. ID=111 2023-12-20 10:59:59 (default)
    ### 1. 111│2023-12-20 10:59:59
    ### 2. 111 │ 2023-12-20 10:59:59
    ### 3. 2023-12-20 10:59:59│111
    ### 4. 2023-12-20 10:59:59 │ 111
    ### 5. 2023-12-20 10:59:59
    ### 6. 111
    ### 7. 111│snapshot description
    ### 8. 2023-12-20 10:59:59│snapshot description
    ### 9. │snapshot description
    SNAPSHOT_FORMAT_CHOICE=8
    8 es una buena opción ya que muestra la fecha y la hora junto con la descripción de la instantánea.
  3. Guarda el archivo y sal presionando CTRL+O Enter CTRL+X
Limine
  1. Desde el menú del gestor de arranque de Limine, navega al menú de Instantáneas:
  2. Selecciona la instantánea y el kernel desde el que quieres restaurar:
    /_astro/limine-snapshotMenu-2.CH75QBQf.jpg/_astro/limine-snapshotMenu-1.CJauujJM.jpg
  3. Tu sistema está ahora en modo de solo lectura. Debería aparecer una notificación emergente indicando que se detectó una instantánea y preguntando si quieres restaurar desde ella:
  4. Haz clic en Restaurar ahora. Se abrirá una ventana de terminal con un prompt y pedirá algunas confirmaciones:
    Ejemplo de Prompt de Restauración
    Snapshot ID : 2
    Date : 2026-01-26 11:19:14
    Description : nc-git
    Restore method : replace
    Confirm restore of snapshot 2 using the "replace" method?
    Type [y]es to restore, [l]ist to display all snapshots, or [c]ancel to abort.
    Your input: yes
    Enter a description for the "backup" of the subvolume: @
    Your input: @
  5. Escribe yes y opcionalmente añade una descripción para la instantánea de respaldo.
  6. El proceso de restauración comenzará. Una vez completado, escribe yes una vez más en el nuevo prompt para reiniciar tu sistema:
    Ventana de terminal
    The restore is complete. Please reboot now:
    Type [y]es to reboot, [n]o or [c]ancel to abort rebooting.
    Your input: yes
GRUB
  1. Desde el menú del gestor de arranque de GRUB. Arranca en la instantánea y el kernel deseados desde los que quieres restaurar.

  2. Una vez arrancado. Abre Btrfs Assistant:

    Ventana de terminal
    btrfs-assistant-launcher

    Alternativamente:

    Ventana de terminal
    sudo -E btrfs-assistant
  3. Ve a la pestaña Snapper → pestaña “Browse/Restore” y selecciona la instantánea desde la que arrancaste:

  4. Haz clic en el botón Restaurar y reinicia tu sistema para aplicar los cambios.