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.
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,
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 -e7Su 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 /SDB1Se debe crear un sistema de archivos BTRFS.
Crear un directorio /datos Con el siguiente comando:
$ sudo mkdir -v /datosPara montar el sistema de archivos BTRFS creado en el sdb1 partición en el /datos directorio, ejecute el siguiente comando:
$ sudo monte /dev /sdb1 /dataEl sistema de archivos BTRFS debe montarse como puede ver en la captura de pantalla a continuación.
$ df -h /datosPreparació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 /proyectosCrea un nuevo subvolumen Web1 en el /datos/proyectos Directorio de la siguiente manera:
$ sudo BTRFS Subvolume Create/Data/Projects/Web1Crea un nuevo archivo índice.html en el /Data/Projects/Web1 Subvolumen de la siguiente manera:
$ sudo nano/data/proyectos/web1/índice.htmlEscriba las siguientes líneas de códigos en el índice.html archivo.
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.CSSEscriba las siguientes líneas de códigos en el estilo.CSS archivo.
H1Una 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/Web1Quiero 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áneasTomar 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-25Una 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 subvolumenPuede 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-25Como 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 /datosRecuperació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.htmlHaga 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.htmlHemos 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.htmlComo puedes ver, el índice.html el archivo se restaura desde la instantánea.
$ Cat/Data/Projects/Web1/Index.htmlAhora, 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/Web1Finalmente, 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.TXTComo 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 /datosPara 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.htmlContenido del índice.html y estilo.CSS archivo en el /datos/.Instantáneas/Web1-2020-12-25 instantánea.
$ Cat/Data/Projects/Web1/Index.htmlActualizar 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.htmlHaga 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.htmlQuieres 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.htmlComo 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-26Como puede ver, un nuevo subvolumen .Instantáneas/Web1-2020-12-26 es creado.
$ SUDO BTRFS Lista /datos de subvolumenComo 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-26Actualicemos 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.htmlHaga 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.htmlIntentemos 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.htmlComo 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 /datosRetiremos el .Instantáneas/Web1-2020-12-25 instantánea.
$ SUDO BTRFS Lista /datos de subvolumenPara 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-25Como puede ver, la instantánea .Instantáneas/Web1-2020-12-25 no es mas.
$ SUDO BTRFS Lista /datos de subvolumenComo puede ver, los archivos/directorios del /datos/.Instantáneas/Web1-2020-12-25 La instantánea también se elimina.
$ árbol -a /datosConclusió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.