Cómo hacer una copia de seguridad de las instantáneas de Btrfs en unidades externas

De forma predeterminada, puede almacenar las instantáneas que tome de sus subvolúmenes Btrfs en el mismo sistema de archivos Btrfs, pero no es posible almacenar las instantáneas de un sistema de archivos Btrfs directamente en otro sistema de archivos Btrfs. Sin embargo, el sistema de archivos Btrfs le proporciona las herramientas necesarias para realizar copias de seguridad de las instantáneas de un sistema de archivos Btrfs en otro sistema de archivos Btrfs. Este artículo le muestra cómo hacer una copia de seguridad de las instantáneas Btrfs en un sistema de archivos Btrfs externo en una unidad externa.

Prerrequisitos

Para probar los ejemplos incluidos en este artículo, debe cumplir los siguientes requisitos previos:

  • Tenga el sistema de archivos Btrfs instalado en su computadora.
  • Tener un disco duro o SSD con al menos 2 particiones libres (de cualquier tamaño).

Tengo el disco duro de 20 GB, sdb , en mi máquina Ubuntu. He creado dos particiones, sdb1 y sdb2 , en este disco duro.

$ sudo lsblk -e7

Nota : Su disco duro o SSD tendrá un nombre diferente al mío, al igual que las particiones. Por lo tanto, asegúrese de reemplazar estos nombres con los suyos a partir de ahora.

Crearé sistemas de archivos Btrfs en las particiones sdb1 y sdb2 . Las instantáneas creadas en el sistema de archivos Btrfs ( sdb1 ) se respaldarán en el sistema de archivos Btrfs creado en la partición sdb2 . El sistema de archivos Btrfs creado en la partición sdb2 actuará como unidad externa. También puede utilizar una unidad flash USB o un disco duro externo solo asegúrese de formatearlo con el sistema de archivos Btrfs.

Para obtener ayuda con la instalación del sistema de archivos Btrfs en Ubuntu, consulte mi artículo .

Para obtener ayuda con la instalación del sistema de archivos Btrfs en Fedora, consulte mi artículo .

Creación de sistemas de archivos Btrfs necesarios

Daré formato a las particiones sdb1 y sdb2 como Btrfs. Voy a utilizar el sdb1 partición para almacenar las instantáneas de datos y Btrfs. Voy a utilizar el sdb2 partición de copia de seguridad de las instantáneas de las Btrfs sistema de archivos creado en el sdb1 partición.

Para crear un sistema de archivos Btrfs en la partición sdb1 y darle los datos de la etiqueta del sistema de archivos, ejecute el siguiente comando:

$ sudo mkfs.btrfs -L data /dev/sdb1

Ahora debería crearse un sistema de archivos Btrfs en la partición sdb1 .

Para crear un sistema de archivos Btrfs en la partición sdb2 y darle las instantáneas de la etiqueta del sistema de archivos, ejecute el siguiente comando:

$ sudo mkfs.btrfs -L snapshots /dev/sdb2

Ahora debería crearse un sistema de archivos Btrfs en la partición sdb2 .

Cree los directorios / datos y / instantáneas para montar las particiones sdb1 y sdb2 , respectivamente, de la siguiente manera:

$ sudo mkdir -v /{data,snapshots}

Monte el sistema de archivos Btrfs que ha creado en la partición sdb1 en el directorio / data, de la siguiente manera:

$ sudo mount /dev/sdb1 /data

De la misma manera, monte el sistema de archivos Btrfs que ha creado en la partición sdb2 en el directorio / snapshots , de la siguiente manera:

$ sudo mount /dev/sdb2 /snapshots

Como puede ver en la captura de pantalla a continuación, ambos sistemas de archivos Btrfs ( particiones sdb1 y sdb2 ) se han montado correctamente.

$ df -h -t btrfs

Tomando instantáneas de un sistema de archivos Btrfs

En esta sección, crearemos el proyecto ficticio web1 en el subvolumen Btrfs / data / projects / web1 . Tomaremos una instantánea de ese subvolumen en esta sección, así como algunas otras instantáneas en secciones posteriores de este artículo.

