Cómo usar instantáneas BTRFS

Cómo usar instantáneas BTRFS
El sistema de archivos BTRFS tiene soporte de instantánea de nivel de archivos incorporado. Puede crear un subvolumen en su sistema de archivos BTRFS y tomar instantáneas de los archivos/directorios en ese subvolumen. Tomar una instantánea de un subvolumen guardará el estado de los archivos/directorios en ese subvolumen. Puede recuperar cualquier archivo/directorios del subvolumen de la instantánea en caso de que lo necesite.

La función de instantánea del sistema de archivos BTRFS utiliza el principio de copia-on-write (vaca). Por lo tanto, no toma mucho espacio en disco, y puede tomar instantáneas de un subvolumen al instante.

El sistema de archivos BTRFS admite 2 tipos de instantáneas.

  1. Instantáneas de escritura: Si toma una instantánea de escritura, puede modificar los archivos/directorios de esa instantánea más tarde. Este es el tipo de instantánea predeterminado del sistema de archivos BTRFS.
  2. Instantáneas de solo lectura: Si toma una instantánea de solo lectura, no puede modificar los archivos/directorios de esa instantánea más tarde.

Este artículo le mostrará cómo tomar instantáneas de solo lectura y solo lectura de sus subvolúmenes del sistema de archivos BTRFS. También le mostraré cómo actualizar una instantánea de escritura y recuperar archivos de una instantánea. Te mostraré cómo eliminar una instantánea también. Entonces empecemos.

Requisitos previos

Para probar los ejemplos de este artículo,

  • Debe tener instalado el sistema de archivos BTRFS en su computadora.
  • Necesita tener un disco duro o un SSD con al menos 1 partición gratuita (de cualquier tamaño).

Tengo un disco duro de 20 GB SDB en mi máquina ubuntu. He creado 2 particiones sdb1 y sdb2 En este disco duro. Usaré la partición sdb1 en este articulo.

$ sudo lsblk -e7

Su disco duro o SSD puede tener un nombre diferente al mío, también lo harán las particiones. Entonces, asegúrese de reemplazarlos con el tuyo de ahora en adelante.

Si necesita ayuda para instalar el sistema de archivos BTRFS en Ubuntu, consulte mi artículo Instalar y usar BTRFS en Ubuntu 20.04 LTS.

Si necesita ayuda para instalar el sistema de archivos BTRFS en Fedora, consulte mi artículo Instalar y usar BTRFS en Fedora 33.

Creación de un sistema de archivos BTRFS

Para experimentar con subvolumes BTRFS, debe crear un sistema de archivos BTRFS.

Para crear un sistema de archivos BTRFS con la etiqueta datos sobre el sdb1 Partición, ejecute el siguiente comando:

$ sudo mkfs.BTRFS -L DATA /DEV /SDB1

Se debe crear un sistema de archivos BTRFS.

Crear un directorio /datos Con el siguiente comando:

$ sudo mkdir -v /datos

Para montar el sistema de archivos BTRFS creado en el sdb1 partición en el /datos directorio, ejecute el siguiente comando:

$ sudo monte /dev /sdb1 /data

El sistema de archivos BTRFS debe montarse como puede ver en la captura de pantalla a continuación.

$ df -h /datos

Preparación del sistema de archivos BTRFS para instantáneas

En BTRFS, solo puede tomar instantáneas de subvolúmenes BTRFS. La raíz principal de un sistema de archivos BTRFS también es un subvolumen. Por lo tanto, puede tomar la copia de seguridad de todo el sistema de archivos BTRFS, así como subvolúmenes específicos.

Esta sección creará un subvolumen BTRFS /Data/Projects/Web1 y cree los archivos necesarios para las siguientes secciones de este artículo a continuación. También crearé un directorio donde puedas mantener tus instantáneas. En las siguientes secciones, le mostraré cómo tomar instantáneas (escritas y de solo lectura), actualizar una instantánea de escritura y recuperar archivos de la instantánea. Entonces empecemos.

