GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie Dateisystem-Snapshots mit Snapper Command unter Linux

Snapper ist ein Linux-Befehlszeilentool zum Erstellen und Verwalten von Snapshots Ihrer Dateisysteme.

Mit dem Snapper-Befehl können Sie schreibgeschützte Snapshots erstellen. Sie können diese Snapshots verwenden, um bestimmte Dateien oder alle Dateien während einer Notfallsituation wiederherzustellen.

Sie können damit auch mehrere Snapshots vergleichen und zu einem bestimmten alten Snapshot zurückkehren.

Snapper wird nur auf btrfs (B-Tree File Systems Copy-on-Write), ext4-Dateisystemen und Thin- bereitgestellte LVM-basierte logische Volumes.

Wenn ein Snapshot mit dem Snapper-Befehl erstellt wird, befindet er sich im selben Dateisystem, sodass genügend freier Speicherplatz verfügbar sein sollte und eine regelmäßige FS-Bereinigung erforderlich sein kann.

Wenn Sie daran interessiert sind, einen rsync-basierten Snapshot zu verwenden, sollten Sie sich auch das zuvor besprochene rsnapshot-Dienstprogramm ansehen.

Installieren Sie das Snapper-Dienstprogramm

Sie können entweder die Snapper-Binärdatei für verschiedene Distributionen herunterladen und installieren oder den Quellcode herunterladen und selbst kompilieren.

Beispielsweise können Sie die Snapper-RPMs aus dem SUSE SLES11 SP2-Repository herunterladen.

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

Das Folgende sind Abhängigkeiten für das Snapper-Paket. Wenn Sie yum oder andere Paketverwaltungstools verwenden, werden alle Abhängigkeiten automatisch installiert.

  • 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

Btrfs-Dateisystem erstellen

Da btrfs ein unterstütztes Dateisystem von SLES11 SP2 ist, können Sie btrfs verwenden, um Ihr logisches Volume zu erstellen, oder btrfs-convert-Befehle verwenden, um Ihr vorhandenes ext3-Dateisystem in btrfs zu konvertieren.

Führen Sie die folgenden Befehle aus, um ein neues btrfs-Dateisystem zu erstellen. Wenn Sie das btrfs-Programm nicht installiert haben, verwenden Sie zypper install btrfsprogs, um es zu installieren.

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

# mkfs.btrfs /dev/vglocal/snapvol

# mount /dev/vglocal/snapvol /snapmount

Dünn bereitgestelltes LVM erstellen

Wenn Sie einen Thin-bereitgestellten LVM erstellen möchten, verwenden Sie den lvcreate-Befehl, um Folgendes zu tun.

# 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

Snapper-Konfigurationsdatei erstellen

Um die Konfigurationsdatei mit dem Snapper-Befehl zu erstellen, verwenden Sie den „snapper -c“-Befehl wie unten gezeigt.

Syntax auf btrfs:

snapper –c  create-config

Auf btrfs geben Sie einfach den Namen der Konfigurationsdatei und den Einhängepunkt wie unten gezeigt an.

snapper -c snapconfig create-config /snapmount

Syntax auf Thin-bereitgestelltem LVM:

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

Auf Thin-bereitgestelltem LVM sollten Sie neben dem Namen der Konfigurationsdatei und dem Einhängepunkt auch den Dateisystemtyp mit –fstype angeben, wie unten gezeigt:

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

Snapper-Konfigurationsdateien anzeigen und löschen

Nachdem Sie die Konfigurationsdateien erstellt haben, sehen Sie das Verzeichnis .snapshots, das im Verzeichnis /snapmount erstellt wurde.

Sie werden auch feststellen, dass die Konfigurationsdatei unter /etc/snapper/configs/snapconfig erstellt wird. Informationen über alle Subvolumes, die für Snapshots konfiguriert sind, werden in dieser Datei gespeichert.

Die zur Fehlerbehebung verwendete Protokolldatei befindet sich unter /var/log/snapper.log

Um alle Konfigurationsdateien anzuzeigen, führen Sie den folgenden Snapper-Befehl aus:

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

Um eine Konfigurationsdatei zu löschen, verwenden Sie die folgende Syntax:

snapper –c  delete-config

Beispielsweise löscht der folgende Befehl die Konfigurationsdatei snapconfig im Verzeichnis /etc/snapper/configs.

# snapper -c snapconfig delete-config

Erstellen Sie einen Snapshot mit Snapper

Um einen Snapshot des Dateisystems zu erstellen, verwenden Sie die folgende Snapper-Befehlssyntax:

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

Folgendes wird beispielsweise einen neuen Snapshot erstellen.

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

Nachdem Sie einen Snapshot erstellt haben, sehen Sie sich die Snapshot-Informationen wie unten gezeigt an:

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

Zweiten Snapshot zum Vergleich erstellen

Zu Testzwecken habe ich die testfile1 im /snapmount-Verzeichnis aufgehoben.

# 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

Lassen Sie uns nach der obigen Änderung einen weiteren Schnappschuss machen.

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

Wie Sie unten sehen, haben wir jetzt zwei Schnappschüsse.

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

Vergleiche 1. und 2. Schnappschuss

Lassen Sie uns nun beide Schnappschüsse vergleichen.

Der folgende Befehl vergleicht den Schnappschuss Nr. 1 mit dem Schnappschuss Nr. 2.

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

In der Ausgabe:

  • „c“ in der Ausgabe zeigt an, dass der Inhalt geändert wurde.
  • „+“ zeigt an, dass dem Verzeichnis neue Dateien hinzugefügt werden.
  • „-“ zeigt an, dass Dateien gelöscht wurden.

Machen Sie mehrere Snapshots und vergleichen Sie die Ausgabe

Ich habe mehrere Test-Snapshots mit wenigen hinzugefügten Dateien, wenigen entfernten Dateien und wenigen Inhaltsänderungen erstellt.

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

Die folgende Ausgabe listet die Dateien auf, die hinzugefügt, geändert und gelöscht wurden.

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

Sehen Sie sich den Unterschied zwischen Snapshots an

Um nun den spezifischen Inhaltsunterschied in der Datei zwischen Schnappschuss Nr. 1 und Schnappschuss Nr. 4 anzuzeigen, können Sie den folgenden Befehl verwenden.

# 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

Die Ausgabe erfolgt im typischen Format einer diff-Befehlsausgabe.

Eine bestimmte Datei aus einem Snapshot wiederherstellen

Sobald Sie die Unterschiede zwischen Snapshots gesehen haben und wissen, welche bestimmte Datei Sie wiederherstellen möchten, können Sie sie wie hier beschrieben wiederherstellen.

Vor der Wiederherstellung haben wir die Testdatei2 nicht in dieser 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

Um beispielsweise eine einzelne Datei aus dem Snapshot wiederherzustellen, d. h. /snapmount/testfile2 (die Datei, die gelöscht wurde) aus Snapshot#1, verwenden Sie den folgenden Befehl:

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

Nach der Wiederherstellung sehen wir die Testdatei2 in der 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

Alle Dateien aus einem Snapshot wiederherstellen

Gehen Sie wie folgt vor, um alle Dateien aus dem Snapshot wiederherzustellen:

Lassen Sie uns nun alle Dateien aus einem bestimmten Snapshot wiederherstellen. Beachten Sie, wie dies einige Dateien löscht, eine Datei erstellt und eine Datei ändert.

# 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. So erstellen Sie ein Dateisystem auf einer Linux-Partition oder einem logischen Volume

  2. So erstellen Sie ein Skript eines Linux-Befehls

  3. So erstellen Sie einen Linux-Benutzer mit Ansible

  4. So starten Sie Linux über die Befehlszeile neu

  5. So erstellen Sie Sparse-Dateien in Linux mit dem Befehl „dd“.

So erstellen Sie einen Alias ​​unter Linux

So erstellen Sie eine Datei in Linux mit Terminal

So sichern Sie das Linux-Dateisystem mit dem Dump-Befehl

So erstellen Sie eine Datei in Ubuntu Linux mit Befehl und GUI

So erstellen Sie eine Gruppe unter Linux – Befehl groupadd

So erstellen Sie eine Partition mit dem Befehl „parted“