Primero, cree el nuevo directorio / datos / proyectos , de la siguiente manera:

$ sudo mkdir -v /data/projects

A continuación, cree el nuevo subvolumen web1 en el directorio / data / projects , de la siguiente manera:

$ sudo btrfs subvolume create /data/projects/web1

Finalmente, cree el nuevo archivo index.html en el subvolumen / data / projects / web1 con el editor de texto nano, de la siguiente manera:

$ sudo nano /data/projects/web1/index.html

Escriba las siguientes líneas de código en el archivo index.html:

&lt!DOCTYPE html&gt

&lthtml&gt

&lthead&gt

        &lttitle&gtDemo Website&lt/title&gt

        &ltlink rel=“stylesheet” href=“style.css”/&gt

&lt/head&gt

&ltbody&gt

        &lth1&gtHello World&lt/h1&gt

&lt/body&gt

&lt/html&gt

Una vez que haya terminado, presione &lt Ctrl &gt + X seguido de Y y &lt Enter &gt para guardar el archivo index.html .

De la misma manera, cree el nuevo archivo style.css en el subvolumen / data / projects / web1 de la siguiente manera:

$ sudo nano /data/projects/web1/style.css

Escriba las siguientes líneas de código en el archivo style.css :

h1 {

        color: green

}

Una vez que haya terminado, presione &lt Ctrl &gt + X seguido de Y y &lt Enter &gt para guardar el archivo style.css .

Ahora, el subvolumen / data / projects / web1 contiene los archivos index.html y style.css .

$ ls -lh /data/projects/web1

Mantendremos todas las instantáneas de este sistema de archivos Btrfs en el directorio /data/.snapshots .

Primero, cree el directorio /data/.snapshots con el siguiente comando:

$ sudo mkdir -v /data/.snapshots

A continuación, cree la instantánea de solo lectura /data/.snapshots/web1-2020-12-30 del subvolumen / data / projects / web1 con el siguiente comando:

$ sudo btrfs subvolume snapshot -r /data/projects/web1 /data/.snapshots/web1-20201230

Como puede ver, se ha creado la nueva instantánea /data/.snapshots/web1-2020-12-30 .

$ sudo btrfs subvolume list /data

Copia de seguridad de instantáneas en una unidad externa

Para realizar una copia de seguridad de la instantánea /data/.snapshots/web1-2020-12-30 en otro sistema de archivos Btrfs (unidad externa sdb2, en este caso) montado en el directorio / snapshots , ejecute el siguiente comando:

$ sudo btrfs send /data/.snapshots/web1-20201230 | sudo btrfs receive /snapshots

Se debe hacer una copia de seguridad de la instantánea /data/.snapshots/web1-2020-12-30 en el sistema de archivos Btrfs externo ( sdb2 ) montado en el directorio / snapshots .

Como puede ver, el nuevo subvolumen web1-2020-12-30 se ha creado en el sistema de archivos externo Btrfs.

$ sudo btrfs subvolume list /snapshots

La instantánea web1-2020-12-30 debe tener los mismos archivos / directorios que la instantánea /data/.snapshots/web1-2020-12-30 .

$ tree -a /snapshots

Puede obtener más información sobre la copia de seguridad de la instantánea / snapshosts / web1-2020-12-30 de la siguiente manera:

$ sudo btrfs subvolume show /snapshots/web1-20201230

Copia de seguridad incremental de instantáneas en una unidad externa

Si hay muchos archivos en las instantáneas para realizar una copia de seguridad en una unidad externa, las copias de seguridad incrementales le ayudarán a acelerar la operación de copia de seguridad. En este caso, Btrfs solo actualizará los archivos que han cambiado desde la última instantánea y copiará los archivos nuevos que no estaban disponibles en la última instantánea.

En esta sección, le mostraré cómo realizar copias de seguridad incrementales de instantáneas Btrfs en sistemas de archivos Btrfs externos.

Primero, abra el archivo index.html del subvolumen / data / projects / web1 , de la siguiente manera:

