ubuntuusers.de

Beim mounten eines btrfs-Dateisystem automatisch einen snapshot anlegen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

ostcar Team-Icon

Ehemalige
Avatar von ostcar

Anmeldungsdatum:
27. Juli 2006

Beiträge: 2748

Wohnort: Leipzig

Angeregt durch dieses Topic stellt sich mir die Frage, ob es möglich ist bei jedem Mount-Vorgang eines btrfs-Dateisystems zuvor einen Smapshot anzulegen.

Hintergrund ist folgender: Meiner ganzen Familie habe ich ein Backup-Skript basierend auf rsync eingerichtet. Sie stecken eine externe Festplatte an, diese wird mittels udisks2 gemountet. Daraufhin starten sie manuell das Backup-Skript, welches ihr home-Verzeichnis auf die externe Festplatte sichert.

Falls sich meine Familie eine Schadsoftware wie Locky einfangen würde, könnte diese die externe Festplatte erkennen und auch das Backup verschlüsseln und zwar ohne root-Rechte.

Abhilfe würde schaffen, wenn vor dem Einbinden des externen Laufwerks ein Read-Only-Snapshot angelegt werden würde. Um die alten Snapshots zu entfernen wären root-Rechte erforderlich, welche eine weitere Hürde für die Ransomware darstellt.

Ich selbst habe bisher keine Option gefunden, um einen Snapshot automatisch anzulegen. Weder durch btrfs selbst, noch mittels udisks2. Habt ihr eine Idee?

Moderiert von redknight:

As requested 😉

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11266

Wohnort: München

Ich denke man sollte in dem Fall vermeiden, dass udisks da überhaupt seine Finger drin hat.

Man könnte z.B. für die Backupplatte einen Eintrag in der fstab erstellen, damit sie von udisks ignoriert wird. Dann kann man mit udev auf das Einstecken der Platte reagieren und ein Skript ausführen lassen, das den Snapshot erstellt, die Platte mounten und ggf. noch eine Aufforderung an den User schickt das Backup-Skript auszuführen (oder das gleich mit automatisieren und die Platte am Ende automatisch wieder aushängen lassen).

Wenn man Systemd als Init-System hat, kann man das Herunterfahren in der Zeitspanne mittels systemd-inhibit blockieren, indem man dem Befehl das Backup-Skript als Argument übergibt.

ostcar Team-Icon

Ehemalige
(Themenstarter)
Avatar von ostcar

Anmeldungsdatum:
27. Juli 2006

Beiträge: 2748

Wohnort: Leipzig

Das klingt nach einem guten Ansatz.

Dass das Backup automatisch angestoßen wird klingt zwar auf den ersten Blick verlockend. Es hat jedoch den Nachteil, dass der Nutzer nicht ohne weiteres sieht, wann das Backup fertig ist und wann daher die Festplatte wieder ausgesteckt werden kann.

Soweit das udev-Skript nur den Snapshot anlegt und die Festplatte mountet, müsste sie danach "wie gewohnt" in Nautilus erscheinen. Für meine Familie würde sich daher nichts ändern.

Das Skript könnte da in etwa so aussehen (enthält noch viele Fehler, z. B. wenn es zweimal am selben Tag ausgeführt wird):

mkdir /run/backup/
chmod o-rwx /run/backup
mkdir /run/backup/inner
mount /dev/sdb1 /run/backup/inner
btrfs subvolume snapshot -r /run/backup/inner /run/backup/inner/$(date +%y%m%d)
umount /dev/sdb1

Wenn ich mittels udev-Regel UDISKS_AUTO auf 0 setzte, wird die Festplatte zwar nicht automatisch gemountet, kann jedoch nachdem das Skript ausgeführt wurde durch den Nutzer in Nautilus manuell gemountet werden.

Ich glaube das ist genau was ich möchte. Vielen Dank!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11266

Wohnort: München

ostcar schrieb:

Dass das Backup automatisch angestoßen wird klingt zwar auf den ersten Blick verlockend. Es hat jedoch den Nachteil, dass der Nutzer nicht ohne weiteres sieht, wann das Backup fertig ist und wann daher die Festplatte wieder ausgesteckt werden kann.

Man könnte ihm z.B. eine Nachricht schicken (vgl. Benachrichtigungsdienst):

DISPLAY=:0 /usr/bin/notify-send "Backup erstellt, bitte Platte abstecken"

ostcar Team-Icon

Ehemalige
(Themenstarter)
Avatar von ostcar

Anmeldungsdatum:
27. Juli 2006

Beiträge: 2748

Wohnort: Leipzig

seahawk1986 schrieb:

ostcar schrieb:

Dass das Backup automatisch angestoßen wird klingt zwar auf den ersten Blick verlockend. Es hat jedoch den Nachteil, dass der Nutzer nicht ohne weiteres sieht, wann das Backup fertig ist und wann daher die Festplatte wieder ausgesteckt werden kann.

Man könnte ihm z.B. eine Nachricht schicken (vgl. Benachrichtigungsdienst):

DISPLAY=:0 /usr/bin/notify-send "Backup erstellt, bitte Platte abstecken"

Das ist natürlich auch eine Idee. Wobei ich notify-send folgendermaßen aufrufen muss, damit es von root aus gestartet werden kann:

sudo -u \#1000 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DISPLAY=:0 notify-send "Test Nachricht"
Antworten |