La función de instantánea del sistema de archivos Btrfs utiliza el principio de copia en escritura (CoW). Por lo tanto, no ocupa mucho espacio en el disco y puede tomar instantáneas de un subvolumen al instante.
El sistema de archivos Btrfs admite 2 tipos de instantáneas.
- Instantáneas grabables: Si toma una instantánea grabable, 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.
- Instantáneas de solo lectura: Si toma una instantánea de solo lectura, no podrá modificar los archivos / directorios de esa instantánea más adelante.
Este artículo le mostrará cómo tomar instantáneas grabables y de solo lectura de sus subvolúmenes del sistema de archivos Btrfs. También le mostraré cómo actualizar una instantánea grabable y recuperar archivos de una instantánea. También te mostraré cómo eliminar una instantánea. Entonces empecemos.
Prerrequisitos
Para probar los ejemplos de este artículo,
- Debe tener el sistema de archivos Btrfs instalado en su computadora.
- Necesita tener un disco duro o SSD con al menos 1 partición libre (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, al igual que las particiones. Por lo tanto, asegúrese de reemplazarlos por los suyos a partir de ahora.
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 subvolúmenes Btrfs, necesita 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 datos / dev / sdb1
Se debe crear un sistema de archivos Btrfs.
Crea un directorio /datos con el siguiente comando:
$ sudo mkdir -v / data
Para montar el sistema de archivos Btrfs creado en el sdb1 partición en el /datos directorio, ejecute el siguiente comando:
$ sudo mount / dev / sdb1 / data
El sistema de archivos Btrfs debe estar montado 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 realizar la copia de seguridad de todo el sistema de archivos Btrfs, así como de subvolúmenes específicos.
Esta sección creará un subvolumen Btrfs / datos / proyectos / web1 y cree los archivos necesarios para las siguientes secciones de este artículo a continuación. También crearé un directorio donde puedes guardar tus instantáneas. En las siguientes secciones, le mostraré cómo tomar instantáneas (grabables y de solo lectura), actualizar una instantánea grabable y recuperar archivos de la instantánea. Entonces empecemos.
Primero, crea un nuevo directorio / datos / proyectos como sigue:
$ sudo mkdir -v / data / projects
Crea un nuevo subvolumen web1 en el / datos / proyectos directorio de la siguiente manera:
$ sudo btrfs subvolumen crear / datos / proyectos / web1
Crea un archivo nuevo índice.html en el / datos / proyectos / web1 subvolumen de la siguiente manera:
$ sudo nano / data / projects / web1 / index.html
Escriba las siguientes líneas de códigos en el índice.html expediente.
Hola mundo 4
Una vez que haya terminado, presione
Crea un archivo nuevo estilo.css en el / datos / proyectos / web1 subvolumen de la siguiente manera:
$ sudo nano / data / projects / web1 / style.css
Escriba las siguientes líneas de códigos en el estilo.css expediente.
h1color verde;
Una vez que haya terminado, presione
Ahora el / datos / proyectos / web1 subvolumen tiene el índice.html y estilo.css expediente.
$ ls -lh / datos / proyectos / web1
Quiero mantener todas las instantáneas de este sistema de archivos Btrfs en el /datos/.instantáneas directorio.
Crea 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 / datos / proyectos / web1 subvolumen en el /datos/.instantáneas / web1-2020-12-25 directorio (se creará automáticamente), ejecute el siguiente comando:
$ sudo btrfs subvolumen instantánea / datos / proyectos / web1 / datos /.instantáneas / web1-2020-12-25
Una instantánea del / datos / proyectos / 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 de subvolúmenes / datos
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 subvolumen show / data /.instantáneas / web1-2020-12-25
Como puede ver, todos los archivos que están en el / datos / proyectos / web1 subvolumen están en el /datos/.instantáneas / web1-2020-12-25 instantánea.
$ árbol -a / data
Recuperación de archivos de instantáneas
En esta sección, le mostraré cómo recuperar archivos de las instantáneas Btrfs.
Primero, le mostraré cómo recuperar un solo archivo de la instantánea.
Abre el / datos / proyectos / web1 / index.html archivo con el editor de texto nano de la siguiente manera:
$ sudo nano / data / projects / web1 / index.html
Realice los cambios que desee.
Una vez que haya terminado, presione
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 / index.html
Hemos realizado los cambios en la principal índice.html archivo no son deseados y queremos recuperar el índice.html archivo de la instantánea.
Puede restaurar el índice.html archivo de la instantánea de la siguiente manera:
$ sudo cp -v / data /.instantáneas / web1-2020-12-25 / index.html / data / projects / web1 / index.html
Como puede 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 / index.html
Ahora, veamos cómo recuperar todos los archivos / directorios de la instantánea.
Elimine todos los archivos de la / datos / proyectos / web1 instantánea de la siguiente manera:
$ sudo rm -rv / data / projects / 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 / datos / proyectos / web1
Finalmente, veamos cómo recuperar archivos / directorios de la instantánea en modo espejo. En el modo espejo, los archivos / directorios del subvolumen serán los mismos que en la instantánea. Si hay archivos / directorios en el subvolumen que no están disponibles en la instantánea, se eliminarán.
Creemos un nuevo archivo en el subvolumen para diferenciar el árbol de archivos de la instantánea.
Crear un README.TXT archivo en el / datos / proyectos / web1 subvolumen de la siguiente manera:
$ echo "hola mundo 5" | sudo tee / data / projects / web1 / README.TXT
Como puede ver, el árbol de archivos del / datos / proyectos / web1 subvolumen es diferente del /datos/.instantáneas / web1-2020-12-25 instantánea.
$ árbol -a / data
Para restaurar los archivos / directorios del /datos/.instantáneas / web1-2020-12-25 instantánea a la / datos / proyectos / 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 / datos / proyectos / web1 El subvolumen debe restaurarse (en modo espejo) desde /datos/.instantáneas / web1-2020-12-25 instantánea.
El árbol de archivos del / datos / proyectos / 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 / datos / proyectos / web1 subvolumen y el /datos/.instantáneas / web1-2020-12-25 instantánea.
Contenido del índice.html y estilo.css archivo en el / datos / proyectos / 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
De forma predeterminada, el sistema de archivos Btrfs toma instantáneas grabables. Una instantánea de Btrfs es como un subvolumen. Entonces, puede modificar / actualizar los archivos / directorios de una instantánea grabable.
Actualicemos el índice.html archivo en el / datos / proyectos / web1 subvolumen.
Primero, abra el índice.html archivo de la / datos / proyectos / web1 subvolumen con el nano editor de texto de la siguiente manera:
$ sudo nano / data / projects / web1 / index.html
Realice los cambios que desee. Una vez que haya terminado, presione
Como puede ver, el índice.archivo html del / datos / proyectos / web1 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 / index.html
Quieres mantener el índice.html archivo de la / datos / proyectos / 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 / projects / web1 / index.html / data /.instantáneas / web1-2020-12-25 / index.html
Como puede ver, el índice.html archivo de la /datos/.instantáneas / web1-2020-12-25 la instantánea está actualizada.
Actualizar una instantánea es tan fácil como copiar archivos nuevos a la instantánea.
Tomar instantáneas de solo lectura de un subvolumen
A veces, no desea que las instantáneas que ha 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 de El / datos / proyectos / web1 subvolumen, ejecute el siguiente comando:
$ sudo btrfs subvolumen instantánea -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 de subvolúmenes / datos
Como puede ver, la instantánea /datos/.instantáneas / web1-2020-12-26 es de solo lectura.
$ sudo btrfs subvolumen show / data /.instantáneas / web1-2020-12-26
Actualicemos el índice.html archivo de la / datos / proyectos / web1 subvolumen.
Para hacer eso, abra el índice.html archivo de la / datos / proyectos / web1 subvolumen con el nano editor de texto de la siguiente manera:
$ sudo nano / data / projects / web1 / index.html
Realice los cambios que desee. Una vez que haya terminado, presione
Como puede ver, el índice.html en el / datos / proyectos / web1 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 / index.html
Intentemos actualizar el índice.html archivo en el /datos/.instantáneas / web1-2020-12-26 instantánea.
$ sudo cp -v / data / projects / web1 / index.html / data /.instantáneas / web1-2020-12-26 / index.html
Como puede ver, no puede actualizar el índice.html archivo de la /datos/.instantáneas / web1-2020-12-26 instantánea porque la instantánea es de solo lectura.
Eliminar una instantánea
Te dije antes que una instantánea Btrfs es como un subvolumen. Por lo tanto, puede eliminar una instantánea Btrfs del mismo modo que elimina un subvolumen Btrfs. Mismo comando.
Así es como se monta el árbol de archivos del sistema de archivos Btrfs en el /datos el directorio parece en este momento.
$ árbol -a / data
Quitemos el .instantáneas / web1-2020-12-25 instantánea.
$ sudo btrfs lista de subvolúmenes / datos
Para quitar el /datos/.instantáneas / web1-2020-12-25 instantánea, ejecute el siguiente comando:
$ sudo btrfs subvolumen eliminar / datos /.instantáneas / web1-2020-12-25
Como puede ver, la instantánea .instantáneas / web1-2020-12-25 no es mas.
$ sudo btrfs lista de subvolúmenes / datos
Como puede ver, los archivos / directorios del /datos/.instantáneas / web1-2020-12-25 la instantánea también se elimina.
$ árbol -a / data
Conclusión
Este artículo le ha mostrado cómo tomar instantáneas grabables y de solo lectura de sus subvolúmenes del sistema de archivos Btrfs. También le he mostrado cómo actualizar una instantánea grabable y recuperar archivos de una instantánea. También le he mostrado cómo eliminar una instantánea Btrfs. Este artículo debería ayudarlo a comenzar con la función de instantánea Btrfs.