$ sudo nano /data/projects/web1/index.html

Realice los cambios que desee en el archivo index.html . Una vez que haya terminado, presione &lt Ctrl &gt + X seguido de Y y &lt Enter &gt para guardar el archivo index.html .

Tome una nueva instantánea de solo lectura del subvolumen / data / projects / web1 , de la siguiente manera:

$ sudo btrfs subvolume snapshot -r /data/projects/web1 /data/.snapshots/web1-20201231

Como puede ver, se ha creado la nueva instantánea /data/.snapshots/web1-2020-12-31 del subvolumen / data / projects / web1 .

$ sudo btrfs subvolume list /data

Ahora, estamos listos para realizar una copia de seguridad incremental.

Para realizar una copia de seguridad incremental, necesitará una instantánea común de los sistemas de archivos Btrfs de origen y destino (unidad externa). La instantánea común suele ser la última instantánea de un subvolumen Btrfs. Cuando toma una nueva instantánea en el sistema de archivos Btrfs de origen, la nueva instantánea se compara con la instantánea más reciente (disponible tanto en el sistema de archivos Btrfs de origen como en el de destino) del sistema de archivos Btrfs de origen. Btrfs calculará la diferencia y enviará solo los datos requeridos al sistema de archivos Btrfs de destino (la unidad externa).

Por ejemplo, para realizar una copia de seguridad incremental de la instantánea /data/.snapshots/web1-2020-12-31 , debe especificar la instantánea principal (la última instantánea disponible en los sistemas de archivos Btrfs de origen y destino), / data /. snapshots / web1-2020-12-30 , también.

Se puede realizar una copia de seguridad incremental de la instantánea /data/.snapshots/web1-2020-12-31 en un sistema de archivos Btrfs externo, de la siguiente manera:

$ sudo btrfs send -p /data/.snapshots/web1-20201230 /data/.snapshots/web1-20201231 | sudo btrfs receive /snapshots

Se debe realizar una copia de seguridad incremental de la instantánea /data/.snapshots/web1-2020-12-31 .

Como puede ver, la instantánea web1-2020-12-31 se ha respaldado en el sistema de archivos Btrfs externo montado en el directorio / snapshots .

$ sudo btrfs subvolume list /snapshots

Como puede ver en la captura de pantalla a continuación, los cambios que ha realizado en el archivo index.html están disponibles en la instantánea web1-2020-12-31 que se ha respaldado en el sistema de archivos Btrfs externo.

$ cat /snapshots/web1-20201231/index.html

De la misma manera, puede realizar tantas copias de seguridad incrementales de sus instantáneas como desee.

Le mostraré cómo hacer una copia de seguridad incremental una vez más. No me tomaré el tiempo para volver a explicarlo. En cambio, solo les mostraré el proceso para mayor claridad.

Abra el archivo index.html del subvolumen / data / projects / web1 , de la siguiente manera:

$ sudo nano /data/projects/web1/index.html

Realice los cambios que desee en el archivo index.html . Una vez que haya terminado, presione &lt Ctrl &gt + X seguido de Y y &lt Enter &gt para guardar el archivo index.html .

Tome una nueva instantánea de solo lectura del subvolumen / data / projects / web1 , de la siguiente manera:

$ sudo btrfs subvolume snapshot -r /data/projects/web1 /data/.snapshots/web1-20201231_2

Realice una copia de seguridad incremental de la instantánea /data/.snapshots/web1-2020-12-31_2 en un sistema de archivos Btrfs externo, de la siguiente manera:

$ sudo btrfs send -p /data/.snapshots/web1-20201231 /data/.snapshots/web1-20201231_2 | sudo btrfs receive /snapshots

Nota : Ahora, la instantánea principal con la que se comparará la instantánea /data/.snapshots/web1-2020-12-31_2 es /data/.snapshots/web1-2020-12-31.

Como puede ver, la instantánea web1-2020-12-31_2 se ha respaldado en el sistema de archivos Btrfs externo montado en el directorio / snapshots .

$ sudo btrfs subvolume list /snapshots

