GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer des instantanés de système de fichiers à l'aide de la commande Snapper sous Linux

Snapper est un outil de ligne de commande Linux pour créer et gérer des instantanés de vos systèmes de fichiers.

À l'aide de la commande snapper, vous pouvez créer des instantanés en lecture seule. Vous pouvez utiliser ces instantanés pour restaurer des fichiers spécifiques ou tous les fichiers en cas de catastrophe.

Vous pouvez également l'utiliser pour comparer plusieurs instantanés et revenir à un ancien instantané spécifique.

Snapper n'est pris en charge que sur btrfs (systèmes de fichiers B-tree copie sur écriture), systèmes de fichiers ext4 et thin- volumes logiques basés sur LVM provisionnés.

Lorsqu'un instantané est pris à l'aide de la commande snapper, il réside dans le même système de fichiers. Il doit donc y avoir suffisamment d'espace libre disponible et un nettoyage régulier de FS peut être nécessaire.

Si vous souhaitez utiliser un instantané basé sur rsync, vous devriez également consulter l'utilitaire rsnapshot dont nous avons parlé plus tôt.

Installer l'utilitaire Snapper

Vous pouvez soit télécharger le binaire snapper pour différentes distributions et l'installer, soit télécharger le code source et le compiler vous-même.

Par exemple, vous pouvez télécharger les rpm snapper à partir du référentiel SUSE SLES11 SP2.

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

Voici les dépendances du package snapper. Lorsque vous utilisez yum ou d'autres outils de gestion de packages, toutes les dépendances seront installées automatiquement.

  • 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

Créer un système de fichiers btrfs

Étant donné que btrfs est un système de fichiers pris en charge à partir de SLES11 SP2, vous pouvez utiliser btrfs pour créer votre volume logique ou utiliser les commandes btrfs-convert pour convertir votre système de fichiers ext3 existant en btrfs.

Exécutez les commandes suivantes pour créer un nouveau système de fichiers btrfs. Si vous n'avez pas installé le programme btrfs, utilisez zypper install btrfsprogs pour l'installer.

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

# mkfs.btrfs /dev/vglocal/snapvol

# mount /dev/vglocal/snapvol /snapmount

Créer un LVM à provisionnement dynamique

Si vous souhaitez créer un LVM à allocation dynamique, utilisez la commande lvcreate pour effectuer les opérations suivantes.

# 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

Créer un fichier de configuration Snapper

Pour créer le fichier de configuration à l'aide de la commande snapper, utilisez la commande "snapper -c" comme indiqué ci-dessous.

Syntaxe sur btrfs :

snapper –c  create-config

Sur btrfs, vous n'aurez qu'à spécifier le nom du fichier de configuration et le point de montage comme indiqué ci-dessous.

snapper -c snapconfig create-config /snapmount

Syntaxe sur LVM à allocation dynamique :

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

Sur LVM à allocation dynamique, en plus de spécifier le nom du fichier de configuration et le point de montage, vous devez également spécifier le type de système de fichiers à l'aide de –fstype comme indiqué ci-dessous :

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

Afficher et supprimer les fichiers de configuration de Snapper

Après avoir créé les fichiers de configuration, vous verrez le répertoire .snapshots créé sous le répertoire /snapmount.

Vous remarquerez également que le fichier de configuration est créé sous /etc/snapper/configs/snapconfig. Les informations sur tous les sous-volumes configurés pour l'instantané seront stockées dans ce fichier.

Le fichier journal utilisé à des fins de dépannage se trouve sous /var/log/snapper.log

Pour afficher tous les fichiers de configuration, exécutez la commande snapper suivante :

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

Pour supprimer un fichier de configuration, utilisez la syntaxe suivante :

snapper –c  delete-config

Par exemple, la commande suivante supprime le fichier de configuration snapconfig sous le répertoire /etc/snapper/configs.

# snapper -c snapconfig delete-config

Créer un instantané à l'aide de Snapper

Afin de créer un instantané du système de fichiers, utilisez la syntaxe de commande snapper suivante :

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

Par exemple, ce qui suit prendra un nouvel instantané.

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

Une fois que vous avez pris un instantané, affichez les informations sur l'instantané comme indiqué ci-dessous :

# 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 |

Prenez un deuxième instantané pour comparaison

À des fins de test, j'ai annulé le testfile1 sous le répertoire /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

Après le changement ci-dessus, prenons un autre instantané.

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

Comme vous le voyez ci-dessous, nous avons maintenant deux instantanés.

# 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 |

Comparer le 1er et le 2ème instantané

Maintenant, comparons les deux instantanés.

La commande ci-dessous compare l'instantané #1 avec l'instantané #2.

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

Dans la sortie :

  • "c" sur la sortie indique que le contenu a été modifié.
  • "+" indique que de nouveaux fichiers sont ajoutés au répertoire.
  • "-" indique que des fichiers ont été supprimés.

Prendre plusieurs instantanés et comparer les résultats

J'ai créé plusieurs instantanés de test avec peu de fichiers ajoutés, peu de fichiers supprimés et peu de modifications de contenu.

# 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 |

La sortie suivante répertorie les fichiers qui sont ajoutés, modifiés et supprimés.

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

Afficher la différence entre les instantanés

Maintenant, pour voir la différence de contenu spécifique dans le fichier entre l'instantané n°1 et l'instantané n°4, vous pouvez utiliser la commande suivante.

# 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 sortie est dans le format typique d'une sortie de commande diff.

Restaurer un fichier spécifique à partir d'un instantané

Une fois que vous avez vu les différences entre les instantanés et que vous savez quel fichier spécifique vous souhaitez restaurer, vous pouvez le restaurer comme expliqué ici.

Avant la restauration, nous n'avons pas le testfile2 dans cette liste.

# 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

Par exemple, pour restaurer un seul fichier à partir de l'instantané, c'est-à-dire /snapmount/testfile2 (le fichier qui a été supprimé) à partir de l'instantané #1, utilisez la commande ci-dessous :

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

Après la restauration, nous voyons le testfile2 dans la liste.

# 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

Restaurer tous les fichiers à partir d'un instantané

Pour restaurer tous les fichiers de l'instantané, procédez comme suit :

Maintenant, restaurez tous les fichiers à partir d'un instantané particulier. Remarquez comment cela supprime quelques fichiers, crée un fichier et modifie un fichier.

# 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. Comment créer un système de fichiers sur une partition ou un volume logique Linux

  2. Comment créer un script d'une commande Linux

  3. Comment créer un utilisateur Linux avec Ansible

  4. Comment redémarrer Linux en utilisant la ligne de commande

  5. Comment tuer un processus sous Linux en utilisant la commande ?

Comment créer un alias sous Linux

Comment créer un fichier sous Linux à l'aide de Terminal

Comment sauvegarder le système de fichiers Linux à l'aide de la commande dump

Comment créer un fichier dans Ubuntu Linux à l'aide de la commande et de l'interface graphique

Comment créer un groupe sous Linux - Commande groupadd

Comment créer une partition à l'aide de la commande "parted"