Verwaltung von Btrfs-Snapshots

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Was ist ein Snapshot

  • Ein Snapshot ist eine Momentaufnahme eines Btrfs-Dateisystems oder eines Subvolumes.

Ein Snapshot erstellen

  • btrfs subvolume create /mnt/mybtrfs/subvol1
  • btrfs subvolume snapshot /mnt/mybtrfs/subvol1 /mnt/mybtrfs/snapshot1

Anzeigen von Snapshots

  • Sie können Snapshots auf die gleiche Weise wie Subvolumes anzeigen und löschen.
  • sudo btrfs subvolume list /mnt/mybtrfs
ID 256 gen 8 top level 5 path subvol1
ID 257 gen 9 top level 5 path snapshot1
  • Es ist auch möglich, einen "ro" (read-only) Snapshot zu erstellen, der nicht verändert werden kann.
  • Verwenden Sie dazu den -r Schalter:

Read only snapshot

  • btrfs subvolume snapshot -r /mnt/mybtrfs /mnt/mybtrfs/readonly_snapshot1
Es ist wichtig zu beachten, dass Snapshots selbst nur sehr wenig Speicherplatz benötigen, da sie nur die Änderungen am Dateisystem aufzeichnen.
  • Wenn Sie jedoch Dateien im ursprünglichen Dateisystem oder Subvolume ändern oder löschen, kann der Snapshot mehr Speicherplatz benötigen.

Vorbereitung

  • Zunächst sollten Sie sicherstellen, dass Sie über einen Snapshot verfügen, den Sie zurückspielen können.
  • sudo btrfs subvolume list /mnt/mybtrfs

Gesamter Snapshot zurück spielen

  • Angenommen, Sie haben einen Snapshot,vom subvol1, namens snapshot1, den Sie zurückspielen möchten.
  • Das erste, was Sie tun müssen, ist, das Original-Subvolume oder Dateisystem zu umbenennen oder zu verschieben. *
  • Dies ist notwendig, weil Btrfs nicht erlaubt, einen Snapshot in ein Verzeichnis zurückzuspielen, das bereits Daten
  • sudo mv /mnt/mybtrfs/subvol1 /mnt/mybtrfs/subvol1.old
Jetzt können Sie den Snapshot zurückspielen.
  • sudo btrfs subvolume snapshot /mnt/mybtrfs/snapshot1 /mnt/mybtrfs/subvol1
Dieser Befehl erstellt einen "schreibbaren" Snapshot von snapshot1 und platziert ihn als /mnt/mybtrfs/subvol1.
  • Im Wesentlichen haben Sie jetzt das Dateisystem oder Subvolume auf den Zustand zum Zeitpunkt der Erstellung von snapshot1 zurückgesetzt.

Wiederherstellen einzelner Dateien aus einem Btrfs-Snapshot

  • Stellen Sie sicher, dass Sie einen Snapshot haben, aus dem Sie Dateien wiederherstellen können.
  • sudo btrfs subvolume list /mnt/mybtrfs
  • Navigieren Sie zum Snapshot-Verzeichnis.
  • Die Dateistruktur Ihres ursprünglichen Dateisystems oder Subvolumes wird widergespiegelt.
  • cd /mnt/mybtrfs/snapshot1
  • Suchen Sie die Datei, die Sie wiederherstellen möchten.
  • Angenommen, die Datei heißt file.txt und befindet sich im Stammverzeichnis des Snapshots.
  • ls -l file.txt

Datei an gewünschte Stelle kopieren

  • sudo rsync -avzx file.txt /mnt/mybtrfs/subvol1

Erstellen Sie ein Shell-Skript

  • sudo nano /usr/local/bin/btrfs_snapshot.sh
#!/bin/bash
SNAPSHOT_NAME=/mnt/mybtrfs/snapshot_subvol1_$(date +%Y.%m.%d_%H:%M:%S)
btrfs subvolume snapshot /mnt/mybtrfs/subvol1 $SNAPSHOT_NAME
  • sudo chmod +x /usr/local/bin/btrfs_snapshot.sh

Crontab eintragen

  • sudo crontab -e
0 2 * * * /usr/local/bin/btrfs_snapshot.sh