La fonction d'instantané du système de fichiers BTRFS utilise le principe de copie-écriture (vache). Donc, il ne prend pas beaucoup d'espace disque, et vous pouvez prendre des instantanés d'un sous-volume instantanément.
Le système de fichiers BTRFS prend en charge 2 types d'instantanés.
Cet article vous montrera comment prendre des instantanés écrivains et en lecture seule de vos sous-volumes de système de fichiers BTRFS. Je vais également vous montrer comment mettre à jour un instantané écrit et récupérer des fichiers à partir d'un instantané. Je vais vous montrer comment supprimer également un instantané. Alors, commençons.
Conditions préalables
Pour essayer les exemples de cet article,
J'ai un disque dur de 20 Go SDB Sur ma machine Ubuntu. J'ai créé 2 partitions sdb1 et sdb2 Sur ce disque dur. J'utiliserai la partition sdb1 dans cet article.
$ sudo lsblk -e7Votre disque dur ou SSD peut avoir un nom différent de la mienne, les partitions aussi. Alors, assurez-vous de les remplacer par le vôtre à partir de maintenant.
Si vous avez besoin d'aide pour installer le système de fichiers BTRFS sur Ubuntu, consultez mon article Installez et utilisez des btrfs sur Ubuntu 20.04 LTS.
Si vous avez besoin d'aide pour installer le système de fichiers BTRFS sur Fedora, consultez mon article Installer et utiliser BTRFS sur Fedora 33.
Création d'un système de fichiers BTRFS
Pour expérimenter avec les sous-volumes BTRFS, vous devez créer un système de fichiers BTRFS.
Pour créer un système de fichiers BTRFS avec l'étiquette données sur le sdb1 partition, exécutez la commande suivante:
$ sudo mkfs.BTRFS -L DATA / DEV / SDB1Un système de fichiers BTRFS doit être créé.
Créer un répertoire /données avec la commande suivante:
$ sudo mkdir -v / dataPour monter le système de fichiers BTRFS créé sur le sdb1 partition dans le /données répertoire, exécutez la commande suivante:
$ sudo mont / dev / sdb1 / dataLe système de fichiers BTRFS doit être monté comme vous pouvez le voir dans la capture d'écran ci-dessous.
$ df -h / donnéesPréparer le système de fichiers BTRFS pour les instantanés
Dans BTRFS, vous pouvez prendre des instantanés de sous-volumes BTRFS uniquement. La racine principale d'un système de fichiers BTRFS est également un sous-volume. Ainsi, vous pouvez prendre la sauvegarde de l'ensemble du système de fichiers BTRFS ainsi que des sous-volumes spécifiques.
Cette section créera un sous-volume BTRFS / data / projets / web1 et créer les fichiers nécessaires pour les sections suivantes de cet article ci-dessous. Je vais également créer un répertoire où vous pouvez garder vos instantanés. Dans les sections suivantes, je vais vous montrer comment prendre des instantanés (écrivains et en lecture seule), mettre à jour un instantané à rédaction et récupérer des fichiers à partir de l'instantané. Alors, commençons.
Tout d'abord, créez un nouveau répertoire / Données / Projets comme suit:
$ sudo mkdir -v / data / projetsCréer un nouveau sous-volume web1 dans le / Données / Projets Répertoire comme suit:
$ sudo btrfs subvolume Create / data / projects / web1Créer un nouveau fichier indice.html dans le / data / projets / web1 sous-volume comme suit:
$ sudo nano / data / projets / web1 / index.htmlTapez les lignes de codes suivantes dans le indice.html déposer.
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le indice.html déposer.
Créer un nouveau fichier style.CSS dans le / data / projets / web1 sous-volume comme suit:
$ sudo nano / data / projets / web1 / style.CSSTapez les lignes de codes suivantes dans le style.CSS déposer.
H1Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le style.CSS déposer.
Maintenant le / data / projets / web1 sous-volume a le indice.html et style.CSS déposer.
$ ls -lh / data / projets / web1Je veux garder tous les instantanés de ce système de fichiers BTRFS dans le /données/.instantanés annuaire.
Créer le /données/.instantanés Répertoire avec la commande suivante:
$ sudo mkdir -v / data /.instantanésPrendre des instantanés d'un sous-volume
Pour prendre un instantané du / data / projets / web1 sous-volume dans le /données/.instantanés / web1-2020-12-25 répertoire (sera créé automatiquement), exécutez la commande suivante:
$ sudo btrfs sous-volume instantané / data / projets / web1 / data /.instantanés / web1-2020-12-25Un instantané du / data / projets / web1 Le répertoire doit être créé sur le /données/.instantanés / web1-2020-12-25 annuaire.
Comme vous pouvez le voir dans la capture d'écran ci-dessous, un nouveau sous-volume .instantanés / web1-2020-12-25 est créé. Un instantané est en fait un sous-volume.
$ sudo btrfs Liste / données du sous-volumeVous pouvez voir plus d'informations sur l'instantané que vous avez créé dans le /données/.instantanés / web1-2020-12-25 Répertoire comme suit:
$ sudo btrfs subvolume show / data /.instantanés / web1-2020-12-25Comme vous pouvez le voir, tous les fichiers qui sont dans le / data / projets / web1 sous-volume sont dans le /données/.instantanés / web1-2020-12-25 instantané.
$ arbre -a / donnéesRécupération des fichiers à partir d'instantanés
Dans cette section, je vais vous montrer comment récupérer les fichiers des instantanés BTRFS.
Tout d'abord, je vais vous montrer comment récupérer un seul fichier à partir de l'instantané.
Ouvrir le / data / projets / web1 / index.html fichier avec l'éditeur de texte nano comme suit:
$ sudo nano / data / projets / web1 / index.htmlApporter les modifications que vous souhaitez.
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour enregistrer le fichier.
Comme vous pouvez le voir, le principal indice.html Le fichier est différent du indice.html fichier dans l'instantané.
$ cat / data / projets / web1 / index.htmlNous avons apporté les modifications au principal indice.html Les fichiers sont indésirables et nous voulons récupérer le indice.html fichier à partir de l'instantané.
Vous pouvez restaurer le indice.html Fichier à partir de l'instantané comme suit:
$ sudo cp -v / data /.Instantané / web1-2020-12-25 / index.html / data / projets / web1 / index.htmlComme vous pouvez le voir, le indice.html Le fichier est restauré à partir de l'instantané.
$ cat / data / projets / web1 / index.htmlMaintenant, voyons comment récupérer tous les fichiers / répertoires à partir de l'instantané.
Supprimer tous les fichiers du / data / projets / web1 Instantané comme suit:
$ sudo rm -rv / data / projects / web1 / *Pour récupérer tous les fichiers / répertoires à partir de l'instantané, exécutez la commande suivante:
$ sudo rsync -avz / data /.instantanés / web1-2020-12-25 / / data / projets / web1 /Comme vous pouvez le voir, les fichiers / répertoires sont restaurés à partir de l'instantané.
$ ls -lh / data / projets / web1Enfin, voyons comment récupérer les fichiers / répertoires à partir de l'instantané en mode miroir. En mode miroir, les fichiers / répertoires du sous-volume seront les mêmes que dans l'instantané. S'il y a des fichiers / répertoires dans le sous-volume qui ne sont pas disponibles dans l'instantané, ils seront supprimés.
Créons un nouveau fichier dans le sous-volume pour différencier l'arborescence de fichier de l'instantané.
Créer un Réadmettre.SMS fichier dans le / data / projets / web1 sous-volume comme suit:
$ echo "Hello World 5" | Sudo Tee / Data / Projects / Web1 / Readme.SMSComme vous pouvez le voir, l'arbre de fichier du / data / projets / web1 sous-volume est différent du /données/.instantanés / web1-2020-12-25 instantané.
$ arbre -a / donnéesPour restaurer les fichiers / répertoires de la /données/.instantanés / web1-2020-12-25 instantané au / data / projets / web1 sous-volume en mode miroir, exécutez la commande suivante:
$ sudo rsync -avz --delete / data /.instantanés / web1-2020-12-25 / / data / projets / web1 /Tous les fichiers / répertoires du / data / projets / web1 le sous-volume doit être restauré (en mode miroir) à partir du /données/.instantanés / web1-2020-12-25 instantané.
L'arborescence de fichier du / data / projets / web1 sous-volume et le /données/.instantanés / web1-2020-12-25 L'instantané devrait être le même.
Comme vous pouvez le voir, l'index.Fichier et style HTML.Le contenu du fichier CSS est le même dans le / data / projets / web1 sous-volume et le /données/.instantanés / web1-2020-12-25 instantané.
Contenu du indice.html et style.CSS fichier dans le / data / projets / web1 subvolume.
$ cat / data / projets / web1 / index.htmlContenu du indice.html et style.CSS fichier dans le /données/.instantanés / web1-2020-12-25 instantané.
$ cat / data / projets / web1 / index.htmlMise à jour d'un instantané
Par défaut, le système de fichiers BTRFS prend des instantanés écrit. Un instantané BTRFS est comme un sous-volume. Ainsi, vous pouvez modifier / mettre à jour les fichiers / répertoires d'un instantané écrit.
Mettons à jour le indice.html fichier dans le / data / projets / web1 subvolume.
Tout d'abord, ouvrez le indice.html fichier à partir du / data / projets / web1 sous-volume avec le nano Éditeur de texte comme suit:
$ sudo nano / data / projets / web1 / index.htmlApporter les modifications que vous souhaitez. Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le indice.html déposer.
Comme vous pouvez le voir, l'index.fichier html du / data / projets / web1 sous-volume est différent du /données/.instantanés / web1-2020-12-25 instantané.
$ cat / data / projets / web1 / index.htmlVous voulez garder le indice.html fichier du / data / projets / web1 subvolume.
Pour mettre à jour le indice.html fichier dans le /données/.instantanés / web1-2020-12-25 instantané, exécutez la commande suivante:
$ sudo cp -v / data / projets / web1 / index.html / data /.Instantané / web1-2020-12-25 / index.htmlComme vous pouvez le voir, le indice.html fichier du /données/.instantanés / web1-2020-12-25 L'instantané est mis à jour.
La mise à jour d'un instantané est aussi simple que la copie de nouveaux fichiers sur l'instantané.
Prendre des instantanés en lecture seule d'un sous-volume
Parfois, vous ne voulez pas que les instantanés que vous avez pris pour être mis à jour. Dans ce cas, vous pouvez créer des instantanés en lecture seule.
Par exemple, pour créer un instantané en lecture seule /données/.instantanés / web1-2020-12-26 de la / data / projets / web1 sous-volume, exécutez la commande suivante:
$ sudo btrfs Sous-volume instantanée -r / data / projets / web1 / data /.instantanés / web1-2020-12-26Comme vous pouvez le voir, un nouveau sous-volume .instantanés / web1-2020-12-26 est créé.
$ sudo btrfs Liste / données du sous-volumeComme vous pouvez le voir, l'instantané /données/.instantanés / web1-2020-12-26 est en lecture seule.
$ sudo btrfs subvolume show / data /.instantanés / web1-2020-12-26Mettons à jour le indice.html fichier à partir du / data / projets / web1 subvolume.
Pour ce faire, ouvrez le indice.html fichier à partir du / data / projets / web1 sous-volume avec le nano Éditeur de texte comme suit:
$ sudo nano / data / projets / web1 / index.htmlApporter les modifications que vous souhaitez. Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour enregistrer les modifications.
Comme vous pouvez le voir, le indice.html dans le / data / projets / web1 sous-volume est différent du /données/.instantanés / web1-2020-12-26 instantané.
$ cat / data / projets / web1 / index.htmlEssayons de mettre à jour le indice.html fichier dans le /données/.instantanés / web1-2020-12-26 instantané.
$ sudo cp -v / data / projets / web1 / index.html / data /.instantanés / web1-2020-12-26 / index.htmlComme vous pouvez le voir, vous ne pouvez pas mettre à jour le indice.html fichier du /données/.instantanés / web1-2020-12-26 instantané car l'instantané est en lecture seule.
Supprimer un instantané
Je vous ai dit plus tôt qu'un instantané BTRFS est comme un sous-volume. Ainsi, vous pouvez supprimer un instantané BTRFS tout comme vous supprimez un sous-volume BTRFS. Même commande.
C'est ainsi que l'arborescence de fichier du système de fichiers BTRFS est monté sur le /données Le répertoire ressemble en ce moment.
$ arbre -a / donnéesRetirer le .instantanés / web1-2020-12-25 instantané.
$ sudo btrfs Liste / données du sous-volumePour supprimer le /données/.instantanés / web1-2020-12-25 instantané, exécutez la commande suivante:
$ sudo btrfs subvolume delete / data /.instantanés / web1-2020-12-25Comme vous pouvez le voir, l'instantané .instantanés / web1-2020-12-25 n'est plus.
$ sudo btrfs Liste / données du sous-volumeComme vous pouvez le voir, les fichiers / répertoires du /données/.instantanés / web1-2020-12-25 L'instantané est également supprimé.
$ arbre -a / donnéesConclusion
Cet article vous a montré comment prendre des instantanés écrivains et en lecture seule de vos sous-volumes de système de fichiers BTRFS. Je vous ai également montré comment mettre à jour un instantané écrit et récupérer des fichiers à partir d'un instantané. Je vous ai montré comment supprimer également un instantané BTRFS. Cet article devrait vous aider à démarrer avec la fonction d'instantané BTRFS.