Primero, cree un nuevo directorio /datos/proyectos como sigue:

$ sudo mkdir -v /data /proyectos

Crea un nuevo subvolumen Web1 en el /datos/proyectos Directorio de la siguiente manera:

$ sudo BTRFS Subvolume Create/Data/Projects/Web1

Crea un nuevo archivo índice.html en el /Data/Projects/Web1 Subvolumen de la siguiente manera:

$ sudo nano/data/proyectos/web1/índice.html

Escriba las siguientes líneas de códigos en el índice.html archivo.




Sitio web de demostración



Hola mundo 4



Una vez que haya terminado, presione + X seguido por Y y Para salvar el índice.html archivo.

Crea un nuevo archivo estilo.CSS en el /Data/Projects/Web1 Subvolumen de la siguiente manera:

$ sudo nano/data/proyectos/web1/estilo.CSS

Escriba las siguientes líneas de códigos en el estilo.CSS archivo.

H1
color verde;

Una vez que haya terminado, presione + X seguido por Y y Para salvar el estilo.CSS archivo.

Ahora el /Data/Projects/Web1 Subvolume tiene el índice.html y estilo.CSS archivo.

$ LS -LH/Data/Projects/Web1

Quiero mantener todas las instantáneas de este sistema de archivos BTRFS en el /datos/.instantáneas directorio.

Crear el /datos/.instantáneas directorio con el siguiente comando:

$ sudo mkdir -v /data /.instantáneas

Tomar instantáneas de un subvolumen

Para tomar una instantánea del /Data/Projects/Web1 subvolumen en el /datos/.Instantáneas/Web1-2020-12-25 directorio (se creará automáticamente), ejecute el siguiente comando:

$ sudo BTRFS Subvolume Snapshot/Data/Projects/Web1/Data/.Instantáneas/Web1-2020-12-25

Una instantánea del /Data/Projects/Web1 El directorio debe crearse en el /datos/.Instantáneas/Web1-2020-12-25 directorio.

Como puede ver en la captura de pantalla a continuación, un nuevo subvolumen .Instantáneas/Web1-2020-12-25 es creado. Una instantánea es en realidad un subvolumen.

$ SUDO BTRFS Lista /datos de subvolumen

Puede ver más información sobre la instantánea que ha creado en el /datos/.Instantáneas/Web1-2020-12-25 Directorio de la siguiente manera:

$ sudo BTRFS Subvolume show /data /.Instantáneas/Web1-2020-12-25

Como puede ver, todos los archivos que están en el /Data/Projects/Web1 Subvolume están en el /datos/.Instantáneas/Web1-2020-12-25 instantánea.

$ árbol -a /datos

Recuperación de archivos de instantáneas

En esta sección, le mostraré cómo recuperar archivos de las instantáneas de BTRFS.

Primero, les voy a mostrar cómo recuperar un solo archivo de la instantánea.

Abre el /Data/Projects/Web1/Index.html Archivo con el editor de texto Nano de la siguiente manera:

$ sudo nano/data/proyectos/web1/índice.html

Haga cualquier cambio que desee.

Una vez que haya terminado, presione + X seguido por Y y Para guardar el archivo.

Como puede ver, el principal índice.html el archivo es diferente del índice.html Archivo en la instantánea.

$ Cat/Data/Projects/Web1/Index.html
$ Cat /Data /.Instantáneas/Web1-2020-12-25/índice.html

Hemos realizado los cambios en la principal índice.html El archivo no está deseado y queremos recuperar el índice.html Archivo desde la instantánea.

Puedes restaurar el índice.html Archivo desde la instantánea de la siguiente manera:

$ sudo cp -v /data /.Instantáneas/Web1-2020-12-25/índice.HTML/Data/Projects/Web1/Index.html

Como puedes ver, el índice.html el archivo se restaura desde la instantánea.

$ Cat/Data/Projects/Web1/Index.html
$ Cat /Data /.Instantáneas/Web1-2020-12-25/índice.html

Ahora, veamos cómo recuperar todos los archivos/directorios de la instantánea.

Eliminar todos los archivos del /Data/Projects/Web1 instantánea de la siguiente manera:

$ sudo rm -rv/data/proyectos/web1/*

Para recuperar todos los archivos/directorios de la instantánea, ejecute el siguiente comando:

$ sudo rsync -avz /data /.Instantáneas/Web1-2020-12-25//Data/Projects/Web1/

Como puede ver, los archivos/directorios se restauran desde la instantánea.

$ LS -LH/Data/Projects/Web1

Finalmente, veamos cómo recuperar archivos/directorios de la instantánea en modo espejo. En el modo Mirror, los archivos/directorios del subvolumen serán los mismos que en la instantánea. Si hay archivos/directorios en el subvolumen que no está disponible en la instantánea, se eliminarán.

Creemos un nuevo archivo en el subvolumme para diferenciar el árbol de archivos desde la instantánea.

Crear un Readme.TXT archivo en el /Data/Projects/Web1 Subvolumen de la siguiente manera:

$ Echo "Hello World 5" | Sudo Tee/Data/Projects/Web1/Readme.TXT

Como puede ver, el árbol de archivos del /Data/Projects/Web1 El subvolumen es diferente del /datos/.Instantáneas/Web1-2020-12-25 instantánea.

$ árbol -a /datos

Para restaurar los archivos/directorios de la /datos/.Instantáneas/Web1-2020-12-25 instantánea al /Data/Projects/Web1 Subvolumen en modo espejo, ejecute el siguiente comando:

$ sudo rsync -avz --delete /data /.Instantáneas/Web1-2020-12-25//Data/Projects/Web1/

Todos los archivos/directorios del /Data/Projects/Web1 Se debe restaurar el subvolumen (en modo espejo) desde el /datos/.Instantáneas/Web1-2020-12-25 instantánea.

El árbol de archivos del /Data/Projects/Web1 subvolumen y el /datos/.Instantáneas/Web1-2020-12-25 La instantánea debe ser la misma.

Como puede ver, el índice.archivo y estilo html.El contenido del archivo CSS es el mismo en el /Data/Projects/Web1 subvolumen y el /datos/.Instantáneas/Web1-2020-12-25 instantánea.

Contenido del índice.html y estilo.CSS archivo en el /Data/Projects/Web1 subvolumen.

$ Cat/Data/Projects/Web1/Index.html
$ Cat/Data/Projects/Web1/Style.CSS

Contenido del índice.html y estilo.CSS archivo en el /datos/.Instantáneas/Web1-2020-12-25 instantánea.

$ Cat/Data/Projects/Web1/Index.html
$ Cat/Data/Projects/Web1/Style.CSS

Actualizar una instantánea

Por defecto, el sistema de archivos BTRFS toma instantáneas de escritura. Una instantánea de BTRFS es como un subvolumen. Por lo tanto, puede modificar/actualizar los archivos/directorios de una instantánea de escritura.

Actualicemos el índice.html archivo en el /Data/Projects/Web1 subvolumen.

Primero, abra el índice.html archivo del /Data/Projects/Web1 subvolumen con el nano Editor de texto de la siguiente manera:

$ sudo nano/data/proyectos/web1/índice.html

Haga cualquier cambio que desee. Una vez que haya terminado, presione + X seguido por Y y Para salvar el índice.html archivo.

Como puede ver, el índice.archivo html del /Data/Projects/Web1 El subvolumen es diferente del /datos/.Instantáneas/Web1-2020-12-25 instantánea.

$ Cat/Data/Projects/Web1/Index.html
$ Cat /Data /.Instantáneas/Web1-2020-12-25/índice.html

Quieres mantener el índice.html archivo del /Data/Projects/Web1 subvolumen.

Para actualizar el índice.html archivo en el /datos/.Instantáneas/Web1-2020-12-25 instantánea, ejecute el siguiente comando:

$ sudo cp -v/data/proyectos/web1/índice.html /data /.Instantáneas/Web1-2020-12-25/índice.html

Como puedes ver, el índice.html archivo del /datos/.Instantáneas/Web1-2020-12-25 Se actualiza la instantánea.

Actualizar una instantánea es tan fácil como copiar nuevos archivos a la instantánea.

Tomar instantáneas de solo lectura de un subvolumen

A veces, no quieres que las instantáneas que hayan tomado se actualicen de ninguna manera. En ese caso, puede crear instantáneas de solo lectura.

Por ejemplo, para crear una instantánea de solo lectura /datos/.Instantáneas/Web1-2020-12-26 del /Data/Projects/Web1 Subvolumen, ejecute el siguiente comando:

$ sudo BTRFS Subvolume Snapshot -R/Data/Projects/Web1/Data/.Instantáneas/Web1-2020-12-26

Como puede ver, un nuevo subvolumen .Instantáneas/Web1-2020-12-26 es creado.

$ SUDO BTRFS Lista /datos de subvolumen

Como puede ver, la instantánea /datos/.Instantáneas/Web1-2020-12-26 es de solo lectura.

$ sudo BTRFS Subvolume show /data /.Instantáneas/Web1-2020-12-26

Actualicemos el índice.html archivo del /Data/Projects/Web1 subvolumen.

Para hacer eso, abra el índice.html archivo del /Data/Projects/Web1 subvolumen con el nano Editor de texto de la siguiente manera:

$ sudo nano/data/proyectos/web1/índice.html

Haga cualquier cambio que desee. Una vez que haya terminado, presione + X seguido por Y y Para guardar los cambios.

Como puedes ver, el índice.html en el /Data/Projects/Web1 El subvolumen es diferente del /datos/.Instantáneas/Web1-2020-12-26 instantánea.

$ Cat/Data/Projects/Web1/Index.html
$ Cat /Data /.Instantáneas/Web1-2020-12-26/índice.html

Intentemos actualizar el índice.html archivo en el /datos/.Instantáneas/Web1-2020-12-26 instantánea.

$ sudo cp -v/data/proyectos/web1/índice.html /data /.Instantáneas/Web1-2020-12-26/índice.html

Como puede ver, no puede actualizar el índice.html archivo del /datos/.Instantáneas/Web1-2020-12-26 instantánea porque la instantánea es de solo lectura.

Eliminar una instantánea

Te he dicho anteriormente que una instantánea de BTRFS es como un subvolumen. Por lo tanto, puede eliminar una instantánea BTRFS al igual que eliminar un subvolumen BTRFS. Mismo comando.

Así es como se montó el árbol de archivos del sistema de archivos BTRFS en el /datos se parece al directorio en este momento.

$ árbol -a /datos

Retiremos el .Instantáneas/Web1-2020-12-25 instantánea.

$ SUDO BTRFS Lista /datos de subvolumen

Para eliminar el /datos/.Instantáneas/Web1-2020-12-25 instantánea, ejecute el siguiente comando:

$ sudo btrfs subvolume eliminar /data /.Instantáneas/Web1-2020-12-25

Como puede ver, la instantánea .Instantáneas/Web1-2020-12-25 no es mas.

$ SUDO BTRFS Lista /datos de subvolumen

Como puede ver, los archivos/directorios del /datos/.Instantáneas/Web1-2020-12-25 La instantánea también se elimina.

$ árbol -a /datos

Conclusión

Este artículo le ha mostrado cómo tomar instantáneas de lectura y solo lectura de sus subvolúmenes de sistemas de archivos BTRFS. También le he mostrado cómo actualizar una instantánea de escritura y recuperar archivos de una instantánea. Te he mostrado cómo eliminar una instantánea BTRFS también. Este artículo debería ayudarlo a comenzar con la función de instantánea BTRFS.