Die Snapshot-Funktion des BTRFS-Dateisystems verwendet das Copy-on-Write-Prinzip (Cow). Daher benötigt es nicht viel Speicherplatz und Sie können Schnappschüsse eines Subvolume sofort machen.
Das BTRFS -Dateisystem unterstützt 2 Arten von Schnappschüssen.
In diesem Artikel werden Ihnen angezeigt. Ich werde Ihnen auch zeigen, wie Sie einen beschreibbaren Snapshot aktualisieren und Dateien von einem Snapshot wiederherstellen. Ich werde Ihnen zeigen, wie Sie auch einen Schnappschuss entfernen. Also lasst uns anfangen.
Voraussetzungen
Um die Beispiele dieses Artikels auszuprobieren,
Ich habe eine 20 -GB -Festplatte SDB Auf meiner Ubuntu -Maschine. Ich habe 2 Partitionen erstellt SDB1 Und SDB2 auf dieser Festplatte. Ich werde die Partition verwenden SDB1 In diesem Artikel.
$ sudo lsblk -e7Ihre Festplatte oder SSD hat möglicherweise einen anderen Namen als meine, ebenso wie die Partitionen. Stellen Sie also sicher, dass Sie sie von nun an durch Ihre ersetzen.
Wenn Sie Unterstützung bei der Installation des BTRFS -Dateisystems auf Ubuntu benötigen, überprüfen Sie meinen Artikel Installieren und verwenden Sie BTRFS auf Ubuntu 20.04 LTS.
Wenn Sie Unterstützung bei der Installation des BTRFS -Dateisystems auf Fedora benötigen, überprüfen Sie meinen Artikel Installieren und verwenden Sie BTRFS auf Fedora 33.
Erstellen eines BTRFS -Dateisystems
Um mit BTRFS -Subvolumes zu experimentieren, müssen Sie ein BTRFS -Dateisystem erstellen.
So erstellen Sie ein BTRFS -Dateisystem mit dem Etikett Daten auf der SDB1 Partition, den folgenden Befehl ausführen:
$ sudo mkfs.BTRFS -L -Daten /Dev /SDB1Ein BTRFS -Dateisystem sollte erstellt werden.
Erstellen Sie ein Verzeichnis /Daten mit dem folgenden Befehl:
$ sudo mkdir -v /DatenSo montieren Sie das auf der erstellte BTRFS -Dateisystem SDB1 Partition in der /Daten Verzeichnis, führen Sie den folgenden Befehl aus:
$ sudo montage /dev /sdb1 /DatenDas BTRFS -Dateisystem sollte montiert werden, wie Sie im Screenshot unten sehen können.
$ df -h /DatenVorbereitung des BTRFS -Dateisystems für Schnappschüsse
In BTRFS können Sie nur Schnappschüsse von BTRFS -Subvolumes machen. Das Hauptwurzel eines BTRFS -Dateisystemsystems ist ebenfalls ein Subvolumen. Sie können also die Sicherung des gesamten BTRFS -Dateisystems sowie bestimmte Subvolumes übernehmen.
In diesem Abschnitt wird ein BTRFS -Subvolumen erstellt /Daten/Projekte/Web1 und erstellen Sie die erforderlichen Dateien für die nächsten Abschnitte dieses Artikels unten. Ich werde auch ein Verzeichnis erstellen, in dem Sie Ihre Schnappschüsse behalten können. In den nächsten Abschnitten zeige ich Ihnen, wie Sie Schnappschüsse (schreibbar und schreibgeschützt) machen, einen beschreibbaren Schnappschuss aktualisieren und Dateien aus dem Snapshot wiederherstellen. Also lasst uns anfangen.
Erstellen Sie zunächst ein neues Verzeichnis /Daten/Projekte folgendermaßen:
$ sudo mkdir -v /Daten /ProjekteErstellen Sie ein neues Subvolumen Web1 im /Daten/Projekte Verzeichnis wie folgt:
$ sudo btrfs subvolume create/data/projects/web1Erstellen Sie eine neue Datei Index.html im /Daten/Projekte/Web1 Subvolumen wie folgt:
$ sudo nano/data/projects/web1/index.htmlGeben Sie die folgenden Codes -Zeilen in der ein Index.html Datei.
Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten Index.html Datei.
Erstellen Sie eine neue Datei Stil.CSS im /Daten/Projekte/Web1 Subvolumen wie folgt:
$ sudo nano/data/projects/web1/style.CSSGeben Sie die folgenden Codes -Zeilen in der ein Stil.CSS Datei.
H1Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten Stil.CSS Datei.
Jetzt die /Daten/Projekte/Web1 Subvolume hat das Index.html Und Stil.CSS Datei.
$ ls -lh/Daten/Projekte/Web1Ich möchte alle Schnappschüsse dieses BTRFS -Dateisystems in der /Daten/.Schnappschüsse Verzeichnis.
Erstellen die /Daten/.Schnappschüsse Verzeichnis mit dem folgenden Befehl:
$ sudo mkdir -v /data /.SchnappschüsseSchnappschüsse aus einem Subvolumen machen
Einen Schnappschuss von der machen /Daten/Projekte/Web1 Subvolumen in die /Daten/.Snapshots/Web1-2020-12-25 Verzeichnis (wird automatisch erstellt) Führen Sie den folgenden Befehl aus:
$ sudo btrfs subvolume snapshot/data/projects/web1/data/.Snapshots/Web1-2020-12-25Ein Schnappschuss der /Daten/Projekte/Web1 Verzeichnis sollte auf dem erstellt werden /Daten/.Snapshots/Web1-2020-12-25 Verzeichnis.
Wie Sie im Screenshot unten sehen können, ist ein neues Subvolumen .Snapshots/Web1-2020-12-25 geschaffen. Ein Schnappschuss ist eigentlich ein Subvolumen.
$ sudo btrfs subvolume liste /DatenWeitere Informationen zu dem Snapshot, den Sie in der erstellt haben /Daten/.Snapshots/Web1-2020-12-25 Verzeichnis wie folgt:
$ sudo btrfs subvolume show /daten /.Snapshots/Web1-2020-12-25Wie Sie sehen können, alle Dateien, die sich in der befinden /Daten/Projekte/Web1 Subvolume sind in der /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss.
$ tree -a /DatenWiederherstellen von Dateien aus Schnappschüssen
In diesem Abschnitt werde ich Ihnen zeigen, wie Sie Dateien aus den BTRFS -Snapshots wiederherstellen können.
Zuerst werde ich Ihnen zeigen, wie Sie eine einzige Datei aus dem Snapshot wiederherstellen können.
Öffne das /Daten/Projekte/Web1/Index.html Datei mit dem Nano -Texteditor wie folgt:
$ sudo nano/data/projects/web1/index.htmlNehmen Sie alle gewünschten Änderungen vor.
Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die Datei zu speichern.
Wie Sie sehen können, die Haupt Index.html Datei unterscheidet sich von der Index.html Datei im Snapshot.
$ CAT/Daten/Projekte/Web1/Index.htmlWir haben die Änderungen an der Hauptsache vorgenommen Index.html Die Datei sind unerwünscht und wir möchten die wiederherstellen Index.html Datei aus dem Schnappschuss.
Sie können die wiederherstellen Index.html Datei aus dem Snapshot wie folgt:
$ sudo cp -v /data /.Snapshots/Web1-2020-12-25/Index.HTML/Data/Projects/Web1/Index.htmlWie Sie sehen können, die Index.html Die Datei wird aus dem Snapshot wiederhergestellt.
$ CAT/Daten/Projekte/Web1/Index.htmlLassen Sie uns nun sehen, wie Sie alle Dateien/Verzeichnisse aus dem Snapshot wiederherstellen können.
Entfernen Sie alle Dateien aus dem /Daten/Projekte/Web1 Snapshot wie folgt:
$ sudo rm -rv/data/projects/web1/*Führen Sie den folgenden Befehl aus, um alle Dateien/Verzeichnisse aus dem Snapshot wiederherzustellen:
$ sudo rsync -avz /data /.Snapshots/Web1-2020-12-25//Daten/Projekte/Web1/Wie Sie sehen können, werden die Dateien/Verzeichnisse aus dem Snapshot wiederhergestellt.
$ ls -lh/Daten/Projekte/Web1Lassen Sie uns schließlich sehen, wie Sie Dateien/Verzeichnisse aus dem Snapshot im Spiegelmodus wiederherstellen können. Im Spiegelmodus sind die Dateien/Verzeichnisse des Subvolume wie im Snapshot übereinstimmend. Wenn es im Subvolume Dateien/Verzeichnisse gibt, die im Snapshot nicht verfügbar sind, werden sie entfernt.
Erstellen wir eine neue Datei im Subvolume, um den Dateibaum vom Snapshot zu unterscheiden.
Ein ... kreieren Liesmich.txt Datei in der /Daten/Projekte/Web1 Subvolumen wie folgt:
$ echo "Hello World 5" | sudo tee/data/projects/web1/readme.txtWie Sie sehen können, der Dateibaum der Datei der /Daten/Projekte/Web1 Subvolume unterscheidet sich von der /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss.
$ tree -a /DatenSo restaurieren Sie die Dateien/Verzeichnisse aus dem /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss zum /Daten/Projekte/Web1 Subvolume im Spiegelmodus ausführen, den folgenden Befehl ausführen:
$ sudo rsync -avz -delete /data /.Snapshots/Web1-2020-12-25//Daten/Projekte/Web1/Alle Dateien/Verzeichnisse der /Daten/Projekte/Web1 Subvolume sollte (im Spiegelmodus) aus dem wiederhergestellt werden /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss.
Der Dateibaum der /Daten/Projekte/Web1 Subvolumen und die /Daten/.Snapshots/Web1-2020-12-25 Snapshot sollte der gleiche sein.
Wie Sie sehen können, der Index.HTML -Datei und Stil.Die CSS -Dateiinhalte sind in der gleich /Daten/Projekte/Web1 Subvolumen und die /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss.
Inhalt des Index.html Und Stil.CSS Datei in der /Daten/Projekte/Web1 Subvolumen.
$ CAT/Daten/Projekte/Web1/Index.htmlInhalt des Index.html Und Stil.CSS Datei in der /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss.
$ CAT/Daten/Projekte/Web1/Index.htmlAktualisieren eines Schnappschusss
Standardmäßig macht das BTRFS -Dateisystem beschreibbare Schnappschüsse. Ein BTRFS -Snapshot ist wie ein Subvolumen. Sie können also die Dateien/Verzeichnisse eines beschreibbaren Schnappschusses ändern/aktualisieren.
Lassen Sie uns die aktualisieren Index.html Datei in der /Daten/Projekte/Web1 Subvolumen.
Öffnen Sie zuerst die Index.html Datei aus der /Daten/Projekte/Web1 Subvolumen mit dem Nano Texteditor wie folgt:
$ sudo nano/data/projects/web1/index.htmlNehmen Sie alle gewünschten Änderungen vor. Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten Index.html Datei.
Wie Sie sehen können, der Index.HTML -Datei der /Daten/Projekte/Web1 Subvolume unterscheidet sich von der /Daten/.Snapshots/Web1-2020-12-25 Schnappschuss.
$ CAT/Daten/Projekte/Web1/Index.htmlSie wollen die behalten Index.html Datei der /Daten/Projekte/Web1 Subvolumen.
So aktualisieren Sie die Index.html Datei in der /Daten/.Snapshots/Web1-2020-12-25 Snapshot und den folgenden Befehl ausführen:
$ sudo cp -v/data/projects/web1/index.HTML /Daten /.Snapshots/Web1-2020-12-25/Index.htmlWie Sie sehen können, die Index.html Datei der /Daten/.Snapshots/Web1-2020-12-25 Snapshot wird aktualisiert.
Das Aktualisieren eines Snapshots ist so einfach wie das Kopieren neuer Dateien in den Snapshot.
Schreibschüsse eines Subvolume schreibgeschützt
Manchmal möchten Sie nicht, dass die Schnappschüsse, die Sie in irgendeiner Weise aktualisiert haben, in irgendeiner Weise aktualisiert werden. In diesem Fall können Sie schreibgeschützte Schnappschüsse erstellen.
Zum Beispiel einen schreibgeschützten Schnappschuss erstellen /Daten/.Snapshots/Web1-2020-12-26 des /Daten/Projekte/Web1 Subvolume, führen Sie den folgenden Befehl aus:
$ sudo btrfs subvolume snapshot -r/data/projects/web1/data/.Snapshots/Web1-2020-12-26Wie Sie sehen können, ein neues Subvolumen .Snapshots/Web1-2020-12-26 geschaffen.
$ sudo btrfs subvolume liste /DatenWie Sie sehen können, der Schnappschuss /Daten/.Snapshots/Web1-2020-12-26 ist schreibgeschützt.
$ sudo btrfs subvolume show /daten /.Snapshots/Web1-2020-12-26Lassen Sie uns die aktualisieren Index.html Datei aus der /Daten/Projekte/Web1 Subvolumen.
Um das zu tun, öffnen Sie die Index.html Datei aus der /Daten/Projekte/Web1 Subvolumen mit dem Nano Texteditor wie folgt:
$ sudo nano/data/projects/web1/index.htmlNehmen Sie alle gewünschten Änderungen vor. Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und Um die Änderungen zu speichern.
Wie Sie sehen können, die Index.html im /Daten/Projekte/Web1 Subvolume unterscheidet sich von der /Daten/.Snapshots/Web1-2020-12-26 Schnappschuss.
$ CAT/Daten/Projekte/Web1/Index.htmlVersuchen wir, die zu aktualisieren Index.html Datei in der /Daten/.Snapshots/Web1-2020-12-26 Schnappschuss.
$ sudo cp -v/data/projects/web1/index.HTML /Daten /.Snapshots/Web1-2020-12-26/Index.htmlWie Sie sehen können, können Sie die nicht aktualisieren Index.html Datei der /Daten/.Snapshots/Web1-2020-12-26 Snapshot, weil der Schnappschuss schreibgeschützt ist.
Einen Schnappschuss entfernen
Ich habe dir früher gesagt, dass ein BTRFS -Snapshot wie ein Subvolumen ist. Sie können also einen BTRFS -Snapshot entfernen, genau wie Sie ein BTRFS -Subvolume entfernen. Gleicher Befehl.
So ist der Dateibaum des BTRFS -Dateisystems, der auf dem montiert ist /Daten Das Verzeichnis sieht im Moment aus wie.
$ tree -a /DatenLassen Sie uns die entfernen .Snapshots/Web1-2020-12-25 Schnappschuss.
$ sudo btrfs subvolume liste /DatenUm das zu entfernen /Daten/.Snapshots/Web1-2020-12-25 Snapshot und den folgenden Befehl ausführen:
$ sudo btrfs subvolume löschen /daten /.Snapshots/Web1-2020-12-25Wie Sie sehen können, der Schnappschuss .Snapshots/Web1-2020-12-25 ist nicht mehr.
$ sudo btrfs subvolume liste /DatenWie Sie sehen können, sind die Dateien/Verzeichnisse der /Daten/.Snapshots/Web1-2020-12-25 Snapshot wird ebenfalls entfernt.
$ tree -a /DatenAbschluss
Dieser Artikel hat Ihnen gezeigt. Ich habe Ihnen auch gezeigt, wie Sie einen beschreibbaren Schnappschuss aktualisieren und Dateien von einem Snapshot wiederherstellen können. Ich habe Ihnen gezeigt, wie Sie auch einen BTRFS -Snapshot entfernen können. Dieser Artikel sollte Ihnen helfen, mit der BTRFS -Snapshot -Funktion zu beginnen.