Como puede ver en la captura de pantalla a continuación, los cambios recientes realizados en el archivo index.html están disponibles en la instantánea web1-2020-12-31_2 respaldada en el sistema de archivos Btrfs externo.

$ cat /snapshots/web1-20201231_2/index.html

Mantener las cosas limpias

Si realiza copias de seguridad de sus instantáneas Btrfs con frecuencia, terminará con muchas instantáneas y puede resultar difícil administrarlas. Afortunadamente, puede eliminar cualquier instantánea del sistema de archivos Btrfs.

Si está utilizando una unidad externa lo suficientemente grande para mantener copias de seguridad de las instantáneas de Btrfs, puede guardar algunas instantáneas en su sistema de archivos Btrfs y hacer una copia de seguridad de todas las instantáneas en su unidad externa.

Si está utilizando una unidad externa más pequeña, puede mantener selectivamente solo las instantáneas más importantes respaldadas en la unidad externa.

Para realizar copias de seguridad de sus instantáneas Btrfs, debe mantener al menos la instantánea más reciente en los sistemas de archivos Btrfs de origen ( /data/.snapshots ) y destino ( / snapshots – unidad externa ). Por lo tanto, siéntase libre de eliminar cualquier instantánea que no sea la última instantánea en ambos extremos.

Por ejemplo, en este caso, la última instantánea es web1-2020-12-31_2 . Por lo tanto, para realizar copias de seguridad incrementales, esta instantánea debe mantenerse en los sistemas de archivos Btrfs de origen y destino (unidad externa).

Supongamos que desea eliminar la instantánea /data/.snapshots/web1-2020-12-30 .

Para hacer esto, ejecute el siguiente comando:

$ sudo btrfs subvolume delete /data/.snapshots/web1-20201230

La instantánea de Btrfs /data/.snapshots/web1-2020-12-30 ahora debería eliminarse.

De la misma manera, puede eliminar la instantánea /data/.snapshots/web1-2020-12-31 , de la siguiente manera:

$ sudo btrfs subvolume delete /data/.snapshots/web1-20201231

Ahora, solo la última instantánea, /data/.snapshots/web1-2020-12-31_2 , está disponible en el sistema de archivos Btrfs, montado en el directorio / data . Las otras instantáneas se respaldan en la unidad externa, montada en el directorio / snapshots .

$ sudo btrfs subvolume list /data

$ sudo btrfs subvolume list /snapshots

Restauración de instantáneas desde una unidad externa

Si ha realizado una copia de seguridad de sus instantáneas en la unidad externa, puede restaurarlas en cualquier momento desde la unidad externa.

Por ejemplo, eliminé la instantánea web1-2020-12-30 de mi sistema de archivos Btrfs, montado en el directorio / data . Pero, esta instantánea está respaldada en la unidad externa, montada en el directorio / snapshots . Restauremos esta instantánea.

$ sudo btrfs subvolume list /snapshots

Para restaurar la instantánea web1-2020-12-30 desde la unidad externa, ejecute el siguiente comando:

$ sudo btrfs send /snapshots/web1-20201230 | sudo btrfs receive /data/.snapshots

La instantánea web1-2020-12-30 debe restaurarse en el sistema de archivos Btrfs montado en el directorio / data .

Como puede ver, la instantánea web1-2020-12-30 se restaura en el sistema de archivos Btrfs montado en el directorio / data .

$ sudo btrfs subvolume list /data

Y, como puede ver, el contenido del archivo index.html de la instantánea web1-2020-12-30 . Esta es la primera versión del archivo index.html anterior.

$ cat /data/.snapshots/web1-20201230/index.html

Conclusión

En este artículo, aprendió cómo realizar copias de seguridad de instantáneas de su sistema de archivos Btrfs en una unidad externa. También aprendió a realizar copias de seguridad incrementales de sus instantáneas Btrfs en una unidad externa. Finalmente, aprendió a eliminar instantáneas existentes de un sistema de archivos Brtfs y también a restaurar instantáneas de la unidad externa.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux