GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear instantáneas del sistema de archivos usando Snapper Command en Linux

Snapper es una herramienta de línea de comandos de Linux para crear y administrar instantáneas de sus sistemas de archivos.

Con el comando snapper, puede crear instantáneas de solo lectura. Puede usar estas instantáneas para restaurar archivos específicos o todos los archivos durante cualquier situación de desastre.

También puede usarlo para comparar varias instantáneas y volver a una instantánea anterior específica.

Snapper solo es compatible con btrfs (sistemas de archivos B-tree copy-on-write), sistemas de archivos ext4 y thin- volúmenes lógicos basados ​​en LVM aprovisionados.

Cuando se toma una instantánea con el comando snapper, residirá en el mismo sistema de archivos, por lo que debería haber suficiente espacio libre disponible y es posible que se requiera una limpieza regular de FS.

Si está interesado en usar una instantánea basada en rsync, también debe consultar la utilidad rsnapshot que discutimos anteriormente.

Instalar la utilidad Snapper

Puede descargar el binario Snapper para varias distribuciones e instalarlo, o descargar el código fuente y compilarlo usted mismo.

Por ejemplo, puede descargar los rpm de Snapper desde el repositorio de SUSE SLES11 SP2.

# rpm -ivh snapper-0.1.6-2.1.x86_64.rpm

Las siguientes son dependencias para el paquete Snapper. Cuando usa yum u otras herramientas de administración de paquetes, todas las dependencias se instalarán automáticamente.

  • libsnapper-devel-0.1.6-2.1.x86_64.rpm
  • pam_snapper-0.1.6-2.1.x86_64.rpm
  • snapper-debuginfo-0.1.6-2.1.x86_64.rpm
  • snapper-debugsource-0.1.6-2.1.x86_64.rpm

Crear sistema de archivos btrfs

Dado que btrfs es un sistema de archivos compatible con SLES11 SP2, puede usar btrfs para crear su volumen lógico o usar los comandos btrfs-convert para convertir su sistema de archivos ext3 existente a btrfs.

Ejecute los siguientes comandos para crear un nuevo sistema de archivos btrfs. Si no tiene instalado el programa btrfs, utilice zypper install btrfsprogs para instalarlo.

# lvcreate -L 8G -n snapvol vglocal
Logical volume "snapvol" created

# mkfs.btrfs /dev/vglocal/snapvol

# mount /dev/vglocal/snapvol /snapmount

Crear LVM de aprovisionamiento fino

Si desea crear un LVM de aprovisionamiento delgado, use el comando lvcreate para hacer lo siguiente.

# lvcreate --thin vglocal/vgthinpool --size 20G
  Rounding up size to full physical extent 32.00 MiB
  Logical volume "vgthinpool" create

# lvcreate --thin vglocal/vgthinpool --virtualsize 8G --name lvthin_snap
  Logical volume "lvthin_snap" created

# lvs
  LV          VG        Attr      LSize   Pool       Origin Data%  Move Log Copy%  Convert
  opt         vglocal -wi-ao---   2.73g
  tmp         vglocal -wi-ao---   2.73g
  usr_local   vglocal -wi-ao---   2.73g
  var         vglocal -wi-ao---   2.73g
  lvthin_snap vglocal  Vwi-a-tz-   8.00g vgthinpool          0.00
  vgthinpool  vglocal  twi-a-tz-  20.00g                     0.00

# mkfs.ext3 /dev/vglocal/lvthin_snap

# mkdir /snapmount

# mount /dev/vglocal/lvthin_snap /snapmount

Crear archivo de configuración de Snapper

Para crear el archivo de configuración usando el comando snapper, use el comando "snapper -c" como se muestra a continuación.

Sintaxis en btrfs:

snapper –c  create-config

En btrfs, solo especificará el nombre del archivo de configuración y el punto de montaje como se muestra a continuación.

snapper -c snapconfig create-config /snapmount

Sintaxis en LVM de aprovisionamiento delgado:

snapper –c  create-config --fstype="lvm(xfs)"

En LVM de aprovisionamiento delgado, además de especificar el nombre del archivo de configuración y el punto de montaje, también debe especificar el tipo de sistema de archivos usando –fstype como se muestra a continuación:

snapper -c snapconfig1 create-config --fstype="lvm(xfs)" /snapmount1

Ver y eliminar archivos de configuración de Snapper

Después de crear los archivos de configuración, verá el directorio .snapshots creado en el directorio /snapmount.

También notará que el archivo de configuración se crea en /etc/snapper/configs/snapconfig. La información sobre todo el subvolumen que está configurado para la instantánea se almacenará en este archivo.

El archivo de registro utilizado para solucionar problemas se encuentra en /var/log/snapper.log

Para ver todos los archivos de configuración, ejecute el siguiente comando snapper:

# snapper list-configs
Config      	| 	Subvolume
------------+------------
snapconfig  	| 	/snapmount         ? btrfs filesystem
snapconfig1 	| 	/snapmount1       ? Thin provisioned filesystem

Para eliminar un archivo de configuración, use la siguiente sintaxis:

snapper –c  delete-config

Por ejemplo, el siguiente comando elimina el archivo de configuración snapconfig en el directorio /etc/snapper/configs.

# snapper -c snapconfig delete-config

Crear una instantánea usando Snapper

Para crear una instantánea del sistema de archivos, use la siguiente sintaxis del comando snapper:

snapper –config  create –description "description of the snapshot"

Por ejemplo, lo siguiente tomará una nueva instantánea.

# snapper --config snapconfig create --description "Snapshot taken on 02-24-0354"

Una vez que tome una instantánea, vea la información de la instantánea como se muestra a continuación:

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |

Tomar la segunda instantánea para comparar

Con fines de prueba, anulé el archivo de prueba1 en el directorio /snapmount.

# cat /dev/null > testfile1

# ls -ltr
-rw-r--r-- 1 root root 11 Feb 24 11:28 testfile2
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
drwxr-x--- 1 root root  2 Feb 24 15:57 .snapshots
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1

Después del cambio anterior, tomemos otra instantánea.

# snapper --config snapconfig create --description "Snapshot taken on 02-24-0427"

Como puede ver a continuación, ahora tenemos dos instantáneas.

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken on 02-24-0427 |

Comparar la primera y la segunda instantánea

Ahora, comparemos ambas instantáneas.

El siguiente comando compara la instantánea #1 con la instantánea #2.

# snapper -c snapconfig status 1..2
c.... /snapmount/testfile1

En la salida:

  • “c” en la salida indica que el contenido ha sido modificado.
  • “+” indica que se agregaron nuevos archivos al directorio.
  • “-” indica que hay archivos que se han eliminado.

Tome varias instantáneas y compare resultados

Creé varias instantáneas de prueba con pocos archivos agregados, pocos archivos eliminados y pocos cambios de contenido.

# snapper --config snapconfig list
Type   | # | Pre # | Date                     | User | Cleanup | Description                  | Userdata
-------+---+-------+--------------------------+------+---------+------------------------------+---------
single | 0 |       |                          | root |         | current                      |
single | 1 |       | Mon Feb 24 15:57:00 2014 | root |         | Snapshot taken on 02-24-0354 |
single | 2 |       | Mon Feb 24 16:27:48 2014 | root |         | Snapshot taken on 02-24-0427 |
single | 3 |       | Mon Feb 24 16:37:53 2014 | root |         | Snapshot taken on 02-24-0437 |
single | 4 |       | Mon Feb 24 16:38:17 2014 | root |         | Snapshot taken on 02-24-0440 |

El siguiente resultado enumera los archivos que se agregan, modifican y eliminan.

# snapper -c snapconfig status 4..1
-.... /snapmount/a
-.... /snapmount/b
-.... /snapmount/c
c.... /snapmount/testfile1
+.... /snapmount/testfile2

Ver la diferencia entre instantáneas

Ahora, para ver la diferencia de contenido específico en el archivo entre la instantánea n.º 1 y la instantánea n.º 4, puede usar el siguiente comando.

# snapper -c snapconfig diff 4..1 /snapmount/testfile1
--- /snapmount/.snapshots/4/snapshot/testfile1  2014-02-24 16:25:44.416490642 -0500
+++ /snapmount/.snapshots/1/snapshot/testfile1  2014-02-24 11:27:35.000000000 -0500
@@ -0,0 +1 @@
+This is a test file

La salida tiene el formato típico de una salida de comando diff.

Restaurar un archivo específico desde una instantánea

Una vez que haya visto las diferencias entre las instantáneas y sepa qué archivo específico desea restaurar, puede restaurarlo como se explica aquí.

Antes de la restauración, no tenemos el testfile2 en esta lista.

# ls -ltr
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1
drwxr-x--- 1 root root 10 Feb 24 16:45 .snapshots

Por ejemplo, para restaurar un solo archivo de la instantánea, es decir, /snapmount/testfile2 (el archivo que se eliminó) de la instantánea n.º 1, use el siguiente comando:

# snapper -c snapconfig -v undochange 1..4 /snapmount/testfile2
create:1 modify:0 delete:0
creating /snapmount/testfile2

Después de la restauración, vemos el testfile2 en la lista.

# ls -ltr
-rw-r--r-- 1 root root 43 Feb 24 11:28 testfile3
-rw-r--r-- 1 root root  0 Feb 24 16:25 testfile1
drwxr-x--- 1 root root 10 Feb 24 16:45 .snapshots
-rw-r--r-- 1 root root 11 Feb 24 16:55 testfile2

Restaurar todos los archivos desde una instantánea

Para restaurar todos los archivos de la instantánea, haga lo siguiente:

Ahora, restauremos todos los archivos de una instantánea en particular. Observe cómo esto elimina algunos archivos, crea un archivo y modifica un archivo.

# snapper -c snapconfig -v undochange 1..4
create:1 modify:1 delete:3
deleting /snapmount/c
deleting /snapmount/b
deleting /snapmount/a
modifying /snapmount/testfile1
creating /snapmount/testfile2

Linux
  1. Cómo crear un sistema de archivos en una partición o volumen lógico de Linux

  2. Cómo crear un script de un comando de Linux

  3. Cómo crear un usuario de Linux usando Ansible

  4. Cómo reiniciar Linux usando la línea de comandos

  5. Comando Linux ln

Cómo crear un alias en Linux

Cómo crear un archivo en Linux usando Terminal

Cómo hacer una copia de seguridad del sistema de archivos de Linux usando el comando dump

Cómo crear un archivo en Ubuntu Linux usando comando y GUI

Cómo crear un grupo en Linux – Comando groupadd

Cómo crear una partición usando el comando "partid"