udev oder systemd.path

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

udev oder systemd.path

Beitrag von scientific » 11.07.2016 00:33:48

Hi Leute!

Ich werde irgendwie nicht schlau.
Gegeben ist einerseits ein Skript, welches mir einen Snapshot von einem btrfs auf einer lokalen Platte macht, und dieses - so angeschlossen - auf eine externe Festplatte schiebt.
Beim Einstecken der externen Festplatte wird das Backupskript angeworfen ein Snapshot automatisch erstellt (lokal) und dieser im Anschluss auf die externe Platte geschoben.
Außerdem werden regelmäßig solche Snapshots erzeugt, und die "überzähligen" gelöscht. Sowohl lokal als auch auf der externen Platte.

Das funktioniert wunderbar.

Jetzt möchte ich die ganze Funktionalität etwas ausbauen und eine GUI dazu bauen.
Diese GUI soll eine Extension für Gnome3 werden.

Ich möchte hier beim ersten Mal einstecken einer externen Platte eine Abfrage, ob diese Platte als Backup-Store verwendet werden soll, und wenn dies mit ja beantwortet wird, soll die Extension die entsprechenden Schritte setzen:
  • Die gesamte Platte (oder eine gewählte Partition) mit btrfs formatieren
  • die UUID der Platte in einem Config-File speichern
  • einen Mountpoint einrichten
  • diesen Mountpoint als automountpoint einrichten
  • eine udev-Regel erstellen, oder wenn es funktioniert, ein systemd.path-File aktivieren
  • die service-Files der Intervalle lt. Auswahl aktiveren.
Ich habe hier bereits ein instanzierendes systemd-File, welches ich mit

Code: Alles auswählen

systemd enable mkbackup@hourly.service
aktivere. Dann hängt sich dieses Service an ein hourly-Timer-File dran und der Snapshot wird jede Stunde erstellt. Klappt gut.

Ich bin aber mit den path-Files noch nicht so firm.
Deshalb hab ich derzeit eine UDEV-Regel, welche mir beim Einstecken der Platte ein target aktiviert (und beim ausstecken deaktiviert), welches mir dann die externe Platte an einen definierten Mountpoint mountet. Funktioniert gut.

Aber ich muss in die UDEV-Rule die UUID der externen Festplatte manuell eintragen, und ebenso in das systemd-mount-File.

Ich habe bisher noch keine Möglichkeit gefunden, in einer UDEV-Rule einen Wert aus einem Konfig-File einzulesen.

Wie stelle ich es an, dass z.B. ein instantiierendes path-File von systemd von einem Skript enabled wird, und dieses dann in Folge einen (Auto)mount veranlasst, welches nur auf diese UUID der Partition beschränkt ist?
Ich stells mir so vor, dass ich in einem Skript die UUID der PArtition auslesen lasse, und dann im Skript lediglich

Code: Alles auswählen

systemctl enable mkbackup@$UUID.path
ausführe.

Hat sich hierzu schon einmal jemand Gedanken gemacht, die er ev. mit mir teilen möchte?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: udev oder systemd.path

Beitrag von rendegast » 11.07.2016 13:24:06

Du könntest für Deine backup-Platten eine einzige UUID / LABEL benutzen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: udev oder systemd.path

Beitrag von scientific » 11.07.2016 15:14:08

rendegast hat geschrieben:Du könntest für Deine backup-Platten eine einzige UUID / LABEL benutzen.
Das ist natürlich auch ein Weg. Ich werde ihn im Hintergrund behalten.
Das Problem bei der Geschichte ist, wenn ich eine externe HD irrtümlich (oder auch willentlich) an einem anderen Rechner mit dem selben Backup-System anstecke (um z.B. eine Datei von dort zu holen), springt das Backup-Service an und müllt mir diese Platte voll.

Also doch besser explizit UUIDs für eine Backup-Platte angeben können.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten